From 028ab567deaf0a506aa00897a4cac298b846ce27 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 26 Jan 2023 19:18:56 +0100 Subject: [PATCH] :sparkles: Finished user-screen --- classquiz/routers/quiz.py | 19 +++++++++++++++---- frontend/src/routes/user/[user_id]/+page.ts | 6 +++--- .../src/routes/view/[quiz_id]/+page.svelte | 3 +++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index 211ad95..c6d9946 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -18,7 +18,7 @@ import bleach from classquiz.auth import get_current_user from classquiz.config import redis, settings, storage, meilisearch -from classquiz.db.models import Quiz, QuizInput, User, PlayGame, GameInLobby +from classquiz.db.models import Quiz, QuizInput, User, PlayGame, GameInLobby, QuizQuestion from classquiz.kahoot_importer.import_quiz import import_quiz import html import urllib.parse @@ -75,17 +75,28 @@ async def get_quiz_from_id(quiz_id: str, user: User | None = Depends(get_current return quiz -@router.get("/get/public/{quiz_id}", response_model=Quiz) +class PublicQuizResponseUser(BaseModel): + username: str + id: uuid.UUID + + +class PublicQuizResponse(Quiz.get_pydantic()): + user_id: PublicQuizResponseUser + questions: list[QuizQuestion] + + +@router.get("/get/public/{quiz_id}") async def get_public_quiz(quiz_id: str): try: quiz_id = uuid.UUID(quiz_id) except ValueError: raise HTTPException(status_code=400, detail="badly formed quiz id") - quiz = await Quiz.objects.get_or_none(id=quiz_id) + quiz = await Quiz.objects.select_related("user_id").get_or_none(id=quiz_id) + print(quiz.dict(exclude={"user_id": {"avatar"}})) if quiz is None: return JSONResponse(status_code=404, content={"detail": "quiz not found"}) else: - return quiz + return PublicQuizResponse(**quiz.dict()) @router.post("/start/{quiz_id}") diff --git a/frontend/src/routes/user/[user_id]/+page.ts b/frontend/src/routes/user/[user_id]/+page.ts index 80ca0de..7aadc47 100644 --- a/frontend/src/routes/user/[user_id]/+page.ts +++ b/frontend/src/routes/user/[user_id]/+page.ts @@ -4,9 +4,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import type { PageLoad } from './$types'; +// import type { PageLoad } from './$types'; -export const load = (async ({ params, fetch }) => { +export const load = async ({ params, fetch }) => { const user_req = await fetch(`/api/v1/community/user/${params.user_id}`); const user = await user_req.json(); if (!user) { @@ -21,4 +21,4 @@ export const load = (async ({ params, fetch }) => { user, quizzes }; -}) satisfies PageLoad; +}; // satisfies PageLoad; diff --git a/frontend/src/routes/view/[quiz_id]/+page.svelte b/frontend/src/routes/view/[quiz_id]/+page.svelte index ebb0666..9527044 100644 --- a/frontend/src/routes/view/[quiz_id]/+page.svelte +++ b/frontend/src/routes/view/[quiz_id]/+page.svelte @@ -68,6 +68,9 @@

{@html quiz.description}

+

+ Made by @{quiz.user_id.username} +

{#if quiz.cover_image}