from django.db import models from django.contrib.auth.models import User from django.utils.text import slugify import uuid from django.core.exceptions import ValidationError class QivipQuiz(models.Model): STATUS_VALUES = { "öffentlich": "Öffentlich", "versteckt": "Versteckt", "privat": "Privat", } DIFFICULTY_VALUES = { "1": "1", "2": "2", "3": "3", "4": "4", "5": "5", "nicht gesetzt":"nicht gesetzt", } def validate_description(value): if value.strip() == "In dem Quiz geht es um ...": raise ValidationError("Bitte gib eine aussagekräftige Beschreibung ein.") uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) user_id = models.ForeignKey(User, on_delete=models.CASCADE, related_name='quiz') creation_date = models.DateTimeField(auto_now_add=True) update_date = models.DateTimeField(auto_now=True) status = models.CharField(max_length=10, choices=list(STATUS_VALUES.items()), default="öffentlich") category = models.ForeignKey('QuizCategory', related_name='quiz', on_delete=models.CASCADE) tags = models.ManyToManyField('Tag', blank=True) name = models.CharField(max_length=75) description = models.TextField(validators=[validate_description],max_length=200,blank=False, default="In dem Quiz geht es um ...") difficulty= models.CharField(max_length=13, choices=list(DIFFICULTY_VALUES.items()), default="nicht gesetzt", help_text="1: niedrigste Schwierigkeit und 5: höchste Schwierigkeit") def __str__(self): return self.name # Create your models here. class QivipQuestion(models.Model): uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) quiz_id = models.ForeignKey(QivipQuiz, on_delete=models.CASCADE, related_name='question') creation_date = models.DateTimeField(auto_now_add=True) update_date = models.DateTimeField(auto_now=True) data = models.TextField() def __str__(self): return self.data[:50] class Tag(models.Model): name = models.CharField(max_length=100, unique=True) def __str__(self): return self.name class QuizCategory(models.Model): name = models.CharField(max_length=100, unique=True) description = models.TextField(blank=True, null=True) slug = models.SlugField(unique=True, blank=True) def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) super().save(*args, **kwargs) def __str__(self): return self.name