diff --git a/dynamicforms/admin.py b/dynamicforms/admin.py index 2cbd214e5aa11a99ada2249a031a69020b0c4dee..7fe434eecefdae8ab0f387c361d70677287e7063 100644 --- a/dynamicforms/admin.py +++ b/dynamicforms/admin.py @@ -1,19 +1,20 @@ """Dynamic forms admin panels.""" from django.contrib import admin +from adminsortable2.admin import SortableInlineAdminMixin from .models import Answer, File, Form, FormEntry, Question, Section from .views import download_multiple_forms_entries -class SectionInline(admin.StackedInline): +class SectionInline(SortableInlineAdminMixin, admin.StackedInline): """Inline for sections.""" model = Section extra = 0 -class QuestionInline(admin.StackedInline): +class QuestionInline(SortableInlineAdminMixin, admin.StackedInline): """Inline for questions.""" model = Question diff --git a/dynamicforms/migrations/0015_auto_20180616_2136.py b/dynamicforms/migrations/0015_auto_20180616_2136.py new file mode 100644 index 0000000000000000000000000000000000000000..59bc79cb1a42d7b31a59d3b7ca2a11674ed53e13 --- /dev/null +++ b/dynamicforms/migrations/0015_auto_20180616_2136.py @@ -0,0 +1,31 @@ +# Generated by Django 2.0.6 on 2018-06-16 19:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dynamicforms', '0014_auto_20180616_1812'), + ] + + operations = [ + migrations.AlterModelOptions( + name='question', + options={'ordering': ('order',)}, + ), + migrations.AlterModelOptions( + name='section', + options={'ordering': ('order',)}, + ), + migrations.AddField( + model_name='question', + name='order', + field=models.PositiveIntegerField(default=0, verbose_name='position'), + ), + migrations.AddField( + model_name='section', + name='order', + field=models.PositiveIntegerField(default=0, verbose_name='position'), + ), + ] diff --git a/dynamicforms/models.py b/dynamicforms/models.py index 9ca95806f8aeb2f58bc59330c6eaec4f7b47d394..e34223cccaa6121d71aa5b4fca5c099a16b78246 100644 --- a/dynamicforms/models.py +++ b/dynamicforms/models.py @@ -59,8 +59,17 @@ class Section(models.Model): verbose_name='formulaire', help_text="Formulaire associé à la section.") + order = models.PositiveIntegerField( + 'position', + default=0, + blank=False, + null=False) + questions: models.Manager + class Meta: # noqa + ordering = ('order',) + def __str__(self): return str(self.title) @@ -108,8 +117,17 @@ class Question(models.Model): verbose_name='section', help_text="Section de formulaire associée à la question.") + order = models.PositiveIntegerField( + 'position', + default=0, + blank=False, + null=False) + answers: models.Manager + class Meta: # noqa + ordering = ('order',) + def __str__(self) -> str: return f'{self.text}{self.required and "*" or ""}'