diff options
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 |
commit | db6f3f2152bfb480915a63ae04e88f2979d23341 (patch) | |
tree | 5632d4e651df050c97c33574327e40448cdcd721 /ishtar_common/views_item.py | |
parent | 183c1422d978e2b1cbb1d47e0a024dcee57ae3f9 (diff) | |
download | Ishtar-db6f3f2152bfb480915a63ae04e88f2979d23341.tar.bz2 Ishtar-db6f3f2152bfb480915a63ae04e88f2979d23341.zip |
Syndication - search interface
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 61 |
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 |