Skip to content
Snippets Groups Projects
Commit 38e5f5b9 authored by florimondmanca's avatar florimondmanca
Browse files

add drag-n-drop ordering on sections and questions

parent 5fca08a2
No related branches found
No related tags found
No related merge requests found
"""Dynamic forms admin panels.""" """Dynamic forms admin panels."""
from django.contrib import admin from django.contrib import admin
from adminsortable2.admin import SortableInlineAdminMixin
from .models import Answer, File, Form, FormEntry, Question, Section from .models import Answer, File, Form, FormEntry, Question, Section
from .views import download_multiple_forms_entries from .views import download_multiple_forms_entries
class SectionInline(admin.StackedInline): class SectionInline(SortableInlineAdminMixin, admin.StackedInline):
"""Inline for sections.""" """Inline for sections."""
model = Section model = Section
extra = 0 extra = 0
class QuestionInline(admin.StackedInline): class QuestionInline(SortableInlineAdminMixin, admin.StackedInline):
"""Inline for questions.""" """Inline for questions."""
model = Question model = Question
......
# 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'),
),
]
...@@ -59,8 +59,17 @@ class Section(models.Model): ...@@ -59,8 +59,17 @@ class Section(models.Model):
verbose_name='formulaire', verbose_name='formulaire',
help_text="Formulaire associé à la section.") help_text="Formulaire associé à la section.")
order = models.PositiveIntegerField(
'position',
default=0,
blank=False,
null=False)
questions: models.Manager questions: models.Manager
class Meta: # noqa
ordering = ('order',)
def __str__(self): def __str__(self):
return str(self.title) return str(self.title)
...@@ -108,8 +117,17 @@ class Question(models.Model): ...@@ -108,8 +117,17 @@ class Question(models.Model):
verbose_name='section', verbose_name='section',
help_text="Section de formulaire associée à la question.") help_text="Section de formulaire associée à la question.")
order = models.PositiveIntegerField(
'position',
default=0,
blank=False,
null=False)
answers: models.Manager answers: models.Manager
class Meta: # noqa
ordering = ('order',)
def __str__(self) -> str: def __str__(self) -> str:
return f'{self.text}{self.required and "*" or ""}' return f'{self.text}{self.required and "*" or ""}'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment