decorators.py
832 Bytes
# -*- coding: utf-8 -*-
from functools import wraps
from django.core.urlresolvers import reverse
def paginated(func):
"Decorator to be used on view functions that use pagination"
@wraps(func)
def new_func(request, *args, **kwargs):
output = func(request, *args, **kwargs)
if not isinstance(output, dict):
return output
paginer = output['paginer']
js_vars = output.get('js_vars', {})
js_vars['paginer'] = dict((id, (d['type'], d['params'], d['action'],
d['group_actions']))
for (id, d) in paginer.dict.iteritems())
js_vars['original_paginer'] = js_vars['paginer']
js_vars['ajax_paginer'] = reverse('get_page_content')
js_vars['ajax_new_filter_row'] = reverse('new_filter_row')
output['js_vars'] = js_vars
return output
return new_func