diff --git a/django/library/migrations/0016_alter_qivipquiz_status.py b/django/library/migrations/0016_alter_qivipquiz_status.py new file mode 100644 index 0000000..74ecb50 --- /dev/null +++ b/django/library/migrations/0016_alter_qivipquiz_status.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.7 on 2025-03-16 12:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0015_alter_qivipquiz_difficulty'), + ] + + operations = [ + migrations.AlterField( + model_name='qivipquiz', + name='status', + field=models.CharField(choices=[('öffentlich', 'Öffentlich'), ('versteckt', 'Versteckt'), ('privat', 'Privat')], default='öffentlich', max_length=10), + ), + ] diff --git a/django/library/migrations/0017_alter_qivipquiz_difficulty.py b/django/library/migrations/0017_alter_qivipquiz_difficulty.py new file mode 100644 index 0000000..84cb0ad --- /dev/null +++ b/django/library/migrations/0017_alter_qivipquiz_difficulty.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.7 on 2025-03-16 12:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0016_alter_qivipquiz_status'), + ] + + operations = [ + migrations.AlterField( + model_name='qivipquiz', + name='difficulty', + field=models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('nicht gesetzt', 'nicht gesetzt')], default='nicht gesetzt', help_text='1: niedrigste Schwierigkeit und 5: höchste Schwierigkeit', max_length=13), + ), + ] diff --git a/django/library/migrations/0018_alter_qivipquiz_description.py b/django/library/migrations/0018_alter_qivipquiz_description.py new file mode 100644 index 0000000..afd751d --- /dev/null +++ b/django/library/migrations/0018_alter_qivipquiz_description.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.7 on 2025-03-16 13:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0017_alter_qivipquiz_difficulty'), + ] + + operations = [ + migrations.AlterField( + model_name='qivipquiz', + name='description', + field=models.TextField(blank=True, default='In dem Quiz geht es um ...', max_length=150, null=True), + ), + ] diff --git a/django/library/migrations/0019_alter_qivipquiz_description.py b/django/library/migrations/0019_alter_qivipquiz_description.py new file mode 100644 index 0000000..762ca30 --- /dev/null +++ b/django/library/migrations/0019_alter_qivipquiz_description.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.7 on 2025-03-16 13:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0018_alter_qivipquiz_description'), + ] + + operations = [ + migrations.AlterField( + model_name='qivipquiz', + name='description', + field=models.TextField(default='In dem Quiz geht es um ...', max_length=255, null=True), + ), + ] diff --git a/django/library/migrations/0020_alter_qivipquiz_description.py b/django/library/migrations/0020_alter_qivipquiz_description.py new file mode 100644 index 0000000..f2990d6 --- /dev/null +++ b/django/library/migrations/0020_alter_qivipquiz_description.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1.7 on 2025-03-16 13:08 + +import library.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0019_alter_qivipquiz_description'), + ] + + operations = [ + migrations.AlterField( + model_name='qivipquiz', + name='description', + field=models.TextField(default='In dem Quiz geht es um ...', max_length=255, validators=[library.models.QivipQuiz.validate_description]), + ), + ] diff --git a/django/library/models.py b/django/library/models.py index 3d76970..b1b0ee9 100644 --- a/django/library/models.py +++ b/django/library/models.py @@ -2,12 +2,13 @@ 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 = { - "public": "Öffentlich", - "hidden": "Versteckt", - "private": "Privat", + "öffentlich": "Öffentlich", + "versteckt": "Versteckt", + "privat": "Privat", } DIFFICULTY_VALUES = { "1": "1", @@ -15,20 +16,25 @@ class QivipQuiz(models.Model): "3": "3", "4": "4", "5": "5", - "not defined":"nicht gesetzt", + "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="public") + 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=255) - description = models.TextField(blank=True, null=True, default="In dem Quiz geht es um ...") - difficulty= models.CharField(max_length=11, choices=list(DIFFICULTY_VALUES.items()), default="not defined", help_text="1: niedrigste Schwierigkeit und 5: höchste Schwierigkeit") + description = models.TextField(validators=[validate_description],max_length=255,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 diff --git a/django/library/views.py b/django/library/views.py index 4851d6c..f929bb1 100644 --- a/django/library/views.py +++ b/django/library/views.py @@ -6,12 +6,13 @@ from django.contrib import messages from .models import QivipQuiz, QivipQuestion from .forms import QuizForm, QuestionForm import json - +from django.core.paginator import Paginator # Übersicht aller Quizze @login_required def overview_quiz(request): quizzes = QivipQuiz.objects.filter(user_id=request.user) - return render(request, 'library/overview_quiz.html', {'quizzes': quizzes}) + all_quizzes = QivipQuiz.objects.filter(status='öffentlich').exclude(user_id=request.user) + return render(request, 'library/overview_quiz.html', {'quizzes': quizzes, 'all_quizzes': all_quizzes}) # Neues Quiz erstellen @login_required diff --git a/django/templates/library/overview_quiz.html b/django/templates/library/overview_quiz.html index 54e8f28..4ddcb92 100644 --- a/django/templates/library/overview_quiz.html +++ b/django/templates/library/overview_quiz.html @@ -1,15 +1,16 @@ {% extends 'base.html' %} {% block content %} -
{{ quiz.description }}
+{{ quiz.description }}
Status: {{ quiz.status }}
+
Schwierigkeit: {{ quiz.difficulty }}
{{ quiz.description }}
Schwierigkeit: {{ quiz.difficulty }}