X-Git-Url: https://git.mdrn.pl/django-pagination.git/blobdiff_plain/4a48e40bd0a9a3bf0e8c8b7671e01508b2115bc0..8c95843553cbeb10f1fd6c77767d44997f90c1e6:/fnp_django_pagination/templatetags/pagination_tags.py diff --git a/fnp_django_pagination/templatetags/pagination_tags.py b/fnp_django_pagination/templatetags/pagination_tags.py index 12d8324..b47bd12 100644 --- a/fnp_django_pagination/templatetags/pagination_tags.py +++ b/fnp_django_pagination/templatetags/pagination_tags.py @@ -214,8 +214,9 @@ def do_paginate(parser, token): argv = token.split_contents() argc = len(argv) template = None - window=DEFAULT_WINDOW - margin=DEFAULT_MARGIN + window = DEFAULT_WINDOW + margin = DEFAULT_MARGIN + ignored_vars = [] i = 1 while i < argc: if argv[i] == 'using': @@ -227,14 +228,17 @@ def do_paginate(parser, token): elif argv[i] == 'margin': margin = argv[i + 1] i += 2 + elif argv[i] == 'ignore': + ignored_vars.append(argv[i + 1]) + i += 2 else: raise TemplateSyntaxError( "Invalid syntax. Proper usage of this tag is: " "{% paginate [using \"TEMPLATE\"] %}") - return PaginateNode(template, window, margin) + return PaginateNode(template, window, margin, ignored_vars) -def paginate(context, window=DEFAULT_WINDOW, margin=DEFAULT_MARGIN): +def paginate(context, window=DEFAULT_WINDOW, margin=DEFAULT_MARGIN, ignored_vars=None): """ Renders the ``pagination/pagination.html`` template, resulting in a Digg-like display of the available pages, given the current page. If there @@ -270,6 +274,15 @@ def paginate(context, window=DEFAULT_WINDOW, margin=DEFAULT_MARGIN): window=2, margin=0, current=11 ... 7 8 9 10 [11] """ + try: + window = int(window) + except ValueError: + window = Variable(window).resolve(context) + try: + margin = int(margin) + except ValueError: + margin = Variable(margin).resolve(context) + if window < 0: raise ValueError('Parameter "window" cannot be less than zero') if margin < 0: @@ -277,14 +290,6 @@ def paginate(context, window=DEFAULT_WINDOW, margin=DEFAULT_MARGIN): try: paginator = context['paginator'] page_obj = context['page_obj'] - try: - window = int(window) - except ValueError: - window = Variable(window).resolve(context) - try: - margin = int(margin) - except ValueError: - margin = Variable(margin).resolve(context) page_suffix = context.get('page_suffix', '') page_range = list(paginator.page_range) # Calculate the record range in the current page for display. @@ -348,6 +353,10 @@ def paginate(context, window=DEFAULT_WINDOW, margin=DEFAULT_MARGIN): } if 'request' in context: getvars = context['request'].GET.copy() + if ignored_vars: + for v in ignored_vars: + if v in getvars: + del getvars[v] if 'page%s' % page_suffix in getvars: del getvars['page%s' % page_suffix] if len(getvars.keys()) > 0: