🚨 Made flake8 happy
This commit is contained in:
@@ -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:
|
||||
|
||||
+2
-1
@@ -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()
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import ormar
|
||||
|
||||
from classquiz.config import redis, settings
|
||||
from classquiz.db.models import User
|
||||
|
||||
settings = settings()
|
||||
|
||||
|
||||
|
||||
+3
-1
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from aiohttp import ClientSession
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from classquiz.kahoot_importer import _Card, _Kahoot
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]):
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import io
|
||||
import os
|
||||
|
||||
import aiofiles
|
||||
import aiofiles.os
|
||||
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import pytest
|
||||
|
||||
from classquiz.config import settings
|
||||
from classquiz.storage import Storage
|
||||
|
||||
|
||||
Reference in New Issue
Block a user