Favoritenfunktion! #55
This commit is contained in:
@@ -19,20 +19,22 @@ def overview_quiz(request):
|
||||
# Filter
|
||||
form = QuizFilterForm(request.GET)
|
||||
try:
|
||||
favorite_quizzes = QivipQuizFavorite.objects.filter(user=request.user, favorite=True)
|
||||
favorite_quiz_ids = favorite_quizzes.values_list('quiz', flat=True)
|
||||
favorite_quizzes_data = QivipQuizFavorite.objects.filter(user=request.user, favorite=True)
|
||||
favorite_quiz_ids = favorite_quizzes_data.values_list('quiz', flat=True)
|
||||
favorite_quizzes = QivipQuiz.objects.filter(id__in=favorite_quiz_ids)
|
||||
except:
|
||||
favorite_quizzes_data = QivipQuizFavorite.objects.none()
|
||||
favorite_quizzes = QivipQuizFavorite.objects.none()
|
||||
favorite_quiz_ids = favorite_quizzes.none()
|
||||
favorite_quizzes = QivipQuiz.objects.none()
|
||||
|
||||
|
||||
# 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'))
|
||||
filter_other_quizzes = QivipQuiz.objects.exclude(user_id=request.user)
|
||||
else:
|
||||
favorite_quizzes = QivipQuiz.objects.none()
|
||||
filter_my_quizzes = QivipQuiz.objects.none()
|
||||
filter_other_quizzes = QivipQuiz.objects.all()
|
||||
|
||||
@@ -40,11 +42,49 @@ def overview_quiz(request):
|
||||
filter_other_quizzes = filter_other_quizzes.annotate(max_amout_questions=Count('questions'))
|
||||
filter_other_quizzes = filter_other_quizzes.filter(max_amout_questions__gte=1, status='öffentlich')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if form.is_valid():
|
||||
|
||||
search = form.cleaned_data.get('search')
|
||||
username= form.cleaned_data.get('user')
|
||||
max_amout_questions= form.cleaned_data.get('max_amout_questions')
|
||||
min_amout_questions= form.cleaned_data.get('min_amout_questions')
|
||||
|
||||
filters = {}
|
||||
if username:
|
||||
try:
|
||||
user = User.objects.get(username=username)
|
||||
filters['user_id'] = user.id
|
||||
except User.DoesNotExist:
|
||||
favorite_quizzes = QivipQuiz.objects.none()
|
||||
filter_my_quizzes = QivipQuiz.objects.none()
|
||||
filter_other_quizzes=QivipQuiz.objects.none()
|
||||
|
||||
if search:
|
||||
filters['name__icontains'] = search
|
||||
if min_amout_questions:
|
||||
filters['max_amout_questions__gte'] = min_amout_questions
|
||||
if max_amout_questions:
|
||||
filters['max_amout_questions__lte'] = max_amout_questions
|
||||
|
||||
try:
|
||||
filter_other_quizzes = filter_other_quizzes.filter(**filters)
|
||||
except:
|
||||
filter_other_quizzes=QivipQuiz.objects.none()
|
||||
try:
|
||||
filter_my_quizzes = filter_my_quizzes.filter(**filters)
|
||||
except:
|
||||
filter_my_quizzes=QivipQuiz.objects.none()
|
||||
|
||||
try:
|
||||
favorite_quizzes = favorite_quizzes.filter(**filters)
|
||||
except:
|
||||
favorite_quizzes=QivipQuiz.objects.none()
|
||||
|
||||
"""
|
||||
if search: # Suche nach Namen
|
||||
filter_other_quizzes = filter_other_quizzes.filter(name__icontains=search)
|
||||
filter_my_quizzes = filter_my_quizzes.filter(name__icontains=search)
|
||||
@@ -73,9 +113,9 @@ def overview_quiz(request):
|
||||
filter_other_quizzes=filter_other_quizzes.exclude(user_id=request.user)
|
||||
except:
|
||||
filter_other_quizzes=filter_other_quizzes
|
||||
"""
|
||||
|
||||
|
||||
|
||||
# Pagination for my quizzes
|
||||
my_quizzes_paginator = Paginator(filter_my_quizzes.order_by('-creation_date'), 8) # 8 quizzes per page
|
||||
try:
|
||||
@@ -90,6 +130,19 @@ def overview_quiz(request):
|
||||
except:
|
||||
other_quizzes = other_quizzes_paginator.page(1)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Pagination for favorite_quizzes
|
||||
favorite_quizzes_paginator = Paginator(favorite_quizzes.order_by("-favorite_date"), 8) # 8 quizzes per page
|
||||
try:
|
||||
favorite_quizzes = favorite_quizzes_paginator.page(request.GET.get('my_page', 1))
|
||||
except:
|
||||
favorite_quizzes = favorite_quizzes_paginator.page(1)
|
||||
|
||||
context = {
|
||||
'show_search': True,
|
||||
'favorite_quiz_ids': favorite_quiz_ids,
|
||||
@@ -100,23 +153,32 @@ def overview_quiz(request):
|
||||
}
|
||||
|
||||
return render(request, 'library/overview_quiz.html', context)
|
||||
|
||||
|
||||
# Neues Quiz erstellen
|
||||
@login_required
|
||||
def favorite_quiz(request, pk):
|
||||
quiz= get_object_or_404(QivipQuiz, pk=pk)
|
||||
favorite = QivipQuizFavorite.objects.filter(user=request.user, quiz=quiz).first()
|
||||
|
||||
if favorite:
|
||||
favorite.favorite=not favorite.favorite
|
||||
print(favorite.favorite)
|
||||
|
||||
favorite.save()
|
||||
|
||||
if favorite.favorite==True:
|
||||
quiz.save(update_fields=['favorite_date'])
|
||||
statement="Das Quiz '"+ favorite.quiz.name+ "' wurde erfolgreich zu den Favoriten hinzugefügt!"
|
||||
messages.success(request,statement )
|
||||
else:
|
||||
statement="Das Quiz '"+ favorite.quiz.name+ "' wurde erfolgreich von den Favoriten entfernt!"
|
||||
messages.error(request, statement)
|
||||
|
||||
|
||||
else:
|
||||
QivipQuizFavorite.objects.create(user=request.user, quiz=quiz, favorite=True)
|
||||
|
||||
|
||||
return redirect('library:overview_quiz')
|
||||
return redirect(request.META.get('HTTP_REFERER', 'library:overview_quiz'))
|
||||
|
||||
# Neues Quiz erstellen
|
||||
@login_required
|
||||
|
||||
Reference in New Issue
Block a user