decorators.py
984 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')
js_vars['ajax_dynamic_field'] = reverse('field_form')
output['js_vars'] = js_vars
return output
return new_func