diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-16 21:59:05 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-16 21:59:05 +0200 | 
| commit | 8b3295457a06ef0a71c23e19d54b4729e68ea2c1 (patch) | |
| tree | c03fa02e2f6807b60af9ef1d626816c839b73983 | |
| parent | 612555172fb11bb89f35e0d5bfb572bb8f3ed1f4 (diff) | |
| download | Ishtar-8b3295457a06ef0a71c23e19d54b4729e68ea2c1.tar.bz2 Ishtar-8b3295457a06ef0a71c23e19d54b4729e68ea2c1.zip | |
Manage OR condition in searches
| -rw-r--r-- | archaeological_operations/views.py | 6 | ||||
| -rw-r--r-- | ishtar_common/views.py | 12 | 
2 files changed, 15 insertions, 3 deletions
| diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 1ce4c4622..e5bf16ce8 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -103,8 +103,10 @@ get_operation = get_item(models.Operation, 'get_operation', 'operation',                          'start_after':'start_date__gte',                          'end_before':'excavation_end_date__lte',                          'end_after':'excavation_end_date__gte', -                        'parcel_0':'parcels__section', -                        'parcel_1':'parcels__parcel_number', +                        'parcel_0':('parcels__section', +                                    'associated_file__parcels__section'), +                        'parcel_1':('parcels__parcel_number', +                                    'associated_file__parcels__parcel_number'),                          },      )  show_operation = show_item(models.Operation, 'operation') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 42e826103..346edc0d7 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -229,7 +229,17 @@ def get_item(model, func_name, default_name, extra_request_keys=[],          or_reqs = []          for req in dct.copy():              for k_hr in HIERARCHIC_FIELDS: -                if req.endswith(k_hr + '__pk'): +                if type(req) in (list, tuple): +                    val = dct.pop(req) +                    q = None +                    for idx, r in enumerate(req): +                        if not idx: +                            q = Q(**{r:val}) +                        else: +                            q = q | Q(**{r:val}) +                    or_reqs.append(q) +                    break +                elif req.endswith(k_hr + '__pk'):                      val = dct.pop(req)                      reqs = Q(**{req:val})                      req = req[:-2] + '__' | 
