diff options
Diffstat (limited to 'gitrefinery/templatetags/addurlparameter.py')
-rw-r--r-- | gitrefinery/templatetags/addurlparameter.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gitrefinery/templatetags/addurlparameter.py b/gitrefinery/templatetags/addurlparameter.py new file mode 100644 index 0000000..deca130 --- /dev/null +++ b/gitrefinery/templatetags/addurlparameter.py @@ -0,0 +1,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, 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) |