Favoriten

This commit is contained in:
ben8
2025-04-11 19:31:12 +02:00
parent 2a7e39bbd0
commit 1f3b551b94
4 changed files with 52 additions and 9 deletions

View File

@@ -1,3 +1,4 @@
from django.utils import timezone
import uuid
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, redirect, get_object_or_404
@@ -19,7 +20,7 @@ def overview_quiz(request):
# Filter
form = QuizFilterForm(request.GET)
try:
favorite_quizzes_data = QivipQuizFavorite.objects.filter(user=request.user, favorite=True)
favorite_quizzes_data = QivipQuizFavorite.objects.filter(user=request.user, favorite=True).order_by("-favorite_date")
favorite_quiz_ids = favorite_quizzes_data.values_list('quiz', flat=True)
favorite_quizzes = QivipQuiz.objects.filter(id__in=favorite_quiz_ids)
except:
@@ -31,7 +32,7 @@ def overview_quiz(request):
# Initialize querysets
if request.user.is_authenticated:
filter_my_quizzes = QivipQuiz.objects.filter(user_id=request.user).annotate(max_amout_questions=Count('questions'))
favorite_quizzes = QivipQuiz.objects.filter(id__in=favorite_quiz_ids).annotate(max_amout_questions=Count('questions'))
favorite_quizzes = favorite_quizzes.filter(id__in=favorite_quiz_ids).annotate(max_amout_questions=Count('questions'))
filter_other_quizzes = QivipQuiz.objects.exclude(user_id=request.user)
else:
favorite_quizzes = QivipQuiz.objects.none()
@@ -137,7 +138,7 @@ def overview_quiz(request):
# Pagination for favorite_quizzes
favorite_quizzes_paginator = Paginator(favorite_quizzes.order_by("-favorite_date"), 8) # 8 quizzes per page
favorite_quizzes_paginator = Paginator(favorite_quizzes, 8) # 8 quizzes per page
try:
favorite_quizzes = favorite_quizzes_paginator.page(request.GET.get('my_page', 1))
except:
@@ -163,19 +164,22 @@ def favorite_quiz(request, pk):
if favorite:
favorite.favorite=not favorite.favorite
favorite.save()
if favorite.favorite==True:
quiz.save(update_fields=['favorite_date'])
favorite.favorite_date = timezone.now()
statement="Das Quiz '"+ favorite.quiz.name+ "' wurde erfolgreich zu den Favoriten hinzugefügt!"
messages.success(request,statement )
else:
favorite.favorite_date = None
statement="Das Quiz '"+ favorite.quiz.name+ "' wurde erfolgreich von den Favoriten entfernt!"
messages.error(request, statement)
favorite.save()
else:
QivipQuizFavorite.objects.create(user=request.user, quiz=quiz, favorite=True)
QivipQuizFavorite.objects.create(user=request.user, quiz=quiz, favorite=True, favorite_date=timezone.now())
return redirect(request.META.get('HTTP_REFERER', 'library:overview_quiz'))