diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/admin.py | 4 | ||||
-rw-r--r-- | ishtar_common/views_item.py | 24 | ||||
-rw-r--r-- | ishtar_common/wizards.py | 2 |
3 files changed, 27 insertions, 3 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index daee5d521..bb8daa372 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -2338,10 +2338,10 @@ class ApiKeyMatchAdmin(admin.ModelAdmin): "source", "search_model", "associated_type", - "distant_slug", - "distant_label", "local_slug", "local_label", + "distant_slug", + "distant_label", "do_not_match", ] list_filter = ["source", "do_not_match"] 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, diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 80054ca0c..5f3606a5e 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -121,7 +121,7 @@ class IshtarWizard(NamedUrlWizardView): ) if ( self.model - and hasattr(form, "field") + and hasattr(form, "fields") and "pk" in form.fields and self.request.session.get("EXTERNAL_SOURCES", {}) ): |