2 from django import forms
3 from django.core.validators import RegexValidator
4 from django.template.defaultfilters import capfirst
5 from django.utils.functional import lazy
6 from pyqcg.utils import TaskStatus
8 from qcg.models import Task, Allocation
12 return tuple((host, capfirst(host.split('.')[0])) for host in
13 Allocation.objects.values_list('host_name', flat=True).order_by('host_name').distinct())
16 date_range_validator = RegexValidator(r'[0-9]{2}\.[0-9]{2}\.[0-9]{4} - [0-9]{2}\.[0-9]{2}\.[0-9]{4}')
19 class FiltersForm(forms.Form):
20 ACTIVE, FINISHED, FAILED = range(3)
23 (FINISHED, u"Zakończone"),
24 (FAILED, u"Niepowodzenia"),
29 Task.STATUS_CHOICES_REVERSED[TaskStatus.UNSUBMITTED],
30 Task.STATUS_CHOICES_REVERSED[TaskStatus.UNCOMMITTED],
31 Task.STATUS_CHOICES_REVERSED[TaskStatus.QUEUED],
32 Task.STATUS_CHOICES_REVERSED[TaskStatus.PREPROCESSING],
33 Task.STATUS_CHOICES_REVERSED[TaskStatus.PENDING],
34 Task.STATUS_CHOICES_REVERSED[TaskStatus.RUNNING],
35 Task.STATUS_CHOICES_REVERSED[TaskStatus.STOPPED],
36 Task.STATUS_CHOICES_REVERSED[TaskStatus.POSTPROCESSING],
39 Task.STATUS_CHOICES_REVERSED[TaskStatus.FINISHED],
42 Task.STATUS_CHOICES_REVERSED[TaskStatus.FAILED],
43 Task.STATUS_CHOICES_REVERSED[TaskStatus.CANCELED],
46 STATUS_CHOICES_DICT = dict(STATUS_CHOICES)
48 status = forms.MultipleChoiceField(choices=STATUS_CHOICES, label=u"Status", required=False,
49 widget=forms.CheckboxSelectMultiple)
50 host = forms.MultipleChoiceField(choices=lazy(host_choices, tuple)(), label=u"Host", required=False,
51 widget=forms.CheckboxSelectMultiple)
54 keywords = forms.CharField(max_length=100, label=u"Wyszukaj frazę", required=False)
55 submission = forms.CharField(label=u"Data zlecenia", validators=[date_range_validator], required=False)
56 finish = forms.CharField(label=u"Data zakończenia", validators=[date_range_validator], required=False)