diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-09 00:05:51 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-09 00:05:51 +0200 |
commit | 51f31dd7dfd62c2d9de75e83ccf1727190514157 (patch) | |
tree | 00c30cef25b67be3bf7bd788af800806259b5bc1 /ishtar_common/views_item.py | |
parent | 647546deffb5152cebbaed3b0bf5bed309d59fc5 (diff) | |
download | Ishtar-51f31dd7dfd62c2d9de75e83ccf1727190514157.tar.bz2 Ishtar-51f31dd7dfd62c2d9de75e83ccf1727190514157.zip |
Serialization: manage export action in admin - optimizations
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index f330e26b7..62aff2e81 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -1298,7 +1298,8 @@ def get_item(model, func_name, default_name, extra_request_keys=None, :return: """ def func(request, data_type='json', full=False, force_own=False, - col_names=None, no_link=False, no_limit=False, **dct): + col_names=None, no_link=False, no_limit=False, return_query=False, + **dct): available_perms = [] if specific_perms: available_perms = specific_perms[:] @@ -1321,8 +1322,11 @@ def get_item(model, func_name, default_name, extra_request_keys=None, if model_for_perms: model_to_check = model_for_perms - allowed, own = check_model_access_control(request, model_to_check, - available_perms) + 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') @@ -1425,7 +1429,7 @@ def get_item(model, func_name, default_name, extra_request_keys=None, request_keys.update(my_extra_request_keys) # manage search on json fields and excluded fields - if search_form and request.user and getattr( + if search_form and request and request.user and getattr( request.user, 'ishtaruser', None): available, excluded_fields, json_fields = \ search_form.check_custom_form(request.user.ishtaruser) @@ -1531,7 +1535,7 @@ def get_item(model, func_name, default_name, extra_request_keys=None, dct, pinned_search = _manage_default_search( dct, request, model, default_name, my_base_request, my_relative_session_names) - elif func_name: + elif func_name and request: request.session[func_name] = dct for k in request_keys: @@ -1633,6 +1637,10 @@ def get_item(model, func_name, default_name, extra_request_keys=None, for extra in extras: items = items.extra(**extra) + + if return_query: + return items + items = items.distinct() items_nb = items.values('pk').aggregate(Count('pk'))['pk__count'] |