Favoriten
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
# Generated by Django 5.1.7 on 2025-04-11 16:34
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('library', '0044_remove_qivipquizfavorite_favorite_date_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='qivipquiz',
|
||||||
|
name='favorite_date',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='qivipquizfavorite',
|
||||||
|
name='favorite_date',
|
||||||
|
field=models.DateTimeField(auto_now=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 5.1.7 on 2025-04-11 16:50
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('library', '0045_remove_qivipquiz_favorite_date_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='qivipquizfavorite',
|
||||||
|
name='favorite_date',
|
||||||
|
field=models.DateTimeField(blank=True, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -39,7 +39,6 @@ class QivipQuiz(models.Model):
|
|||||||
credits=models.TextField(blank=True, editable=True)
|
credits=models.TextField(blank=True, editable=True)
|
||||||
average_rating = models.FloatField(default=3.0)
|
average_rating = models.FloatField(default=3.0)
|
||||||
rating_count = models.IntegerField(default=0)
|
rating_count = models.IntegerField(default=0)
|
||||||
favorite_date=models.DateTimeField(auto_now=True)
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|
||||||
return self.name
|
return self.name
|
||||||
@@ -48,7 +47,7 @@ class QivipQuizFavorite(models.Model):
|
|||||||
user = models.ForeignKey(User, on_delete=models.CASCADE) # Verknüpfung zu User
|
user = models.ForeignKey(User, on_delete=models.CASCADE) # Verknüpfung zu User
|
||||||
quiz = models.ForeignKey(QivipQuiz, on_delete=models.CASCADE, related_name='favorites') # Verknüpfung zu Quiz
|
quiz = models.ForeignKey(QivipQuiz, on_delete=models.CASCADE, related_name='favorites') # Verknüpfung zu Quiz
|
||||||
favorite = models.BooleanField(default=False) # Favoritenstatus
|
favorite = models.BooleanField(default=False) # Favoritenstatus
|
||||||
|
favorite_date = models.DateTimeField(null=True, blank=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ('user', 'quiz') # Sicherstellen, dass es nur ein Favorit pro User und Quiz gibt
|
unique_together = ('user', 'quiz') # Sicherstellen, dass es nur ein Favorit pro User und Quiz gibt
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
from django.utils import timezone
|
||||||
import uuid
|
import uuid
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import render, redirect, get_object_or_404
|
from django.shortcuts import render, redirect, get_object_or_404
|
||||||
@@ -19,7 +20,7 @@ def overview_quiz(request):
|
|||||||
# Filter
|
# Filter
|
||||||
form = QuizFilterForm(request.GET)
|
form = QuizFilterForm(request.GET)
|
||||||
try:
|
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_quiz_ids = favorite_quizzes_data.values_list('quiz', flat=True)
|
||||||
favorite_quizzes = QivipQuiz.objects.filter(id__in=favorite_quiz_ids)
|
favorite_quizzes = QivipQuiz.objects.filter(id__in=favorite_quiz_ids)
|
||||||
except:
|
except:
|
||||||
@@ -31,7 +32,7 @@ def overview_quiz(request):
|
|||||||
# Initialize querysets
|
# Initialize querysets
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
filter_my_quizzes = QivipQuiz.objects.filter(user_id=request.user).annotate(max_amout_questions=Count('questions'))
|
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)
|
filter_other_quizzes = QivipQuiz.objects.exclude(user_id=request.user)
|
||||||
else:
|
else:
|
||||||
favorite_quizzes = QivipQuiz.objects.none()
|
favorite_quizzes = QivipQuiz.objects.none()
|
||||||
@@ -137,7 +138,7 @@ def overview_quiz(request):
|
|||||||
|
|
||||||
|
|
||||||
# Pagination for favorite_quizzes
|
# 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:
|
try:
|
||||||
favorite_quizzes = favorite_quizzes_paginator.page(request.GET.get('my_page', 1))
|
favorite_quizzes = favorite_quizzes_paginator.page(request.GET.get('my_page', 1))
|
||||||
except:
|
except:
|
||||||
@@ -163,19 +164,22 @@ def favorite_quiz(request, pk):
|
|||||||
if favorite:
|
if favorite:
|
||||||
favorite.favorite=not favorite.favorite
|
favorite.favorite=not favorite.favorite
|
||||||
|
|
||||||
favorite.save()
|
|
||||||
|
|
||||||
if favorite.favorite==True:
|
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!"
|
statement="Das Quiz '"+ favorite.quiz.name+ "' wurde erfolgreich zu den Favoriten hinzugefügt!"
|
||||||
messages.success(request,statement )
|
messages.success(request,statement )
|
||||||
else:
|
else:
|
||||||
|
favorite.favorite_date = None
|
||||||
|
|
||||||
statement="Das Quiz '"+ favorite.quiz.name+ "' wurde erfolgreich von den Favoriten entfernt!"
|
statement="Das Quiz '"+ favorite.quiz.name+ "' wurde erfolgreich von den Favoriten entfernt!"
|
||||||
messages.error(request, statement)
|
messages.error(request, statement)
|
||||||
|
|
||||||
|
favorite.save()
|
||||||
else:
|
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'))
|
return redirect(request.META.get('HTTP_REFERER', 'library:overview_quiz'))
|
||||||
|
|||||||
Reference in New Issue
Block a user