diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-04 12:48:06 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-04 12:48:06 +0200 | 
| commit | c693630090f670ca33981dcdf0b135fdd7432972 (patch) | |
| tree | cc236b69e01cd80ce378bb932b619bb7835a215f | |
| parent | f6f70c2d270644a520c6f2f1bcf718839c5f489c (diff) | |
| download | Ishtar-c693630090f670ca33981dcdf0b135fdd7432972.tar.bz2 Ishtar-c693630090f670ca33981dcdf0b135fdd7432972.zip | |
Operations: search operations by dates (refs #1187)
| -rw-r--r-- | archaeological_operations/forms.py | 8 | ||||
| -rw-r--r-- | archaeological_operations/views.py | 8 | ||||
| -rw-r--r-- | ishtar_common/views.py | 15 | 
3 files changed, 28 insertions, 3 deletions
| diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 62425b68d..f2a81a85d 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -106,6 +106,14 @@ class OperationSelect(forms.Form):      remains = forms.ChoiceField(label=_(u"Remains"),                                  choices=models.RemainType.get_types())      year = forms.IntegerField(label=_("Year")) +    start_before = forms.DateField(label=_(u"Started before"), +                                   widget=widgets.JQueryDate) +    start_after = forms.DateField(label=_(u"Started after"), +                                  widget=widgets.JQueryDate) +    end_before = forms.DateField(label=_(u"Ended before"), +                                 widget=widgets.JQueryDate) +    end_after = forms.DateField(label=_(u"Ended after"), +                                widget=widgets.JQueryDate)      end_date = forms.NullBooleanField(label=_(u"Is open?"))      def __init__(self, *args, **kwargs): diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 96fd2efd2..e12b8edd6 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -94,9 +94,15 @@ def get_available_operation_code(request, year=None):  get_operation = get_item(models.Operation, 'get_operation', 'operation',      bool_fields = ['end_date__isnull'], +    dated_fields = ['start_date__lte', 'start_date__gte', +                    'excavation_end_date__lte', 'excavation_end_date__gte'],      extra_request_keys={'common_name':'common_name__icontains',                          'end_date':'end_date__isnull', -                        'year_index':('year', 'operation_code')}) +                        'year_index':('year', 'operation_code'), +                        'start_before':'start_date__lte', +                        'start_after':'start_date__gte', +                        'end_before':'excavation_end_date__lte', +                        'end_after':'excavation_end_date__gte',})  show_operation = show_item(models.Operation, 'operation')  revert_operation = revert_item(models.Operation) diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 4a1a656d9..83833e517 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -173,7 +173,7 @@ HIERARCHIC_LEVELS = 5  HIERARCHIC_FIELDS = ['period', 'unit', 'material_type']  PRIVATE_FIELDS = ('id', 'history_modifier', 'order')  def get_item(model, func_name, default_name, extra_request_keys=[], -                                        base_request={}, bool_fields=[]): +                    base_request={}, bool_fields=[], dated_fields=[]):      """      Generic treatment of tables      """ @@ -213,7 +213,18 @@ def get_item(model, func_name, default_name, extra_request_keys=[],                      dct.pop(k)                  else:                      dct[k] = dct[k] == u"2" and True or False - +        for k in dated_fields: +            if k in dct: +                if not dct[k]: +                    dct.pop(k) +                try: +                    items = dct[k].split('/') +                    assert len(items) == 3 +                    dct[k] = datetime.date(*map(lambda x: int(x), +                                                reversed(items)) +                                            ).strftime('%Y-%m-%d') +                except AssertionError: +                    dct.pop(k)          # manage hierarchic conditions          or_reqs = []          for req in dct.copy(): | 
