From 87920b055c37f1a452f5b228ad2abb4c11fda97e Mon Sep 17 00:00:00 2001 From: Mawoka Date: Sat, 9 Apr 2022 10:29:55 +0200 Subject: [PATCH] :rotating_light: Made flake8 happy --- classquiz/__init__.py | 6 +++--- classquiz/auth.py | 3 ++- classquiz/cache.py | 1 + classquiz/config.py | 4 +++- classquiz/kahoot_importer/__init__.py | 5 +++-- classquiz/kahoot_importer/get.py | 2 +- classquiz/kahoot_importer/import_quiz.py | 10 +++++----- classquiz/kahoot_importer/search.py | 13 +++++++------ classquiz/routers/quiz.py | 7 +++---- classquiz/routers/stats.py | 11 +++-------- classquiz/routers/storage.py | 4 +++- classquiz/routers/users.py | 13 ++++++++----- classquiz/routers/utils.py | 5 ++--- classquiz/socket_server/__init__.py | 8 ++++---- classquiz/storage/__init__.py | 5 +++-- classquiz/storage/deta_storage.py | 3 ++- classquiz/storage/local_storage.py | 1 + classquiz/tests/test_kahoot_get.py | 3 ++- classquiz/tests/test_kahoot_search.py | 4 +++- classquiz/tests/test_storage.py | 1 + 20 files changed, 60 insertions(+), 49 deletions(-) diff --git a/classquiz/__init__.py b/classquiz/__init__.py index c955131..f91d596 100644 --- a/classquiz/__init__.py +++ b/classquiz/__init__.py @@ -1,12 +1,12 @@ -from fastapi import FastAPI, Request import sentry_sdk +from fastapi import FastAPI, Request +from sentry_sdk.integrations.redis import RedisIntegration from socketio import ASGIApp -from classquiz.db import database from classquiz.config import settings +from classquiz.db import database from classquiz.routers import users, quiz, utils, stats, storage from classquiz.socket_server import sio -from sentry_sdk.integrations.redis import RedisIntegration settings = settings() if settings.sentry_dsn: diff --git a/classquiz/auth.py b/classquiz/auth.py index 2ae8568..6bfc97e 100644 --- a/classquiz/auth.py +++ b/classquiz/auth.py @@ -15,7 +15,8 @@ from passlib.hash import argon2 from classquiz.cache import get_cache from classquiz.config import settings -from classquiz.db.models import * +from datetime import datetime +from classquiz.db.models import User, TokenData settings = settings() diff --git a/classquiz/cache.py b/classquiz/cache.py index 20bca1e..4d40c13 100644 --- a/classquiz/cache.py +++ b/classquiz/cache.py @@ -6,6 +6,7 @@ import ormar from classquiz.config import redis, settings from classquiz.db.models import User + settings = settings() diff --git a/classquiz/config.py b/classquiz/config.py index 5c2902b..7c348a9 100644 --- a/classquiz/config.py +++ b/classquiz/config.py @@ -1,6 +1,8 @@ -import redis.asyncio as redis_lib from functools import lru_cache + +import redis.asyncio as redis_lib from pydantic import BaseSettings, RedisDsn, PostgresDsn + from classquiz.storage import Storage diff --git a/classquiz/kahoot_importer/__init__.py b/classquiz/kahoot_importer/__init__.py index 673a690..c89486d 100644 --- a/classquiz/kahoot_importer/__init__.py +++ b/classquiz/kahoot_importer/__init__.py @@ -1,6 +1,7 @@ -from pydantic import BaseModel -from uuid import UUID from typing import List, Any, Optional +from uuid import UUID + +from pydantic import BaseModel class _CoverMetadata(BaseModel): diff --git a/classquiz/kahoot_importer/get.py b/classquiz/kahoot_importer/get.py index 399a0c6..6d58226 100644 --- a/classquiz/kahoot_importer/get.py +++ b/classquiz/kahoot_importer/get.py @@ -1,6 +1,6 @@ from aiohttp import ClientSession - from pydantic import BaseModel + from classquiz.kahoot_importer import _Card, _Kahoot diff --git a/classquiz/kahoot_importer/import_quiz.py b/classquiz/kahoot_importer/import_quiz.py index 4c8710c..ac749f7 100644 --- a/classquiz/kahoot_importer/import_quiz.py +++ b/classquiz/kahoot_importer/import_quiz.py @@ -1,12 +1,13 @@ +import html import json import uuid from datetime import datetime -from aiohttp import ClientSession, FormData -import html +from aiohttp import ClientSession + +from classquiz.config import settings, storage from classquiz.db.models import Quiz, QuizAnswer, QuizQuestion, User from classquiz.kahoot_importer.get import get as get_quiz -from classquiz.config import settings, storage settings = settings() @@ -65,13 +66,12 @@ async def import_quiz(quiz_id: str, user: User) -> Quiz | str: quiz_questions: list[dict] = [] quiz_id = uuid.uuid4() - for q in quiz.kahoot.questions: answers: list[QuizAnswer] = [] image = None if q.image is not None and q.image != "": image_bytes = await _download_image(q.image) - image_name= f"{quiz_id}--{uuid.uuid4()}" + image_name = f"{quiz_id}--{uuid.uuid4()}" image = await storage.upload(file_name=image_name, file_data=image_bytes) image = f"{settings.root_address}/api/v1/storage/download/{image_name}" # image = q.image diff --git a/classquiz/kahoot_importer/search.py b/classquiz/kahoot_importer/search.py index 7776167..52c027a 100644 --- a/classquiz/kahoot_importer/search.py +++ b/classquiz/kahoot_importer/search.py @@ -1,15 +1,16 @@ -from uuid import UUID -from typing import List, Any, Optional -from aiohttp import ClientSession -from classquiz.kahoot_importer import _Entity +from typing import List +from aiohttp import ClientSession from pydantic import BaseModel +from classquiz.kahoot_importer import _Entity + +# noqa : E501 class _Response(BaseModel): entities: List[_Entity] totalHits: int - cursor: int + cursor: int | None pageTimestamp: int @@ -26,7 +27,7 @@ async def search(query: str | None, limit: int | None = 9, cursor: int | None = """ async with ClientSession() as session: async with session.get( - f"https://create.kahoot.it/rest/kahoots/?query={query}&limit={limit}&cursor={cursor}&searchCluster={search_cluster}&includeExtendedCounters=false&inventoryItemId={inventory_item_id}" + f"https://create.kahoot.it/rest/kahoots/?query={query}&limit={limit}&cursor={cursor}&searchCluster={search_cluster}&includeExtendedCounters=false&inventoryItemId={inventory_item_id}" # noqa : E501 ) as response: # print( diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index d3ccc24..1aa365d 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -1,18 +1,17 @@ import json +import re import uuid from datetime import datetime from random import randint -from pydantic import ValidationError - -from classquiz.kahoot_importer.import_quiz import import_quiz from fastapi import APIRouter, Depends, HTTPException from fastapi.responses import JSONResponse -import re +from pydantic import ValidationError from classquiz.auth import get_current_user, get_current_user_optional from classquiz.config import redis, settings, storage from classquiz.db.models import Quiz, QuizInput, User, PlayGame +from classquiz.kahoot_importer.import_quiz import import_quiz settings = settings() diff --git a/classquiz/routers/stats.py b/classquiz/routers/stats.py index 746cb36..7094086 100644 --- a/classquiz/routers/stats.py +++ b/classquiz/routers/stats.py @@ -1,13 +1,8 @@ -import os +from fastapi import APIRouter -from fastapi import APIRouter, Response -from fastapi.background import BackgroundTasks -from fastapi.responses import JSONResponse, RedirectResponse -from fastapi.security import OAuth2PasswordRequestForm -from pydantic import BaseModel -from classquiz.auth import * from classquiz.config import redis -from classquiz.db.models import * +from pydantic import BaseModel +from classquiz.db.models import Quiz, User router = APIRouter() diff --git a/classquiz/routers/storage.py b/classquiz/routers/storage.py index 14fafdc..23728aa 100644 --- a/classquiz/routers/storage.py +++ b/classquiz/routers/storage.py @@ -1,7 +1,9 @@ +import re + from fastapi import APIRouter, HTTPException from fastapi.responses import StreamingResponse + from classquiz.config import settings, storage -import re settings = settings() diff --git a/classquiz/routers/users.py b/classquiz/routers/users.py index 83d227e..de01ef5 100644 --- a/classquiz/routers/users.py +++ b/classquiz/routers/users.py @@ -1,17 +1,20 @@ import os from email_validator import validate_email, EmailNotValidError -from fastapi import APIRouter, Response +from fastapi import APIRouter, Response, HTTPException, Request, Depends, status +from datetime import timedelta, datetime from fastapi.background import BackgroundTasks from fastapi.responses import JSONResponse, RedirectResponse from fastapi.security import OAuth2PasswordRequestForm -from classquiz.auth import * -from classquiz.config import redis +from classquiz.auth import get_password_hash, verify_password, authenticate_user, create_access_token, get_current_user from classquiz.cache import clear_cache_for_account -from classquiz.db.models import * +from classquiz.config import redis, settings +import uuid +from pydantic import BaseModel +from classquiz.db.models import User, UserSession, UpdatePassword, Token from classquiz.emails import send_register_email, send_forgotten_password_email - +settings = settings() router = APIRouter() route_user = User.get_pydantic( diff --git a/classquiz/routers/utils.py b/classquiz/routers/utils.py index 63a07a0..e4fdbf9 100644 --- a/classquiz/routers/utils.py +++ b/classquiz/routers/utils.py @@ -6,6 +6,7 @@ from fastapi import APIRouter from fastapi.responses import Response from classquiz.config import settings + settings = settings() router = APIRouter() @@ -16,9 +17,7 @@ async def get_qr(quiz_pin: str): """ Get QR code for quiz """ - factory = qrcode.image.svg.SvgImage - qr = qrcode.QRCode(image_factory=qrcode.image.svg.SvgPathImage, version=1 - , box_size=20, border=0) + qr = qrcode.QRCode(image_factory=qrcode.image.svg.SvgPathImage, version=1, box_size=20, border=0) qr.add_data(f"{settings.root_address}/play?pin={quiz_pin}") buf = io.BytesIO() qr.make(fit=True) diff --git a/classquiz/socket_server/__init__.py b/classquiz/socket_server/__init__.py index aec6f78..75afa95 100644 --- a/classquiz/socket_server/__init__.py +++ b/classquiz/socket_server/__init__.py @@ -4,7 +4,7 @@ import aiohttp import socketio from classquiz.config import redis, settings -from classquiz.db.models import GameSession, PlayGame +from classquiz.db.models import PlayGame sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins=[]) settings = settings() @@ -20,7 +20,7 @@ async def join_game(sid, data): if not resp_data["success"]: print("CAPTCHA FAILED") return - except KeyError as e: + except KeyError: print("CAPTCHA FAILED") return redis_res = await redis.get(f"game:{data['game_pin']}") @@ -89,8 +89,8 @@ async def set_question_number(sid, data): @sio.event async def submit_answer(sid, data): session = await sio.get_session(sid) - redis_res = await redis.get(f"game_session:{session['game_pin']}") - game_session = GameSession(**json.loads(redis_res)) + # redis_res = await redis.get(f"game_session:{session['game_pin']}") + # game_session = GameSession(**json.loads(redis_res)) game_data = PlayGame(**json.loads(await redis.get(f"game:{session['game_pin']}"))) # print(game_session) answer_right = False diff --git a/classquiz/storage/__init__.py b/classquiz/storage/__init__.py index a343344..c1ec5bb 100644 --- a/classquiz/storage/__init__.py +++ b/classquiz/storage/__init__.py @@ -1,8 +1,9 @@ -from .deta_storage import DetaStorage -from .local_storage import LocalStorage from io import BytesIO from typing import Optional +from .deta_storage import DetaStorage +from .local_storage import LocalStorage + class Storage: def __init__(self, backend: str, deta_key: Optional[str], deta_id: Optional[str], storage_path: Optional[str]): diff --git a/classquiz/storage/deta_storage.py b/classquiz/storage/deta_storage.py index ffe0b2f..6136f36 100644 --- a/classquiz/storage/deta_storage.py +++ b/classquiz/storage/deta_storage.py @@ -1,6 +1,7 @@ -from aiohttp import ClientSession from io import BytesIO +from aiohttp import ClientSession + class DetaStorage: def __init__(self, deta_base_url: str, deta_id: str, deta_key: str): diff --git a/classquiz/storage/local_storage.py b/classquiz/storage/local_storage.py index 4ae76f8..0d7438d 100644 --- a/classquiz/storage/local_storage.py +++ b/classquiz/storage/local_storage.py @@ -1,5 +1,6 @@ import io import os + import aiofiles import aiofiles.os diff --git a/classquiz/tests/test_kahoot_get.py b/classquiz/tests/test_kahoot_get.py index 701b1c8..73b48a3 100644 --- a/classquiz/tests/test_kahoot_get.py +++ b/classquiz/tests/test_kahoot_get.py @@ -1,6 +1,7 @@ -from classquiz.kahoot_importer.get import get import pytest +from classquiz.kahoot_importer.get import get + @pytest.mark.asyncio async def test_get(): diff --git a/classquiz/tests/test_kahoot_search.py b/classquiz/tests/test_kahoot_search.py index 62853be..4ac1efc 100644 --- a/classquiz/tests/test_kahoot_search.py +++ b/classquiz/tests/test_kahoot_search.py @@ -1,10 +1,12 @@ -from classquiz.kahoot_importer.search import search import pytest +from classquiz.kahoot_importer.search import search + @pytest.mark.asyncio async def test_search(): res = await search(query="Python", limit=100) + print(res) assert len(res.entities) == 100 await search(query="Test Quiz", limit=100) await search(query="Biologie", limit=100) diff --git a/classquiz/tests/test_storage.py b/classquiz/tests/test_storage.py index a22f814..3dfb396 100644 --- a/classquiz/tests/test_storage.py +++ b/classquiz/tests/test_storage.py @@ -1,4 +1,5 @@ import pytest + from classquiz.config import settings from classquiz.storage import Storage