summaryrefslogtreecommitdiff
path: root/ishtar_common/views_item.py
diff options
context:
space:
mode:
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
commite903a17e9ecc79c4f528d997957ed176c15bd60f (patch)
tree89762c922c8bc1c0a585434385d54abcbe2207e6 /ishtar_common/views_item.py
parent2ae9416836be2d8c3f8e27803b49a415f1202144 (diff)
downloadIshtar-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.py46
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,