🐛 Fixed critical bug in editor

This commit is contained in:
Mawoka
2022-09-27 22:25:20 +02:00
parent df6081edf9
commit 9ca624bd4c
+12 -2
View File
@@ -14,7 +14,7 @@ from fastapi import APIRouter, File, UploadFile, HTTPException, Depends
from pydantic import BaseModel from pydantic import BaseModel
from classquiz.config import settings, redis, storage, meilisearch 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 import puremagic
from classquiz.auth import get_current_user from classquiz.auth import get_current_user
import os import os
@@ -123,7 +123,16 @@ async def finish_edit(edit_id: str, quiz_input: QuizInput):
session_data = EditSessionData.parse_raw(session_data) session_data = EditSessionData.parse_raw(session_data)
quiz_input.title = html.unescape(bleach.clean(quiz_input.title, tags=[], strip=True)) 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.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}$" image_id_regex = r"^.{36}--.{36}$"
imgur_regex = r"^https://i\.imgur\.com\/.{7}.(jpg|png|gif)$" 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}}$" 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: if old_quiz is None:
return return
try: try:
# Why does this work or not throw an error (TODO)
if new == old_quiz.questions[index]["image"]: if new == old_quiz.questions[index]["image"]:
return return
else: else: