aboutsummaryrefslogtreecommitdiffstats
path: root/layerindex/templatetags/addurlparameter.py
blob: cfebd411670db55c2d8b18fb51c6c0c5c8e483ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Borrowed from http://djangosnippets.org/snippets/361/
# Original author: johan de taeye
# With modifications from Ludwik Trammer
#
# Adds GET parameters to the current URL

from django.template import Library, Node, resolve_variable, TemplateSyntaxError, Variable

register = Library()

class AddParameter(Node):
    def __init__(self, varname, value):
        self.varname = Variable(varname)
        self.value = Variable(value)

    def render(self, context):
        req = Variable('request').resolve(context)
        params = req.GET.copy()
        params[self.varname.resolve(context)] = self.value.resolve(context)
        return '%s?%s' % (req.path, params.urlencode())

def addurlparameter(parser, token):
    from re import split
    bits = split(r'\s+', token.contents, 2)
    if len(bits) < 2:
        raise TemplateSyntaxError("'%s' tag requires two arguments" % bits[0])
    return AddParameter(bits[1],bits[2])

register.tag('addurlparameter', addurlparameter)