🐛 Fixed some small bugs in results and on the account settings page

This commit is contained in:
Mawoka
2023-06-17 17:24:25 +02:00
parent 4838fc9f85
commit 03060bf0b9
3 changed files with 31 additions and 21 deletions
+10 -10
View File
@@ -12,14 +12,14 @@ from classquiz.db.models import User, GameResults
router = APIRouter() router = APIRouter()
@router.get("/list", response_model=list[GameResults]) @router.get("/list")
async def list_game_results(user: User = Depends(get_current_user)): async def list_game_results(user: User = Depends(get_current_user)) -> list[GameResults]:
results = await GameResults.objects.all(user=user.id) results = await GameResults.objects.select_related(GameResults.quiz).all(user=user.id)
return results return results
@router.get("/list/{quiz_id}", response_model=list[GameResults]) @router.get("/list/{quiz_id}")
async def get_results_by_quiz(quiz_id: UUID, user: User = Depends(get_current_user)): async def get_results_by_quiz(quiz_id: UUID, user: User = Depends(get_current_user)) -> list[GameResults]:
res = await GameResults.objects.all(user=user.id, quiz=quiz_id) res = await GameResults.objects.all(user=user.id, quiz=quiz_id)
if res is None: if res is None:
raise HTTPException(status_code=404, detail="Game Result not found") raise HTTPException(status_code=404, detail="Game Result not found")
@@ -27,9 +27,9 @@ async def get_results_by_quiz(quiz_id: UUID, user: User = Depends(get_current_us
return res return res
@router.get("/{game_id}", response_model=GameResults) @router.get("/{game_id}")
async def get_game_result(game_id: UUID, user: User = Depends(get_current_user)): async def get_game_result(game_id: UUID, user: User = Depends(get_current_user)) -> GameResults:
res = await GameResults.objects.get_or_none(user=user.id, id=game_id) res = await GameResults.objects.select_related(GameResults.quiz).get_or_none(user=user.id, id=game_id)
if res is None: if res is None:
raise HTTPException(status_code=404, detail="Game Result not found") raise HTTPException(status_code=404, detail="Game Result not found")
else: else:
@@ -40,8 +40,8 @@ class _SetNoteInput(BaseModel):
note: str note: str
@router.post("/set_note", response_model=GameResults) @router.post("/set_note")
async def set_note(id: UUID, data: _SetNoteInput, user: User = Depends(get_current_user)): async def set_note(id: UUID, data: _SetNoteInput, user: User = Depends(get_current_user)) -> GameResults:
res = await GameResults.objects.get_or_none(user=user.id, id=id) res = await GameResults.objects.get_or_none(user=user.id, id=id)
if res is None: if res is None:
raise HTTPException(status_code=404, detail="Game Result not found") raise HTTPException(status_code=404, detail="Game Result not found")
+8 -3
View File
@@ -254,7 +254,8 @@
"delete_this_session": "Delete this session", "delete_this_session": "Delete this session",
"this_session?": "This session?", "this_session?": "This session?",
"change_avatar": "Change avatar", "change_avatar": "Change avatar",
"security_settings": "Security-Settings" "security_settings": "Security-Settings",
"add_api_key": "Add API key"
}, },
"explore_page": { "explore_page": {
"made_by": "Made by", "made_by": "Made by",
@@ -320,7 +321,10 @@
"no_results_so_far": "No results saved so far...", "no_results_so_far": "No results saved so far...",
"quiz_title": "Quiz Title", "quiz_title": "Quiz Title",
"date_played": "Date Played", "date_played": "Date Played",
"player_count": "Player count" "player_count": "Player count",
"general_overview": {
"sentence": "The quiz \"{{title}}\", which was played on {{date}} had {{player_count}} players with an average score of {{average_score}}."
}
}, },
"result_page": { "result_page": {
"player_name": "Player name", "player_name": "Player name",
@@ -328,7 +332,8 @@
"average_score": "Average score: {{average_score}}", "average_score": "Average score: {{average_score}}",
"correct_answer": "{{count}} correct answer", "correct_answer": "{{count}} correct answer",
"correct_answer_plural": "{{count}} correct answers", "correct_answer_plural": "{{count}} correct answers",
"time_taken": "Time taken" "time_taken": "Time taken",
"player_score": "Player Score"
}, },
"navbar": { "navbar": {
"donate": "Donate" "donate": "Donate"
@@ -221,20 +221,25 @@
</div> </div>
</form> </form>
<div> <div>
<button on:click={add_api_key}>{$t('settings_page.security_settings')}</button> <div class="w-fit">
<BrownButton on:click={add_api_key}
>{$t('settings_page.add_api_key')}</BrownButton
>
</div>
{#await api_keys} {#await api_keys}
<Spinner /> <Spinner />
{:then keys} {:then keys}
{#each keys as key} {#each keys as key}
<div> <div>
{key.key} {key.key}
<button <div class="inline-block">
<BrownButton
on:click={() => { on:click={() => {
delete_api_key(key.key); delete_api_key(key.key);
}} }}
class="admin-button"
>{$t('words.delete')} >{$t('words.delete')}
</button> </BrownButton>
</div>
</div> </div>
{/each} {/each}
{/await} {/await}