diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-01-31 13:20:05 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-01-31 13:20:05 +0100 | 
| commit | 2e1508b4f676fb6f71c0ca76dc59616215d3ae22 (patch) | |
| tree | a4edcc7bdbf8a596d631f6158cdd2aadcce98a79 /ishtar_common/views.py | |
| parent | 9115fc3c41526a9a3419139997530f4fd0916ebc (diff) | |
| download | Ishtar-2e1508b4f676fb6f71c0ca76dc59616215d3ae22.tar.bz2 Ishtar-2e1508b4f676fb6f71c0ca76dc59616215d3ae22.zip | |
Tables: fix length filtering
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 29 | 
1 files changed, 20 insertions, 9 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index e8a7efb40..8db0e9460 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -632,7 +632,7 @@ def _get_values(request, val):  DEFAULT_ROW_NUMBER = 10 -# length is used by ajax DataTable call and can be ambiguous for some models +# length is used by ajax DataTables requests  EXCLUDED_FIELDS = ['length'] @@ -728,9 +728,24 @@ def get_item(model, func_name, default_name, extra_request_keys=[],          request_keys.update(my_extra_request_keys)          request_items = request.method == 'POST' and request.POST \              or request.GET -        request_items = dict( -            [(k, request_items[k]) -             for k in request_items if k not in EXCLUDED_FIELDS]) + +        # pager +        try: +            row_nb = int(request_items.get('length')) +        except (ValueError, TypeError): +            row_nb = DEFAULT_ROW_NUMBER +        dct_request_items = {} + +        # filter requested fields +        for k in request_items: +            if k in EXCLUDED_FIELDS: +                continue +            key = k[:] +            if key.startswith('searchprefix_'): +                key = key[len('searchprefix_'):] +            dct_request_items[key] = request_items[k] +        request_items = dct_request_items +          dct = my_base_request          if full == 'shortcut':              dct['cached_label__icontains'] = request.GET.get('term', None) @@ -1046,11 +1061,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],          # pager management          start, end = 0, None          page_nb = 1 -        try: -            row_nb = int(request_items.get('length')) -        except (ValueError, TypeError): -            row_nb = DEFAULT_ROW_NUMBER -        if row_nb: +        if row_nb and data_type == "json":              try:                  start = int(request_items.get('start'))                  page_nb = start / row_nb + 1 | 
