Python 3, Django 1.7+ compatilibity, some tests.
[fnpdjango.git] / fnpdjango / templatetags / fnp_prevnext.py
1 from copy import copy
2 from django.template import Library
3
4 try:
5     from urllib.parse import urlencode
6 except ImportError:
7     from urllib import urlencode
8
9
10 register = Library()
11
12
13 @register.inclusion_tag('fnpdjango/prevnext/previous.html', takes_context=True)
14 def previous_page(context, fallback=None, fallback_title=None):
15     current = context['page_obj'].number
16     if current > 1:
17         get_dict = copy(context['request'].GET)
18         get_dict['page'] = current - 1
19         return {'number': current - 1, 'title': None, 'url': None,
20                 'get_dict': urlencode(get_dict)}
21     else:
22         return {'number': None, 'title': fallback_title, 'url': fallback}
23
24
25 @register.inclusion_tag('fnpdjango/prevnext/next.html', takes_context=True)
26 def next_page(context, fallback=None, fallback_title=None):
27     current = context['page_obj'].number
28     page_range = context['paginator'].page_range
29     if current < page_range[-1]:
30         get_dict = copy(context['request'].GET)
31         get_dict['page'] = current + 1
32         return {'number': current + 1, 'title': None, 'url': None,
33                 'get_dict': urlencode(get_dict)}
34     else:
35         return {'number': None, 'title': fallback_title, 'url': fallback}
36
37
38 @register.inclusion_tag('fnpdjango/prevnext/prevnext.html', takes_context=True)
39 def prevnext(context):
40     return context