From a0495fdea0f38aefc715a7329edcd316373fb3e0 Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Thu, 12 Feb 2026 15:05:52 +0100 Subject: [PATCH] Einleitung and Geltungsbereich now draggable --- dokumente/admin.py | 8 ++--- .../0011_alter_einleitung_options_and_more.py | 34 +++++++++++++++++++ .../0012_alter_einleitung_options_and_more.py | 21 ++++++++++++ dokumente/models.py | 2 ++ 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 dokumente/migrations/0011_alter_einleitung_options_and_more.py create mode 100644 dokumente/migrations/0012_alter_einleitung_options_and_more.py diff --git a/dokumente/admin.py b/dokumente/admin.py index 1c14ecf..8191315 100644 --- a/dokumente/admin.py +++ b/dokumente/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin from django import forms from django.utils.safestring import mark_safe -from adminsortable2.admin import SortableInlineAdminMixin, SortableAdminBase + from mptt.forms import TreeNodeMultipleChoiceField from nested_admin import NestedStackedInline, NestedModelAdmin, NestedTabularInline from .models import * @@ -65,7 +65,6 @@ class GeltungsbereichInline(NestedStackedInline): extra=0 sortable_field_name = "order" show_change_link=True - classes = ['collapse'] verbose_name_plural = "Geltungsbereich-Abschnitte" fieldsets = ( (None, { @@ -79,7 +78,6 @@ class EinleitungInline(NestedStackedInline): extra = 0 sortable_field_name = "order" show_change_link = True - classes = ['collapse'] verbose_name_plural = "Einleitungs-Abschnitte" fieldsets = ( (None, { @@ -102,7 +100,7 @@ class VorgabeForm(forms.ModelForm): raise forms.ValidationError('Thema ist ein Pflichtfeld. Bitte wählen Sie ein Thema aus.') return thema -class VorgabeInline(SortableInlineAdminMixin, NestedStackedInline): +class VorgabeInline(NestedStackedInline): model = Vorgabe form = VorgabeForm extra = 0 @@ -200,7 +198,7 @@ class PersonAdmin(admin.ModelAdmin): @admin.register(Dokument) -class DokumentAdmin(SortableAdminBase, NestedModelAdmin): +class DokumentAdmin(NestedModelAdmin): actions_on_top=True inlines = [EinleitungInline, GeltungsbereichInline, VorgabeInline] filter_horizontal=['autoren','pruefende'] diff --git a/dokumente/migrations/0011_alter_einleitung_options_and_more.py b/dokumente/migrations/0011_alter_einleitung_options_and_more.py new file mode 100644 index 0000000..2e713c0 --- /dev/null +++ b/dokumente/migrations/0011_alter_einleitung_options_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 6.0.1 on 2026-02-12 13:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dokumente', '0010_vorgabentable_alter_person_options_vorgabecomment'), + ] + + operations = [ + migrations.AlterModelOptions( + name='einleitung', + options={'ordering': ('order',), 'verbose_name': 'Einleitungs-Abschnitt', 'verbose_name_plural': 'Einleitung'}, + ), + migrations.AlterModelOptions( + name='geltungsbereich', + options={'ordering': ('order',), 'verbose_name': 'Geltungsbereichs-Abschnitt', 'verbose_name_plural': 'Geltungsbereich'}, + ), + migrations.AlterModelOptions( + name='person', + options={'ordering': ['name'], 'verbose_name': 'Person', 'verbose_name_plural': 'Personen'}, + ), + migrations.AlterModelOptions( + name='thema', + options={'verbose_name': 'Thema', 'verbose_name_plural': 'Themen'}, + ), + migrations.AlterField( + model_name='dokument', + name='aktiv', + field=models.BooleanField(blank=True, default=False), + ), + ] diff --git a/dokumente/migrations/0012_alter_einleitung_options_and_more.py b/dokumente/migrations/0012_alter_einleitung_options_and_more.py new file mode 100644 index 0000000..7ef6a55 --- /dev/null +++ b/dokumente/migrations/0012_alter_einleitung_options_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 6.0.1 on 2026-02-12 13:43 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dokumente', '0011_alter_einleitung_options_and_more'), + ] + + operations = [ + migrations.AlterModelOptions( + name='einleitung', + options={'ordering': ['order'], 'verbose_name': 'Einleitungs-Abschnitt', 'verbose_name_plural': 'Einleitung'}, + ), + migrations.AlterModelOptions( + name='geltungsbereich', + options={'ordering': ['order'], 'verbose_name': 'Geltungsbereichs-Abschnitt', 'verbose_name_plural': 'Geltungsbereich'}, + ), + ] diff --git a/dokumente/models.py b/dokumente/models.py index b8c26fb..6a857f4 100644 --- a/dokumente/models.py +++ b/dokumente/models.py @@ -261,12 +261,14 @@ class Geltungsbereich(Textabschnitt): class Meta: verbose_name_plural="Geltungsbereich" verbose_name="Geltungsbereichs-Abschnitt" + ordering = ['order'] class Einleitung(Textabschnitt): einleitung=models.ForeignKey(Dokument,on_delete=models.CASCADE) class Meta: verbose_name_plural="Einleitung" verbose_name="Einleitungs-Abschnitt" + ordering = ['order'] class Checklistenfrage(models.Model): vorgabe=models.ForeignKey(Vorgabe, on_delete=models.CASCADE, related_name="checklistenfragen")