diff options
Diffstat (limited to 'saleor/core/templatetags/shop.py')
-rw-r--r-- | saleor/core/templatetags/shop.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/saleor/core/templatetags/shop.py b/saleor/core/templatetags/shop.py index f5318703..598baa6e 100644 --- a/saleor/core/templatetags/shop.py +++ b/saleor/core/templatetags/shop.py @@ -1,9 +1,12 @@ +from __future__ import unicode_literals try: from itertools import zip_longest except ImportError: from itertools import izip_longest as zip_longest from django.template import Library +from django.utils.http import urlencode + register = Library() @@ -13,3 +16,14 @@ def slice(items, group_size=1): args = [iter(items)] * group_size return (filter(None, group) for group in zip_longest(*args, fillvalue=None)) + + +@register.simple_tag(takes_context=True) +def get_sort_by_url(context, field, descending=False): + request = context['request'] + request_get = request.GET.dict() + if descending: + request_get['sort_by'] = '-' + field + else: + request_get['sort_by'] = field + return '%s?%s' % (request.path, urlencode(request_get)) |