From 2b288b46266e3cb12517839d57b3b2fcffb6c111 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 14 Apr 2022 17:47:34 +0200 Subject: [PATCH] :bug: Fixed explore-screen --- classquiz/helpers.py | 11 +++++++++++ classquiz/kahoot_importer/import_quiz.py | 8 ++------ classquiz/routers/quiz.py | 23 ++++------------------- classquiz/scripts/__init__.py | 0 frontend/src/routes/explore.svelte | 13 ++++++++++++- import_to_meili.py | 16 ++++++---------- 6 files changed, 35 insertions(+), 36 deletions(-) create mode 100644 classquiz/helpers.py delete mode 100644 classquiz/scripts/__init__.py diff --git a/classquiz/helpers.py b/classquiz/helpers.py new file mode 100644 index 0000000..9607d64 --- /dev/null +++ b/classquiz/helpers.py @@ -0,0 +1,11 @@ +from classquiz.db.models import Quiz, User + + +async def get_meili_data(quiz: Quiz) -> dict: + return { + "id": str(quiz.id), + "title": quiz.title, + "description": quiz.description, + "user": (await User.objects.filter(id=quiz.user_id).first()).username, + "created_at": int(quiz.created_at.timestamp()), + } diff --git a/classquiz/kahoot_importer/import_quiz.py b/classquiz/kahoot_importer/import_quiz.py index 28eb5ec..dc7a4db 100644 --- a/classquiz/kahoot_importer/import_quiz.py +++ b/classquiz/kahoot_importer/import_quiz.py @@ -8,6 +8,7 @@ from aiohttp import ClientSession from classquiz.config import settings, storage, meilisearch from classquiz.db.models import Quiz, QuizAnswer, QuizQuestion, User from classquiz.kahoot_importer.get import get as get_quiz +from classquiz.helpers import get_meili_data settings = settings() @@ -98,12 +99,7 @@ async def import_quiz(quiz_id: str, user: User) -> Quiz | str: ) meilisearch.index(settings.meilisearch_index).add_documents( [ - { - "id": str(quiz_data.id), - "title": quiz_data.title, - "description": quiz_data.description, - "user": (await User.objects.filter(id=quiz_data.user_id).first()).username, - } + await get_meili_data(quiz_data) ] ) return await quiz_data.save() diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index 6cd39df..e871026 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -3,7 +3,7 @@ import re import uuid from datetime import datetime from random import randint - +from classquiz.helpers import get_meili_data from fastapi import APIRouter, Depends, HTTPException from fastapi.responses import JSONResponse from pydantic import ValidationError @@ -32,12 +32,7 @@ async def create_quiz_lol(quiz_input: QuizInput, user: User = Depends(get_curren await redis.delete("global_quiz_count") meilisearch.index(settings.meilisearch_index).add_documents( [ - { - "id": str(quiz.id), - "title": quiz.title, - "description": quiz.description, - "user": (await User.objects.filter(id=quiz.user_id).first()).username, - } + await get_meili_data(quiz) ] ) return await quiz.save() @@ -138,12 +133,7 @@ async def update_quiz(quiz_id: str, quiz_input: QuizInput, user: User = Depends( # print(quiz) meilisearch.index(settings.meilisearch_index).update_documents( [ - { - "id": str(quiz.id), - "title": quiz_input.title, - "description": quiz_input.description, - "user": (await User.objects.filter(id=quiz.user_id).first()).username, - } + await get_meili_data(quiz) ] ) if quiz.public and not quiz_input.public: @@ -152,12 +142,7 @@ async def update_quiz(quiz_id: str, quiz_input: QuizInput, user: User = Depends( if not quiz.public and quiz_input.public: meilisearch.index(settings.meilisearch_index).add_documents( [ - { - "id": str(quiz.id), - "title": quiz_input.title, - "description": quiz_input.description, - "user": (await User.objects.filter(id=quiz.user_id).first()).username, - } + await get_meili_data(quiz) ] ) quiz.title = quiz_input.title diff --git a/classquiz/scripts/__init__.py b/classquiz/scripts/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/frontend/src/routes/explore.svelte b/frontend/src/routes/explore.svelte index e50765d..d68624d 100644 --- a/frontend/src/routes/explore.svelte +++ b/frontend/src/routes/explore.svelte @@ -1,6 +1,17 @@ diff --git a/import_to_meili.py b/import_to_meili.py index e30f1a7..fd8c808 100644 --- a/import_to_meili.py +++ b/import_to_meili.py @@ -1,7 +1,9 @@ import meilisearch from classquiz.db import database from classquiz.db.models import Quiz, User +from classquiz.helpers import get_meili_data from classquiz.config import settings +from datetime import datetime from asyncio import run settings = settings() @@ -11,19 +13,13 @@ async def __main__(): if not database.is_connected: await database.connect() meili_data = [] - questions = await Quiz.objects.filter(public=True).all() - for question in questions: - meili_data.append( - { - "id": str(question.id), - "title": question.title, - "description": question.description, - "user": (await User.objects.filter(id=question.user_id).first()).username, - } - ) + quizzes = await Quiz.objects.filter(public=True).all() + for quiz in quizzes: + meili_data.append(await get_meili_data(quiz)) print(meili_data) client = meilisearch.Client(settings.meilisearch_url) client.index(settings.meilisearch_index).add_documents(meili_data) + client.index(settings.meilisearch_index).update_settings({"sortableAttributes": ["created_at"]}) if __name__ == "__main__":