diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-01-27 09:54:19 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:24 +0100 | 
| commit | 9782817d3b77a8dd1485909923723e0b90c1282f (patch) | |
| tree | 1270c29b16fdeca40845a6602fc1cf33e50de23f | |
| parent | f60cba3868bc754447bf9573345e74ea0fa3b2b1 (diff) | |
| download | Ishtar-9782817d3b77a8dd1485909923723e0b90c1282f.tar.bz2 Ishtar-9782817d3b77a8dd1485909923723e0b90c1282f.zip  | |
Container autocomplete: fix no location search - deduplicate
| -rw-r--r-- | archaeological_warehouse/views.py | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index a67af5925..bc8bac127 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -117,8 +117,10 @@ def autocomplete_container(request, warehouse_id=None):                      container_type__label__unaccent__iexact=" ".join(group_1),                      reference__unaccent__iexact=" ".join(group_2))                  query = base_query & extra +                ids = set([c["id"] for c in containers])                  containers += list(models.Container.objects.filter( -                    query).values('id', 'cached_label')[:limit]) +                    query).exclude(pk__in=ids).values('id', 'cached_label')[ +                                   :limit])                  if (15 - len(containers)) <= 0:                      break          if (15 - len(containers)) > 0: @@ -126,8 +128,9 @@ def autocomplete_container(request, warehouse_id=None):              for q in splitted:                  extra = Q(reference__unaccent__iexact=q)                  query = query & extra +            ids = set([c["id"] for c in containers])              containers += list(models.Container.objects.filter( -                query).values('id', 'cached_label')[:limit]) +                query).exclude(pk__in=ids).values('id', 'cached_label')[:limit])              limit = 15 - len(containers)              if limit > 0:                  query = base_query @@ -137,12 +140,13 @@ def autocomplete_container(request, warehouse_id=None):                          Q(reference__unaccent__icontains=q) | \                          Q(cached_label__unaccent__icontains=q)                      if not warehouse_id: -                        extra |= Q(location__unaccent__name=q) | Q( -                            location__unaccent__town=q) +                        extra |= Q(location__name__unaccent=q) | Q( +                            location__town__unaccent=q)                      query = query & extra +                ids = set([c["id"] for c in containers])                  containers += list(                      models.Container.objects.filter(query).exclude( -                        pk__in=[c['id'] for c in containers] +                        pk__in=ids                      ).values('id', 'cached_label')[:limit])      data = json.dumps(          [{'id': container['id'], 'value': container['cached_label']}  | 
