diff --git a/classquiz/routers/editor.py b/classquiz/routers/editor.py index 1553176..26ffd87 100644 --- a/classquiz/routers/editor.py +++ b/classquiz/routers/editor.py @@ -14,7 +14,7 @@ from fastapi import APIRouter, File, UploadFile, HTTPException, Depends from pydantic import BaseModel from classquiz.config import settings, redis, storage, meilisearch -from classquiz.db.models import Quiz, QuizInput, User +from classquiz.db.models import Quiz, QuizInput, User, QuizQuestionType import puremagic from classquiz.auth import get_current_user import os @@ -123,7 +123,16 @@ async def finish_edit(edit_id: str, quiz_input: QuizInput): session_data = EditSessionData.parse_raw(session_data) quiz_input.title = html.unescape(bleach.clean(quiz_input.title, tags=[], strip=True)) quiz_input.description = html.unescape(bleach.clean(quiz_input.description, tags=[], strip=True)) - quiz_input.background_color = html.unescape(bleach.clean(quiz_input.background_color, tags=[], strip=True)) + if quiz_input.background_color is not None: + quiz_input.background_color = html.unescape(bleach.clean(quiz_input.background_color, tags=[], strip=True)) + + for i, question in enumerate(quiz_input.questions): + if question.type == QuizQuestionType.ABCD: + for i2, answer in enumerate(question.answers): + if answer.color is not None: + quiz_input.questions[i].answers[i2].color = html.unescape( + bleach.clean(answer.color, tags=[], strip=True) + ) image_id_regex = r"^.{36}--.{36}$" imgur_regex = r"^https://i\.imgur\.com\/.{7}.(jpg|png|gif)$" server_regex = rf"^{re.escape(settings.root_address)}/api/v1/storage/download/.{{36}}--.{{36}}$" @@ -135,6 +144,7 @@ async def finish_edit(edit_id: str, quiz_input: QuizInput): if old_quiz is None: return try: + # Why does this work or not throw an error (TODO) if new == old_quiz.questions[index]["image"]: return else: