summaryrefslogtreecommitdiff
path: root/ishtar/ishtar_base/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/ishtar_base/views.py')
-rw-r--r--ishtar/ishtar_base/views.py27
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":