🐛 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.config import settings, storage, meilisearch
|
||||||
from classquiz.db.models import Quiz, QuizAnswer, QuizQuestion, User
|
from classquiz.db.models import Quiz, QuizAnswer, QuizQuestion, User
|
||||||
from classquiz.kahoot_importer.get import get as get_quiz
|
from classquiz.kahoot_importer.get import get as get_quiz
|
||||||
|
from classquiz.helpers import get_meili_data
|
||||||
|
|
||||||
settings = settings()
|
settings = settings()
|
||||||
|
|
||||||
@@ -98,12 +99,7 @@ async def import_quiz(quiz_id: str, user: User) -> Quiz | str:
|
|||||||
)
|
)
|
||||||
meilisearch.index(settings.meilisearch_index).add_documents(
|
meilisearch.index(settings.meilisearch_index).add_documents(
|
||||||
[
|
[
|
||||||
{
|
await get_meili_data(quiz_data)
|
||||||
"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,
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
return await quiz_data.save()
|
return await quiz_data.save()
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import re
|
|||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from random import randint
|
from random import randint
|
||||||
|
from classquiz.helpers import get_meili_data
|
||||||
from fastapi import APIRouter, Depends, HTTPException
|
from fastapi import APIRouter, Depends, HTTPException
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
from pydantic import ValidationError
|
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")
|
await redis.delete("global_quiz_count")
|
||||||
meilisearch.index(settings.meilisearch_index).add_documents(
|
meilisearch.index(settings.meilisearch_index).add_documents(
|
||||||
[
|
[
|
||||||
{
|
await get_meili_data(quiz)
|
||||||
"id": str(quiz.id),
|
|
||||||
"title": quiz.title,
|
|
||||||
"description": quiz.description,
|
|
||||||
"user": (await User.objects.filter(id=quiz.user_id).first()).username,
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
return await quiz.save()
|
return await quiz.save()
|
||||||
@@ -138,12 +133,7 @@ async def update_quiz(quiz_id: str, quiz_input: QuizInput, user: User = Depends(
|
|||||||
# print(quiz)
|
# print(quiz)
|
||||||
meilisearch.index(settings.meilisearch_index).update_documents(
|
meilisearch.index(settings.meilisearch_index).update_documents(
|
||||||
[
|
[
|
||||||
{
|
await get_meili_data(quiz)
|
||||||
"id": str(quiz.id),
|
|
||||||
"title": quiz_input.title,
|
|
||||||
"description": quiz_input.description,
|
|
||||||
"user": (await User.objects.filter(id=quiz.user_id).first()).username,
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
if quiz.public and not quiz_input.public:
|
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:
|
if not quiz.public and quiz_input.public:
|
||||||
meilisearch.index(settings.meilisearch_index).add_documents(
|
meilisearch.index(settings.meilisearch_index).add_documents(
|
||||||
[
|
[
|
||||||
{
|
await get_meili_data(quiz)
|
||||||
"id": str(quiz.id),
|
|
||||||
"title": quiz_input.title,
|
|
||||||
"description": quiz_input.description,
|
|
||||||
"user": (await User.objects.filter(id=quiz.user_id).first()).username,
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
quiz.title = quiz_input.title
|
quiz.title = quiz_input.title
|
||||||
|
|||||||
@@ -1,6 +1,17 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
const getData = async () => {
|
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();
|
return await response.json();
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
+6
-10
@@ -1,7 +1,9 @@
|
|||||||
import meilisearch
|
import meilisearch
|
||||||
from classquiz.db import database
|
from classquiz.db import database
|
||||||
from classquiz.db.models import Quiz, User
|
from classquiz.db.models import Quiz, User
|
||||||
|
from classquiz.helpers import get_meili_data
|
||||||
from classquiz.config import settings
|
from classquiz.config import settings
|
||||||
|
from datetime import datetime
|
||||||
from asyncio import run
|
from asyncio import run
|
||||||
|
|
||||||
settings = settings()
|
settings = settings()
|
||||||
@@ -11,19 +13,13 @@ async def __main__():
|
|||||||
if not database.is_connected:
|
if not database.is_connected:
|
||||||
await database.connect()
|
await database.connect()
|
||||||
meili_data = []
|
meili_data = []
|
||||||
questions = await Quiz.objects.filter(public=True).all()
|
quizzes = await Quiz.objects.filter(public=True).all()
|
||||||
for question in questions:
|
for quiz in quizzes:
|
||||||
meili_data.append(
|
meili_data.append(await get_meili_data(quiz))
|
||||||
{
|
|
||||||
"id": str(question.id),
|
|
||||||
"title": question.title,
|
|
||||||
"description": question.description,
|
|
||||||
"user": (await User.objects.filter(id=question.user_id).first()).username,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
print(meili_data)
|
print(meili_data)
|
||||||
client = meilisearch.Client(settings.meilisearch_url)
|
client = meilisearch.Client(settings.meilisearch_url)
|
||||||
client.index(settings.meilisearch_index).add_documents(meili_data)
|
client.index(settings.meilisearch_index).add_documents(meili_data)
|
||||||
|
client.index(settings.meilisearch_index).update_settings({"sortableAttributes": ["created_at"]})
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user