diff --git a/django/library/migrations/0072_alter_qivipquestion_options_qivipquestion_order.py b/django/library/migrations/0072_alter_qivipquestion_options_qivipquestion_order.py new file mode 100644 index 0000000..797d043 --- /dev/null +++ b/django/library/migrations/0072_alter_qivipquestion_options_qivipquestion_order.py @@ -0,0 +1,22 @@ +# Generated by Django 5.1.7 on 2026-01-17 11:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0071_quizcriticism_id_question'), + ] + + operations = [ + migrations.AlterModelOptions( + name='qivipquestion', + options={'ordering': ['order']}, + ), + migrations.AddField( + model_name='qivipquestion', + name='order', + field=models.PositiveIntegerField(default=0), + ), + ] diff --git a/django/library/models.py b/django/library/models.py index a66a8dc..996fbca 100644 --- a/django/library/models.py +++ b/django/library/models.py @@ -113,6 +113,10 @@ class QivipQuestion(models.Model): related_name="questions" ) credits=models.TextField(blank=True, editable=True) + order = models.PositiveIntegerField(default=0) + + class Meta: + ordering = ['order'] # Fragen nach Reihenfolge sortieren def __str__(self): return self.data[:50] diff --git a/django/library/urls.py b/django/library/urls.py index ace2249..a107095 100644 --- a/django/library/urls.py +++ b/django/library/urls.py @@ -20,6 +20,8 @@ urlpatterns = [ path('detail/copy//', views.copy_quiz, name='copy_quiz'), path('favorite_quiz//', views.favorite_quiz, name='favorite_quiz'), path('critique/delete//', views.delete_critique, name='delete_critique'), + path('quiz/reorder/', views.reorder_questions, name='reorder_questions'), + path("quiz-names-json/", views.quiz_names_json, name="quiz_names_json"), path( "autocomplete/quiz", diff --git a/django/library/views.py b/django/library/views.py index 3855cb9..4325145 100644 --- a/django/library/views.py +++ b/django/library/views.py @@ -94,6 +94,17 @@ def quiz_names_json(request): return JsonResponse(names, safe=False) + +def reorder_questions(request): + if request.method == "POST": + data = json.loads(request.body) + for item in data['order']: + QivipQuestion.objects.filter(id=item['id']).update(order=item['position']) + return JsonResponse({'status': 'ok'}) + return JsonResponse({'status': 'error'}, status=400) + + + def apply_quiz_filters(queryset, form): if not form.is_valid(): diff --git a/django/templates/library/detail_quiz.html b/django/templates/library/detail_quiz.html index 0f320e6..a97c69b 100644 --- a/django/templates/library/detail_quiz.html +++ b/django/templates/library/detail_quiz.html @@ -1,6 +1,8 @@ {% extends 'base.html' %} {% block content %} +{% load static %} +