🐛 Fixed explore-screen
This commit is contained in:
@@ -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()),
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
<script lang="ts">
|
||||
const getData = async () => {
|
||||
const response = await fetch('/api/v1/search/?q=*');
|
||||
const response = await fetch('/api/v1/search/', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
q: '*',
|
||||
sort: [
|
||||
"created_at:desc"
|
||||
]
|
||||
})
|
||||
});
|
||||
return await response.json();
|
||||
};
|
||||
</script>
|
||||
|
||||
+6
-10
@@ -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__":
|
||||
|
||||
Reference in New Issue
Block a user