From d8b00fd3068e2eae17282900a638eb269d4cf2c9 Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Sun, 25 Oct 2015 21:36:54 +0200 Subject: Added QueueStatus ordering --- servo/forms/admin.py | 37 +++++++++++++++++++++-------- servo/migrations/0041_auto_20151023_1228.py | 29 ++++++++++++++++++++++ servo/models/queue.py | 9 ++++--- servo/templates/admin/queues/form.html | 16 +++++++++++-- servo/urls/admin.py | 20 +++++++++------- servo/views/admin.py | 5 +++- 6 files changed, 92 insertions(+), 24 deletions(-) create mode 100644 servo/migrations/0041_auto_20151023_1228.py diff --git a/servo/forms/admin.py b/servo/forms/admin.py index df99669..5118fc0 100644 --- a/servo/forms/admin.py +++ b/servo/forms/admin.py @@ -5,8 +5,8 @@ import io from django import forms from django import template -from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import Permission +from django.utils.translation import ugettext_lazy as _ from servo.forms.base import BaseForm, BaseModelForm from servo.forms.account import ProfileForm @@ -137,7 +137,8 @@ class QueueForm(BaseModelForm): gsx_soldto = forms.ChoiceField(required=False, choices=()) users = forms.ModelMultipleChoiceField(queryset=User.active.all(), widget=forms.CheckboxSelectMultiple, - required=False) + required=False + ) class Meta: model = Queue @@ -174,6 +175,20 @@ class StatusForm(BaseModelForm): 'limit_yellow': forms.TextInput(attrs={'class': 'input-mini'}), } + +class QueueStatusForm(BaseModelForm): + class Meta: + model = QueueStatus + exclude = [] + widgets = {'idx': forms.Select()} + + def __init__(self, *args, **kwargs): + super(QueueStatusForm, self).__init__(*args, **kwargs) + statuses = QueueStatus.objects.filter(queue_id=self.instance.queue_id) + statuses = statuses.count() or 1 + self.fields['idx'].widget.choices = [(i, i) for i in range(1, statuses+1)] + + class UserForm(ProfileForm): def clean_username(self): reserved = ( @@ -219,6 +234,7 @@ class UserForm(ProfileForm): 'queues': forms.CheckboxSelectMultiple } + class TemplateForm(BaseModelForm): class Meta: model = Template @@ -413,9 +429,9 @@ class SettingsForm(BaseForm): required=False, label=_('Default Sender'), choices=( - ('user', _("User")), - ('location', _("Location")), - ('custom', _("Custom...")) + ('user', _("User")), + ('location', _("Location")), + ('custom', _("Custom...")) ), help_text=_('Select the default sender address for outgoing emails') ) @@ -449,13 +465,14 @@ class SettingsForm(BaseForm): label=_('SMS Gateway'), choices=( ('builtin', _('Built-in')), - ('hqsms', 'HQSMS'), - ('http', 'HTTP'), - ('smtp', 'SMTP'), - ('jazz', 'SMSjazz'), + ('hqsms', 'HQSMS'), + ('http', 'HTTP'), + ('smtp', 'SMTP'), + ('jazz', 'SMSjazz'), ), initial='http', - required=False) + required=False + ) sms_smtp_address = forms.EmailField(required=False, label=_('Email address')) sms_http_url = forms.CharField( max_length=128, diff --git a/servo/migrations/0041_auto_20151023_1228.py b/servo/migrations/0041_auto_20151023_1228.py new file mode 100644 index 0000000..8307e4f --- /dev/null +++ b/servo/migrations/0041_auto_20151023_1228.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('servo', '0040_auto_20151020_2226'), + ] + + operations = [ + migrations.AddField( + model_name='queuestatus', + name='idx', + field=models.IntegerField(default=1, verbose_name='Ordering'), + ), + migrations.AlterField( + model_name='repair', + name='acplus', + field=models.NullBooleanField(default=None, help_text='Repair is covered by AppleCare+', verbose_name='AppleCare+'), + ), + migrations.AlterField( + model_name='repair', + name='consumer_law', + field=models.NullBooleanField(default=None, help_text='Repair is eligible for consumer law coverage'), + ), + ] diff --git a/servo/models/queue.py b/servo/models/queue.py index 05f5f2c..eb8414e 100644 --- a/servo/models/queue.py +++ b/servo/models/queue.py @@ -246,14 +246,16 @@ class QueueStatus(models.Model): queue = models.ForeignKey(Queue) status = models.ForeignKey(Status) - limit_green = models.IntegerField(default=1, verbose_name=_(u'green limit')) - limit_yellow = models.IntegerField(default=15, verbose_name=_(u'yellow limit')) + limit_green = models.IntegerField(default=1, verbose_name=_(u'Green limit')) + limit_yellow = models.IntegerField(default=15, verbose_name=_(u'Yellow limit')) limit_factor = models.IntegerField( choices=Status.FACTOR_CHOICES, - verbose_name=_(u'time unit'), + verbose_name=_(u'Time unit'), default=Status.FACTOR_CHOICES[0][0] ) + idx = models.IntegerField(default=1, verbose_name=_(u'Ordering')) + def get_green_limit(self): """ Gets the green time limit for this QS @@ -268,5 +270,6 @@ class QueueStatus(models.Model): class Meta: app_label = 'servo' + ordering = ('idx',) # A status should only be defined once per queue unique_together = ('queue', 'status',) diff --git a/servo/templates/admin/queues/form.html b/servo/templates/admin/queues/form.html index 119275a..b3991ec 100644 --- a/servo/templates/admin/queues/form.html +++ b/servo/templates/admin/queues/form.html @@ -8,6 +8,7 @@