2 from django import forms
3 from django.core.validators import RegexValidator
4 from django.template.defaultfilters import capfirst
5 from pyqcg.utils import TaskStatus
7 from qcg.models import Task, Allocation
10 date_range_validator = RegexValidator(r'[0-9]{2}\.[0-9]{2}\.[0-9]{4} - [0-9]{2}\.[0-9]{2}\.[0-9]{4}')
13 class FiltersForm(forms.Form):
14 ACTIVE, FINISHED, FAILED = range(3)
17 (FINISHED, u"Zakończone"),
18 (FAILED, u"Niepowodzenia"),
23 Task.STATUS_CHOICES_REVERSED[TaskStatus.UNSUBMITTED],
24 Task.STATUS_CHOICES_REVERSED[TaskStatus.UNCOMMITTED],
25 Task.STATUS_CHOICES_REVERSED[TaskStatus.QUEUED],
26 Task.STATUS_CHOICES_REVERSED[TaskStatus.PREPROCESSING],
27 Task.STATUS_CHOICES_REVERSED[TaskStatus.PENDING],
28 Task.STATUS_CHOICES_REVERSED[TaskStatus.RUNNING],
29 Task.STATUS_CHOICES_REVERSED[TaskStatus.STOPPED],
30 Task.STATUS_CHOICES_REVERSED[TaskStatus.POSTPROCESSING],
33 Task.STATUS_CHOICES_REVERSED[TaskStatus.FINISHED],
36 Task.STATUS_CHOICES_REVERSED[TaskStatus.FAILED],
37 Task.STATUS_CHOICES_REVERSED[TaskStatus.CANCELED],
40 STATUS_CHOICES_DICT = dict(STATUS_CHOICES)
42 status = forms.MultipleChoiceField(choices=STATUS_CHOICES, label=u"Status", required=False,
43 widget=forms.CheckboxSelectMultiple)
44 host = forms.MultipleChoiceField(label=u"Host", required=False, widget=forms.CheckboxSelectMultiple)
47 keywords = forms.CharField(max_length=100, label=u"Wyszukaj frazę", required=False)
48 submission = forms.CharField(label=u"Data zlecenia", validators=[date_range_validator], required=False)
49 finish = forms.CharField(label=u"Data zakończenia", validators=[date_range_validator], required=False)
51 def __init__(self, *args, **kwargs):
52 super(FiltersForm, self).__init__(*args, **kwargs)
54 self.fields['host'].choices = tuple(
55 (host, capfirst(host.split('.', 1)[0]))
56 for host in Allocation.objects.values_list('host_name', flat=True).order_by('host_name').distinct())