diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-12-06 16:18:27 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:20:59 +0100 |
commit | e903a17e9ecc79c4f528d997957ed176c15bd60f (patch) | |
tree | 89762c922c8bc1c0a585434385d54abcbe2207e6 /ishtar_common/views_item.py | |
parent | 2ae9416836be2d8c3f8e27803b49a415f1202144 (diff) | |
download | Ishtar-e903a17e9ecc79c4f528d997957ed176c15bd60f.tar.bz2 Ishtar-e903a17e9ecc79c4f528d997957ed176c15bd60f.zip |
Syndication - translate queries before passing them to external source - tests
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 242e57b2a..88f20020b 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -1886,7 +1886,7 @@ def get_item( my_base_request, my_relative_session_names, ) - elif func_name and request: + elif func_name and request and hasattr(request, "session"): request.session[func_name] = dct for k in request_keys: @@ -2394,26 +2394,7 @@ def get_item( return func -def get_distant_item( - request, - model, - external_source_id, - data_type=None - ): - # TODO: check permissions - try: - src = models_rest.ApiExternalSource.objects.get( - pk=external_source_id) - except (models_rest.ApiExternalSource.DoesNotExist, ValueError): - 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 +def adapt_distant_search(params, src, model): if "search_vector" in params and params["search_vector"]: search_vector = params["search_vector"][0] match = RE_FACET.search(search_vector) @@ -2437,6 +2418,29 @@ def get_distant_item( match = RE_FACET.search(search_vector) final_search_vector += search_vector params["search_vector"] = [final_search_vector] + + +def get_distant_item( + request, + model, + external_source_id, + data_type=None + ): + # TODO: check permissions + try: + src = models_rest.ApiExternalSource.objects.get( + pk=external_source_id) + except (models_rest.ApiExternalSource.DoesNotExist, ValueError): + 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 + adapt_distant_search(params, src, model) try: response = requests.get( url, |