summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_warehouse/views.py47
-rw-r--r--ishtar_common/views_item.py2
2 files changed, 25 insertions, 24 deletions
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index 54390aca9..e79e291ec 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -186,29 +186,30 @@ def autocomplete_container(request, warehouse_id=None):
query &= Q(location__name__icontains=splitted[idx])
# group by container type, ref tuple
# can be in any order
- for positions in itertools.permutations(type_positions):
- groups = []
- for idx, (container_type_id, pos_inf, pos_sup) in enumerate(positions):
- next_positions = [p[1] for p in positions
- if p[0] != container_type_id and p[1] > pos_sup]
- if not next_positions:
- value = " ".join(splitted[pos_sup:])
- else:
- value = " ".join(splitted[pos_sup:min(next_positions)])
- if value:
- groups.append((container_type_id, value))
- query = base_query
- for idx, g in enumerate(groups):
- base_key = "parent__" * idx
- key1 = base_key + "container_type_id"
- key2 = base_key + "reference__unaccent__iexact"
- query &= Q(**{key1: g[0], key2: g[1]})
- ids = {c["id"] for c in containers}
- containers += list(
- models.Container.objects.filter(query)
- .exclude(pk__in=ids)
- .values("id", "cached_label")[:limit]
- )
+ if type_positions:
+ for positions in itertools.permutations(type_positions):
+ groups = []
+ for idx, (container_type_id, pos_inf, pos_sup) in enumerate(positions):
+ next_positions = [p[1] for p in positions
+ if p[0] != container_type_id and p[1] > pos_sup]
+ if not next_positions:
+ value = " ".join(splitted[pos_sup:])
+ else:
+ value = " ".join(splitted[pos_sup:min(next_positions)])
+ if value:
+ groups.append((container_type_id, value))
+ query = base_query
+ for idx, g in enumerate(groups):
+ base_key = "parent__" * idx
+ key1 = base_key + "container_type_id"
+ key2 = base_key + "reference__unaccent__iexact"
+ query &= Q(**{key1: g[0], key2: g[1]})
+ ids = {c["id"] for c in containers}
+ containers += list(
+ models.Container.objects.filter(query)
+ .exclude(pk__in=ids)
+ .values("id", "cached_label")[:limit]
+ )
if len(splitted) > 1 and len(containers) < 15:
# group to do a "type" "reference" search
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 17937b6b0..2d07cf07b 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -1203,7 +1203,7 @@ def _manage_default_search(
):
pinned_search = ""
pin_key = "pin-search-" + default_name
- base_request = my_base_request or {}
+ base_request = my_base_request if isinstance(my_base_request, dict) else {}
dct = {k: v for k, v in dct.items() if v}
if pin_key in request.session and request.session[pin_key]: # a search is pinned
pinned_search = request.session[pin_key]