diff options
Diffstat (limited to 'ishtar/ishtar_base/views.py')
-rw-r--r-- | ishtar/ishtar_base/views.py | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/ishtar/ishtar_base/views.py b/ishtar/ishtar_base/views.py index 56860fdaf..46a1b0001 100644 --- a/ishtar/ishtar_base/views.py +++ b/ishtar/ishtar_base/views.py @@ -202,6 +202,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], dct.pop(k) else: dct[k] = dct[k] == u"2" and True or False + # manage hierarchic conditions or_reqs = [] for req in dct.copy(): @@ -221,6 +222,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], query = query & or_req items = model.objects.filter(query) q = request_items.get('sidx') + # manage sort tables if q and q in request_keys: ks = request_keys[q] @@ -236,6 +238,25 @@ def get_item(model, func_name, default_name, extra_request_keys=[], k = k.split('__')[0] orders.append(sign+k) items = items.order_by(*orders) + + # pager management + start, end = 0, None + page_nb = 1 + try: + row_nb = int(request_items.get('rows')) + except ValueError: + row_nb = None + if row_nb: + try: + page_nb = int(request_items.get('page')) + assert page_nb >= 1 + except (ValueError, AssertionError): + pass + start = (page_nb-1)*row_nb + end = page_nb*row_nb + items_nb = items.count() + items = items[start:end] + datas = [] if old: items = [item.get_previous(old) for item in items] @@ -279,8 +300,10 @@ def get_item(model, func_name, default_name, extra_request_keys=[], res[table_cols[idx].split('.')[-1]] = value rows.append(res) data = json.dumps({ - "records":len(items), - "rows":rows + "records":items_nb, + "rows":rows, + "page":page_nb, + "total":items_nb/row_nb + 1, }) return HttpResponse(data, mimetype='text/plain') elif data_type == "csv": |