✨ Added Scores to export
This commit is contained in:
@@ -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()
|
storage = BytesIO()
|
||||||
workbook = xlsxwriter.Workbook(storage, {"in_memory": True})
|
workbook = xlsxwriter.Workbook(storage, {"in_memory": True})
|
||||||
player_worksheet = workbook.add_worksheet()
|
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, 0, "Username")
|
||||||
player_worksheet.write(0, 1, "Score")
|
player_worksheet.write(0, 1, "Score")
|
||||||
player_worksheet.write(0, 2, "Custom-Field")
|
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, 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 = workbook.add_worksheet()
|
||||||
worksheet.name = "Questions"
|
worksheet.name = "Questions"
|
||||||
|
|||||||
@@ -258,7 +258,10 @@ async def export_quiz_answers(export_token: str, game_pin: str):
|
|||||||
raise HTTPException(status_code=404, detail="quiz not found")
|
raise HTTPException(status_code=404, detail="quiz not found")
|
||||||
|
|
||||||
player_fields = await redis.hgetall(f"game:{game_pin}:players:custom_fields")
|
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():
|
def iter_file():
|
||||||
yield from spreadsheet
|
yield from spreadsheet
|
||||||
|
|||||||
Reference in New Issue
Block a user