Bewertung_fix und Veröffentlichungszeit
This commit is contained in:
@@ -3,7 +3,7 @@ from django.contrib.auth.models import User
|
||||
from django.utils.text import slugify
|
||||
import uuid
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from django.utils import timezone
|
||||
|
||||
class QuizImage(models.Model):
|
||||
image = models.ImageField(max_length=256,verbose_name="Bild", upload_to='quiz_images/', blank=True, null=True) # Bild speichern in media/quiz_images/
|
||||
@@ -59,6 +59,10 @@ class QivipQuiz(models.Model):
|
||||
credits=models.TextField(blank=True, editable=True)
|
||||
average_rating = models.FloatField(default=3.0)
|
||||
rating_count = models.IntegerField(default=0)
|
||||
published_at = models.DateTimeField(null=True, blank=True) # manuell gesetzt, wenn veröffentlicht
|
||||
|
||||
def is_published(self):
|
||||
return self.published_at is not None and self.published_at <= timezone.now()
|
||||
def __str__(self):
|
||||
|
||||
return self.name
|
||||
@@ -111,9 +115,22 @@ class QuizRating(models.Model):
|
||||
rating = models.IntegerField(choices=[(i, str(i)) for i in range(1, 6)])
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('quiz', 'participant_id')
|
||||
#class Meta:
|
||||
#unique_together = ('quiz', 'participant_id')
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
# Update quiz average rating (immer, auch bei Updates)
|
||||
quiz = self.quiz
|
||||
total_ratings = quiz.ratings.count()
|
||||
avg_rating = quiz.ratings.aggregate(models.Avg('rating'))['rating__avg']
|
||||
quiz.average_rating = round(avg_rating, 1) if avg_rating else 3.0
|
||||
quiz.rating_count = total_ratings
|
||||
quiz.save()
|
||||
|
||||
|
||||
"""
|
||||
def save(self, *args, **kwargs):
|
||||
is_new = self.pk is None
|
||||
super().save(*args, **kwargs)
|
||||
@@ -125,7 +142,7 @@ class QuizRating(models.Model):
|
||||
avg_rating = quiz.ratings.aggregate(models.Avg('rating'))['rating__avg']
|
||||
quiz.average_rating = round(avg_rating, 1) if avg_rating else 3.0
|
||||
quiz.rating_count = total_ratings
|
||||
quiz.save()
|
||||
quiz.save()"""
|
||||
|
||||
class QuizCategory(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
|
||||
Reference in New Issue
Block a user