diff --git a/src/pretix/base/migrations/0084_questionoption_position.py b/src/pretix/base/migrations/0084_questionoption_position.py new file mode 100644 index 0000000000..6ffe8950af --- /dev/null +++ b/src/pretix/base/migrations/0084_questionoption_position.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.9 on 2018-03-03 16:41 +from __future__ import unicode_literals + +from django.db import migrations, models + + +def set_position(apps, schema_editor): + Question = apps.get_model('pretixbase', 'Question') + for q in Question.objects.all(): + for i, option in enumerate(q.options.all()): + option.position = i + option.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('pretixbase', '0083_auto_20180228_2102'), + ] + + operations = [ + migrations.AlterModelOptions( + name='questionoption', + options={'ordering': ('position', 'id'), 'verbose_name': 'Question option', 'verbose_name_plural': 'Question options'}, + ), + migrations.AddField( + model_name='questionoption', + name='position', + field=models.IntegerField(default=0), + ), + migrations.AlterField( + model_name='question', + name='position', + field=models.PositiveIntegerField(default=0, verbose_name='Position'), + ), + migrations.RunPython( + set_position, + reverse_code=migrations.RunPython.noop, + ), + ] diff --git a/src/pretix/base/models/items.py b/src/pretix/base/models/items.py index e7828c2e8a..39761ee4a6 100644 --- a/src/pretix/base/models/items.py +++ b/src/pretix/base/models/items.py @@ -682,8 +682,9 @@ class Question(LoggedModel): blank=True, help_text=_('This question will be asked to buyers of the selected products') ) - position = models.IntegerField( - default=0 + position = models.PositiveIntegerField( + default=0, + verbose_name=_("Position") ) ask_during_checkin = models.BooleanField( verbose_name=_('Ask during check-in instead of in the ticket buying process'), @@ -779,10 +780,16 @@ class Question(LoggedModel): class QuestionOption(models.Model): question = models.ForeignKey('Question', related_name='options') answer = I18nCharField(verbose_name=_('Answer')) + position = models.IntegerField(default=0) def __str__(self): return str(self.answer) + class Meta: + verbose_name = _("Question option") + verbose_name_plural = _("Question options") + ordering = ('position', 'id') + class Quota(LoggedModel): """ @@ -799,7 +806,7 @@ class Quota(LoggedModel): Please read the documentation section on quotas carefully before doing anything with quotas. This might confuse you otherwise. - http://docs.pretix.eu/en/latest/development/concepts.html#restriction-by-number + https://docs.pretix.eu/en/latest/development/concepts.html#quotas The AVAILABILITY_* constants represent various states of a quota allowing its items/variations to be up for sale. diff --git a/src/pretix/control/templates/pretixcontrol/items/question_edit.html b/src/pretix/control/templates/pretixcontrol/items/question_edit.html index e4cdfd0a6e..b963a079d4 100644 --- a/src/pretix/control/templates/pretixcontrol/items/question_edit.html +++ b/src/pretix/control/templates/pretixcontrol/items/question_edit.html @@ -50,6 +50,7 @@