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 | 344c17b51e13a273e8b6e80d67cfa112d1ea6926 (patch) | |
| tree | 00c30cef25b67be3bf7bd788af800806259b5bc1 /ishtar_common/views_item.py | |
| parent | 76b5d6bf028389be2e9ac421478b868c4f5e7899 (diff) | |
| download | Ishtar-344c17b51e13a273e8b6e80d67cfa112d1ea6926.tar.bz2 Ishtar-344c17b51e13a273e8b6e80d67cfa112d1ea6926.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'] | 
