From 39b5c6d08a6589c64389af5bbf9686cda27edba5 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Wed, 5 Oct 2022 13:21:57 +0200 Subject: [PATCH] :sparkles: Added Scores to export --- classquiz/helpers/__init__.py | 10 +++++++--- classquiz/routers/quiz.py | 5 ++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/classquiz/helpers/__init__.py b/classquiz/helpers/__init__.py index 4474484..22093d0 100644 --- a/classquiz/helpers/__init__.py +++ b/classquiz/helpers/__init__.py @@ -29,7 +29,7 @@ async def get_meili_data(quiz: Quiz) -> dict: } -async def generate_spreadsheet(quiz_results: dict, quiz: Quiz, player_fields: dict) -> BytesIO: +async def generate_spreadsheet(quiz_results: dict, quiz: Quiz, player_fields: dict, player_scores: dict) -> BytesIO: storage = BytesIO() workbook = xlsxwriter.Workbook(storage, {"in_memory": True}) player_worksheet = workbook.add_worksheet() @@ -37,9 +37,13 @@ async def generate_spreadsheet(quiz_results: dict, quiz: Quiz, player_fields: di player_worksheet.write(0, 0, "Username") player_worksheet.write(0, 1, "Score") player_worksheet.write(0, 2, "Custom-Field") - for i, player in enumerate(player_fields.keys()): + for i, player in enumerate(player_scores.keys()): player_worksheet.write(i + 1, 0, player) - player_worksheet.write(i + 1, 2, player_fields[player]) + player_worksheet.write(i + 1, 1, player_scores[player]) + try: + player_worksheet.write(i + 1, 2, player_fields[player]) + except KeyError: + continue worksheet = workbook.add_worksheet() worksheet.name = "Questions" diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index db2beb2..62f1ac2 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -258,7 +258,10 @@ async def export_quiz_answers(export_token: str, game_pin: str): raise HTTPException(status_code=404, detail="quiz not found") player_fields = await redis.hgetall(f"game:{game_pin}:players:custom_fields") - spreadsheet = await generate_spreadsheet(quiz=quiz, quiz_results=data, player_fields=player_fields) + score_data = await redis.hgetall(f"game_session:{game_pin}:player_scores") + spreadsheet = await generate_spreadsheet( + quiz=quiz, quiz_results=data, player_fields=player_fields, player_scores=score_data + ) def iter_file(): yield from spreadsheet