summaryrefslogtreecommitdiff
path: root/ishtar_common/views_item.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r--ishtar_common/views_item.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 468312046..242e57b2a 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -2408,11 +2408,35 @@ def get_distant_item(
return HttpResponse("{}", content_type="text/plain")
url = src.url
url += reverse(f"api-search-{model}")
+
params = {k: v for k, v in dict(request.GET).items() if not k.startswith("columns")}
params["submited"] = 1
params["data_type"] = "json"
if data_type:
params["data_type"] = data_type
+ if "search_vector" in params and params["search_vector"]:
+ search_vector = params["search_vector"][0]
+ match = RE_FACET.search(search_vector)
+ final_search_vector = ""
+ while match:
+ key, value, __ = match.groups()
+ q = models_rest.ApiKeyMatch.objects.filter(
+ source=src,
+ search_model__model__iexact=model,
+ search_keys__contains=[key],
+ local_label=value
+ )
+ up, down = match.span()
+ if q.count():
+ api_key = q.all()[0]
+ final_search_vector += search_vector[0:up]
+ final_search_vector += f'{key}="{api_key.distant_label}" '
+ else:
+ final_search_vector += search_vector[0:down] + " "
+ search_vector = search_vector[down:]
+ match = RE_FACET.search(search_vector)
+ final_search_vector += search_vector
+ params["search_vector"] = [final_search_vector]
try:
response = requests.get(
url,