summaryrefslogtreecommitdiff
path: root/ishtar_common/views_item.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-10-28 23:23:26 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:20:59 +0100
commitdb6f3f2152bfb480915a63ae04e88f2979d23341 (patch)
tree5632d4e651df050c97c33574327e40448cdcd721 /ishtar_common/views_item.py
parent183c1422d978e2b1cbb1d47e0a024dcee57ae3f9 (diff)
downloadIshtar-db6f3f2152bfb480915a63ae04e88f2979d23341.tar.bz2
Ishtar-db6f3f2152bfb480915a63ae04e88f2979d23341.zip
Syndication - search interface
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r--ishtar_common/views_item.py61
1 files changed, 34 insertions, 27 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 9ce651f7d..0c766e82e 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -1515,6 +1515,7 @@ def get_item(
model_for_perms=None,
alt_query_own=None,
search_form=None,
+ no_permission_check=False,
):
"""
Generic treatment of tables
@@ -1573,14 +1574,17 @@ def get_item(
if model_for_perms:
model_to_check = model_for_perms
- if return_query:
+ if no_permission_check:
allowed, own = True, False
else:
- allowed, own = check_model_access_control(
- request, model_to_check, available_perms
- )
- if not allowed:
- return HttpResponse(EMPTY, content_type="text/plain")
+ if return_query:
+ allowed, own = True, False
+ else:
+ allowed, own = check_model_access_control(
+ request, model_to_check, available_perms
+ )
+ if not allowed:
+ return HttpResponse(EMPTY, content_type="text/plain")
if force_own:
own = True
@@ -2345,27 +2349,30 @@ def get_item(
return func
-def get_distant_item(model):
- def func(
- request,
- data_type="json",
- full=False,
- force_own=False,
- col_names=None,
- no_link=False,
- no_limit=False,
- return_query=False,
- **dct
+def get_distant_item(
+ request,
+ model,
+ external_source_id
):
- if not request.GET.get("external_source", None):
- return HttpResponse("{}", content_type="text/plain")
- # TODO: check permissions
- try:
- src = models_rest.ApiExternalSource.objects.get(
- pk=request.GET["external_source"])
- except models_rest.ApiExternalSource.DoesNotExist:
- return HttpResponse("{}", content_type="text/plain")
- url = src.url
+ # TODO: check permissions
+ try:
+ src = models_rest.ApiExternalSource.objects.get(
+ pk=external_source_id)
+ except models_rest.ApiExternalSource.DoesNotExist:
+ 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
+ try:
+ response = requests.get(
+ url,
+ params=params,
+ timeout=20,
+ headers={"Authorization": f"Token {src.key}"},
+ )
+ except requests.exceptions.Timeout:
+ return HttpResponse("{}", content_type="text/plain")
+ return HttpResponse(json.dumps(response.json()), content_type="application/json")
- return func