diff options
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 |