summaryrefslogtreecommitdiff
path: root/archaeological_operations/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r--archaeological_operations/forms.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 78e5a4ed4..bb743372d 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -306,6 +306,81 @@ if FILES_AVAILABLE:
associated_model=File),
validators=[valid_id(File)], required=False)
+SLICING = (("month",_(u"months")), ('year',_(u"years")),)
+
+DATE_SOURCE = (('creation',_(u"Creation date")),
+ ("start",_(u"Start of field work")))
+
+PREVENTIVE_RESARCH = (('all', _('All')),
+ ('preventive', _(u"Preventive")),
+ ('research', _(u"Research")),)
+
+class DashboardForm(forms.Form):
+ slicing = forms.ChoiceField(label=_("Slicing"), choices=SLICING,
+ required=False)
+ department_detail = forms.BooleanField(label=_("Department detail"),
+ required=False)
+ date_source = forms.ChoiceField(label=_("Date get from"),
+ choices=DATE_SOURCE, required=False)
+ preventive_research = forms.ChoiceField(label=_("Preventive/Research"),
+ choices=PREVENTIVE_RESARCH, required=False)
+ operation_type = forms.ChoiceField(label=_("Operation type"), choices=[],
+ required=False)
+ operator = forms.ChoiceField(label=_("Operator"), choices=[],
+ required=False)
+ after = forms.DateField(label=_(u"Date after"),
+ widget=widgets.JQueryDate, required=False)
+ before = forms.DateField(label=_(u"Date before"),
+ widget=widgets.JQueryDate, required=False)
+ with_report = forms.BooleanField(label=_("With reports"), required=False)
+ with_finds = forms.BooleanField(label=_("With finds"), required=False)
+
+ def __init__(self, *args, **kwargs):
+ if 'prefix' not in kwargs:
+ kwargs['prefix'] = 'operations'
+ super(DashboardForm, self).__init__(*args, **kwargs)
+ self.fields['operation_type'].choices = models.OperationType.get_types()
+ self.fields['operator'].choices = [('', '--')]
+ self.fields['operator'].choices += [(orga.pk, orga.name)
+ for orga in Organization.objects.filter(operator__isnull=False)\
+ .order_by('name').distinct().all()]
+
+ def get_show_detail(self):
+ return hasattr(self, 'cleaned_data') and \
+ self.cleaned_data.get('department_detail')
+
+ def get_date_source(self):
+ date_source = 'creation'
+ if hasattr(self, 'cleaned_data') and \
+ self.cleaned_data.get('date_source'):
+ date_source = self.cleaned_data['date_source']
+ return date_source
+
+ def get_filter(self):
+ if not hasattr(self, 'cleaned_data') or not self.cleaned_data:
+ return {}
+ date_source = self.get_date_source()
+ fltr = {}
+ if self.cleaned_data.get('preventive_research'):
+ preventive_research = self.cleaned_data['preventive_research']
+ if preventive_research == 'preventive':
+ fltr['file_type__preventive'] = True
+ elif preventive_research == 'preventive':
+ fltr['file_type__preventive'] = False
+ if self.cleaned_data.get('operation_type'):
+ fltr['operation_type_id'] = self.cleaned_data['operation_type']
+ if self.cleaned_data.get('operator'):
+ fltr['operator_id'] = self.cleaned_data['operator']
+ if self.cleaned_data.get('after'):
+ fltr[date_source+'_date__gte'] = self.cleaned_data['after']
+ if self.cleaned_data.get('before'):
+ fltr[date_source+'_date__lte'] = self.cleaned_data['before']
+ if self.cleaned_data.get('with_report'):
+ fltr['report_delivery_date__isnull'] = False
+ if self.cleaned_data.get('with_finds'):
+ fltr['context_record__base_finds__isnull'] = False
+ return fltr
+
class OperationFormGeneral(forms.Form):
form_label = _(u"General")
base_model = 'archaeological_site'