Import allows appending to quiz

This commit is contained in:
Mawoka
2023-07-05 11:03:50 +02:00
parent aa3b2909ef
commit fc29be9c53
2 changed files with 21 additions and 13 deletions
+9 -1
View File
@@ -111,7 +111,7 @@ async def generate_spreadsheet(quiz_results: dict, quiz: Quiz, player_fields: di
return storage return storage
def handle_import_from_excel(data: BinaryIO, user: User) -> Quiz: async def handle_import_from_excel(data: BinaryIO, user: User) -> Quiz:
try: try:
wb = load_workbook(filename=data) wb = load_workbook(filename=data)
except KeyError: except KeyError:
@@ -154,6 +154,8 @@ def handle_import_from_excel(data: BinaryIO, user: User) -> Quiz:
for a, answer in enumerate(answers): for a, answer in enumerate(answers):
answers_list.append(ABCDQuizAnswer(answer=answer, right=str(a + 1) in correct_answers)) answers_list.append(ABCDQuizAnswer(answer=answer, right=str(a + 1) in correct_answers))
questions.append(QuizQuestion(question=question, answers=answers_list, time=str(time)).dict()) questions.append(QuizQuestion(question=question, answers=answers_list, time=str(time)).dict())
existing_quiz: Quiz | None = await Quiz.objects.get_or_none(user_id=user, title=title)
if existing_quiz is None:
quiz = Quiz( quiz = Quiz(
title=title, title=title,
description=description, description=description,
@@ -164,6 +166,12 @@ def handle_import_from_excel(data: BinaryIO, user: User) -> Quiz:
questions=questions, questions=questions,
imported_from_kahoot=False, imported_from_kahoot=False,
) )
await quiz.save()
else:
existing_quiz.questions = [*existing_quiz.questions, *questions]
existing_quiz.updated_at = datetime.now()
await existing_quiz.update()
quiz = existing_quiz
return quiz return quiz
+2 -2
View File
@@ -250,5 +250,5 @@ async def export_quiz_answers(export_token: str, game_pin: str):
@router.post("/excel-import") @router.post("/excel-import")
async def import_from_excel(file: UploadFile = File(), user: User = Depends(get_current_user)) -> Quiz: async def import_from_excel(file: UploadFile = File(), user: User = Depends(get_current_user)) -> Quiz:
quiz = handle_import_from_excel(file.file, user) quiz = await handle_import_from_excel(file.file, user)
return Quiz.parse_obj((await quiz.save()).dict(exclude={"user_id": ...})) return Quiz.parse_obj(quiz.dict(exclude={"user_id": ...}))