From 9fde815d8a05736b46f8736c81832f1154eec83c Mon Sep 17 00:00:00 2001 From: SavagePastaMan <69145546+SavagePastaMan@users.noreply.github.com> Date: Thu, 29 Sep 2022 15:59:01 -0400 Subject: [PATCH 1/8] :wrench: Don't lint `./migrations/versions/ --- .flake8 | 1 + 1 file changed, 1 insertion(+) diff --git a/.flake8 b/.flake8 index 8332de3..b5eaf3d 100644 --- a/.flake8 +++ b/.flake8 @@ -1,3 +1,4 @@ [flake8] max-line-length = 120 extend-ignore = E203 +exclude = ./migrations/versions/, From 58a548f8a03256b19f10fd51b7eb26207104e6a8 Mon Sep 17 00:00:00 2001 From: SavagePastaMan <69145546+SavagePastaMan@users.noreply.github.com> Date: Thu, 29 Sep 2022 20:42:06 -0400 Subject: [PATCH 2/8] :rotating_light: Fix linting errors --- classquiz/helpers/hashcash.py | 6 +++--- classquiz/routers/quiz.py | 2 +- classquiz/socket_server/__init__.py | 4 ++-- classquiz/tests/__init__.py | 25 ++++++++++++++++++++++++- migrations/env.py | 2 -- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/classquiz/helpers/hashcash.py b/classquiz/helpers/hashcash.py index b589abc..06def31 100644 --- a/classquiz/helpers/hashcash.py +++ b/classquiz/helpers/hashcash.py @@ -81,10 +81,10 @@ def mint(resource, bits=20, now=None, ext="", saltchars=8, stamp_seconds=False): return challenge + _mint(challenge, bits) -def _salt(l): - "Return a random string of length 'l'" +def _salt(length): + "Return a random string of length 'length'" alphabet = ascii_letters + "+/=" - return "".join([choice(alphabet) for _ in [None] * l]) + return "".join([choice(alphabet) for _ in [None] * length]) def _mint(challenge, bits): diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index 0253e35..1d3c48f 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -169,7 +169,7 @@ async def update_quiz(quiz_id: str, quiz_input: QuizInput, user: User = Depends( quiz_id = uuid.UUID(quiz_id) except ValueError: raise HTTPException(status_code=400, detail="badly formed quiz id") - ## Check Cover-Image + # Check Cover-Image print(quiz_input.cover_image) if quiz_input.cover_image == "": diff --git a/classquiz/socket_server/__init__.py b/classquiz/socket_server/__init__.py index 802a44a..a253f62 100644 --- a/classquiz/socket_server/__init__.py +++ b/classquiz/socket_server/__init__.py @@ -11,9 +11,9 @@ import socketio from cryptography.fernet import Fernet from classquiz.config import redis, settings -from classquiz.db.models import PlayGame, QuizQuestionType, GameSession, GamePlayer, RangeQuizAnswer, QuizQuestion +from classquiz.db.models import PlayGame, QuizQuestionType, GameSession, GamePlayer, QuizQuestion from pydantic import BaseModel, ValidationError, validator -from datetime import timedelta, datetime +from datetime import datetime sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins=[]) settings = settings() diff --git a/classquiz/tests/__init__.py b/classquiz/tests/__init__.py index ed7190b..0729c0d 100644 --- a/classquiz/tests/__init__.py +++ b/classquiz/tests/__init__.py @@ -57,7 +57,30 @@ example_quiz = { test_user_email = "sth@byom.de" test_user_password = "test" -# mock_test_results = {'0': [{'username': 'Player 1', 'answer': 'Byte, Bit, KB, MB, GB, TB', 'right': False}, {'username': 'Player 2', 'answer': 'Byte, Bit, KB, MB, GB, TB', 'right': False}, {'username': 'Player 3', 'answer': 'Bit, Byte, KB, MB, GB, TB', 'right': True}], '1': [{'username': 'Player 3', 'answer': 'CPU', 'right': True}, {'username': 'Player 2', 'answer': 'CPU', 'right': True}, {'username': 'Player 1', 'answer': 'CPU', 'right': True}], '2': [{'username': 'Player 1', 'answer': 'Peripheriegeräte', 'right': True}, {'username': 'Player 2', 'answer': 'Speichergeräte', 'right': False}, {'username': 'Player 3', 'answer': 'Kommunikationsgeräte', 'right': False}], '3': [{'username': 'Player 1', 'answer': 'die Taktfrequenz der CPU', 'right': True}, {'username': 'Player 2', 'answer': 'die Taktfrequenz der CPU', 'right': True}, {'username': 'Player 3', 'answer': 'die Taktfrequenz der CPU', 'right': True}], '4': [{'username': 'Player 3', 'answer': 'Drucker', 'right': True}, {'username': 'Player 2', 'answer': 'Drucker', 'right': True}, {'username': 'Player 1', 'answer': 'Tabellenkalkulation', 'right': False}], '5': [{'username': 'Player 1', 'answer': 'CPU (Central Processing Unit)', 'right': False}, {'username': 'Player 2', 'answer': 'RAM (Random Access Memory)', 'right': True}, {'username': 'Player 3', 'answer': 'RAM (Random Access Memory)', 'right': True}], '6': [{'username': 'Player 3', 'answer': 'RAM', 'right': True}, {'username': 'Player 2', 'answer': 'ROM', 'right': False}, {'username': 'Player 1', 'answer': 'RAM', 'right': True}], '7': [{'username': 'Player 1', 'answer': '1 TB (Terabyte)', 'right': True}, {'username': 'Player 2', 'answer': '500 KB (Kilobyte)', 'right': False}, {'username': 'Player 3', 'answer': '500 TB (Terabyte)', 'right': False}], '8': [{'username': 'Player 3', 'answer': 'Tabellenkalkulationsprogramm', 'right': True}, {'username': 'Player 2', 'answer': 'Tabellenkalkulationsprogramm', 'right': True}, {'username': 'Player 1', 'answer': 'Linux', 'right': False}], '9': [{'username': 'Player 1', 'answer': 'Anwendungsprogramme', 'right': True}, {'username': 'Player 2', 'answer': 'Lernprogramme', 'right': False}, {'username': 'Player 3', 'answer': 'Anwendungsprogramme', 'right': True}]} +# mock_test_results = {'0': [{'username': 'Player 1', 'answer': 'Byte, Bit, KB, MB, GB, TB', 'right': False}, +# {'username': 'Player 2', 'answer': 'Byte, Bit, KB, MB, GB, TB', 'right': False}, {'username': 'Player 3', +# 'answer': 'Bit, Byte, KB, MB, GB, TB', 'right': True}], '1': [{'username': 'Player 3', 'answer': 'CPU', +# 'right': True}, {'username': 'Player 2', 'answer': 'CPU', 'right': True}, {'username': 'Player 1', +# 'answer': 'CPU', 'right': True}], '2': [{'username': 'Player 1', 'answer': 'Peripheriegeräte', +# 'right': True}, {'username': 'Player 2', 'answer': 'Speichergeräte', 'right': False}, +# {'username': 'Player 3', 'answer': 'Kommunikationsgeräte', 'right': False}], '3': [{'username': 'Player 1', +# 'answer': 'die Taktfrequenz der CPU', 'right': True}, {'username': 'Player 2', +# 'answer': 'die Taktfrequenz der CPU', 'right': True}, {'username': 'Player 3', +# 'answer': 'die Taktfrequenz der CPU', 'right': True}], '4': [{'username': 'Player 3', 'answer': 'Drucker', +# 'right': True}, {'username': 'Player 2', 'answer': 'Drucker', 'right': True}, {'username': 'Player 1', +# 'answer': 'Tabellenkalkulation', 'right': False}], '5': [{'username': 'Player 1', +# 'answer':'CPU (Central Processing Unit)', 'right': False}, {'username': 'Player 2', +# 'answer': 'RAM (Random Access Memory)', 'right': True}, {'username': 'Player 3', +# 'answer': 'RAM (Random Access Memory)', 'right': True}], '6': [{'username': 'Player 3', 'answer': 'RAM', +# 'right': True}, {'username': 'Player 2', 'answer': 'ROM', 'right': False}, {'username': 'Player 1', +# 'answer': 'RAM', 'right': True}], '7': [{'username': 'Player 1', 'answer': '1 TB (Terabyte)', +# 'right': True}, {'username': 'Player 2', 'answer': '500 KB (Kilobyte)', 'right': False}, +# {'username': 'Player 3', 'answer': '500 TB (Terabyte)', 'right': False}], '8': [{'username': 'Player 3', +# 'answer': 'Tabellenkalkulationsprogramm', 'right': True}, {'username': 'Player 2', +# 'answer': 'Tabellenkalkulationsprogramm', 'right': True}, {'username': 'Player 1', 'answer': 'Linux', +# 'right': False}], '9': [{'username': 'Player 1', 'answer': 'Anwendungsprogramme', 'right': True}, +# {'username': 'Player 2', 'answer': 'Lernprogramme', 'right': False}, {'username': 'Player 3', +# 'answer': 'Anwendungsprogramme', 'right': True}]} @pytest.fixture(scope="module") diff --git a/migrations/env.py b/migrations/env.py index 1c43a7a..8a1f2a8 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -6,8 +6,6 @@ from logging.config import fileConfig from classquiz.db.models import metadata from classquiz.config import settings from sqlalchemy import create_engine -from sqlalchemy.ext.asyncio import async_engine_from_config -import asyncio from alembic import context From 20c89112149c83f20e90e7e0ec931afc85c6ffda Mon Sep 17 00:00:00 2001 From: Diganta Kr Banik Date: Sat, 1 Oct 2022 01:17:39 +0530 Subject: [PATCH 3/8] removed scroll bar for large screens and customised it in the why class quiz --- frontend/src/app.css | 21 +++++++++++++++++++++ frontend/src/routes/+page.svelte | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/frontend/src/app.css b/frontend/src/app.css index 4e0de9d..cd90184 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -32,3 +32,24 @@ @apply px-4 py-2 leading-5 text-white transition-colors duration-200 transform bg-gray-700 rounded text-center hover:bg-gray-600 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50; } } + +#why-classquiz::-webkit-scrollbar { + height: 0.8rem; + margin-bottom: 5rem; +} + +#why-classquiz::-webkit-scrollbar-track { + box-shadow: inset 0 0 10px 10px transparent; + border: solid 3px transparent; +} + +#why-classquiz::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 10px 10px #374151; + border: solid 3px transparent; + border-radius: 15px; +} + +#why-classquiz::-webkit-scrollbar-thumb:hover { + box-shadow: inset 0 0 10px 10px #555; + border: solid 3px transparent; +} diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 30028eb..bdd8214 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -490,7 +490,8 @@
{#each classquiz_reasons as reason, index}
Date: Fri, 30 Sep 2022 23:59:37 -0400 Subject: [PATCH 4/8] :construction_worker: Add flake8 to precommit --- .pre-commit-config.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f242a9e..c5280f7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,3 +22,10 @@ repos: additional_dependencies: - "prettier-plugin-svelte@latest" - "prettier@latest" + - repo: https://github.com/pycqa/flake8 + rev: 5.0.4 + hooks: + - id: flake8 + # flake8 is passed in all tracked python files + # so --exclude in .flake8 does not work + exclude: ^migrations/versions/ From 36b3072d64c6aba7f1e8fc31c1d9a6c5efc97b91 Mon Sep 17 00:00:00 2001 From: Diganta Kr Banik Date: Sat, 1 Oct 2022 22:22:19 +0530 Subject: [PATCH 5/8] changed id to class --- frontend/src/app.css | 8 ++++---- frontend/src/routes/+page.svelte | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/frontend/src/app.css b/frontend/src/app.css index cd90184..24c1c68 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -33,23 +33,23 @@ } } -#why-classquiz::-webkit-scrollbar { +.why-classquiz::-webkit-scrollbar { height: 0.8rem; margin-bottom: 5rem; } -#why-classquiz::-webkit-scrollbar-track { +.why-classquiz::-webkit-scrollbar-track { box-shadow: inset 0 0 10px 10px transparent; border: solid 3px transparent; } -#why-classquiz::-webkit-scrollbar-thumb { +.why-classquiz::-webkit-scrollbar-thumb { box-shadow: inset 0 0 10px 10px #374151; border: solid 3px transparent; border-radius: 15px; } -#why-classquiz::-webkit-scrollbar-thumb:hover { +.why-classquiz::-webkit-scrollbar-thumb:hover { box-shadow: inset 0 0 10px 10px #555; border: solid 3px transparent; } diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index bdd8214..089f0b6 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -490,8 +490,7 @@
{#each classquiz_reasons as reason, index}
Date: Sat, 1 Oct 2022 22:24:29 +0530 Subject: [PATCH 6/8] changed css to style block --- frontend/src/app.css | 21 --------------------- frontend/src/routes/+page.svelte | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/frontend/src/app.css b/frontend/src/app.css index 24c1c68..4e0de9d 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -32,24 +32,3 @@ @apply px-4 py-2 leading-5 text-white transition-colors duration-200 transform bg-gray-700 rounded text-center hover:bg-gray-600 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50; } } - -.why-classquiz::-webkit-scrollbar { - height: 0.8rem; - margin-bottom: 5rem; -} - -.why-classquiz::-webkit-scrollbar-track { - box-shadow: inset 0 0 10px 10px transparent; - border: solid 3px transparent; -} - -.why-classquiz::-webkit-scrollbar-thumb { - box-shadow: inset 0 0 10px 10px #374151; - border: solid 3px transparent; - border-radius: 15px; -} - -.why-classquiz::-webkit-scrollbar-thumb:hover { - box-shadow: inset 0 0 10px 10px #555; - border: solid 3px transparent; -} diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 089f0b6..770fc59 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -140,6 +140,30 @@ content="ClassQuiz is a quiz-application like KAHOOT!, but open-source. You can create quizzes and play them remotely with other people." /> +