diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-09-23 20:02:52 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-09-23 20:02:52 +0200 | 
| commit | 41eda5d5c8e0497a760ad296cd30a014da1e64d5 (patch) | |
| tree | 0418df48530c1fa1e887fd197a6dc325bde87afb /ishtar/ishtar_base/views.py | |
| parent | 5744f200bfc3bce95eb1254ae9c85dc9eef32752 (diff) | |
| download | Ishtar-41eda5d5c8e0497a760ad296cd30a014da1e64d5.tar.bz2 Ishtar-41eda5d5c8e0497a760ad296cd30a014da1e64d5.zip | |
Manage pagination on jquery tables (closes #642)
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": | 
