diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-12-11 14:50:25 -0300 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-12-11 14:50:25 -0300 |
commit | 2ab5eaf579f39e490a3a36175d47818469eb4807 (patch) | |
tree | 3c107667ed1de1a1f3cadd513b274ecb1b894004 /askbot/templatetags | |
parent | b159c234d18c9c1cd4236f5ef37ad89cd284e480 (diff) | |
parent | 78429a2ad57c0cb018889f167bb7b9da69ef0125 (diff) | |
download | askbot-2ab5eaf579f39e490a3a36175d47818469eb4807.tar.gz askbot-2ab5eaf579f39e490a3a36175d47818469eb4807.tar.bz2 askbot-2ab5eaf579f39e490a3a36175d47818469eb4807.zip |
merged Rosandras navigation branch to Tomasz models work
Diffstat (limited to 'askbot/templatetags')
-rw-r--r-- | askbot/templatetags/extra_filters.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/askbot/templatetags/extra_filters.py b/askbot/templatetags/extra_filters.py index ffdfd9d8..7bf3a8af 100644 --- a/askbot/templatetags/extra_filters.py +++ b/askbot/templatetags/extra_filters.py @@ -5,6 +5,7 @@ from askbot import exceptions as askbot_exceptions from askbot import auth from askbot.conf import settings as askbot_settings from askbot.utils.slug import slugify +import urllib2 register = template.Library() @@ -156,3 +157,54 @@ def humanize_counter(number): @register.filter def absolute_value(number): return abs(number) + + +@register.filter +def replace_in_url(query_string, param): + type, value = param.split(':') + params = query_string.rstrip('/').split('/') + + for p in params: + if type in p: + params[params.index(p)] = param + + query_string = '/'.join(params)+'/' + return query_string + +@register.filter +def add_tag_to_url(query_string, param): + if query_string: + params = query_string.rstrip('/').split('/') + flag = False + + tags = [s for s in params if "tags:" in s] + if tags: + tags = tags[0] + flag = True + type, value = tags.split(':') + values = value.split('+') + if not urllib2.unquote(param) in values: + values.append(param) + values = [urllib2.quote(value) for value in values] + params[params.index(tags)] = 'tags:'+'+'.join(values) + + if not flag: + author = [s for s in params if "author:" in s] + if author: + author = author[0] + params.insert(params.index(author), 'tags:'+param) + else: + params.append('tags:'+param) + query_string = '/'.join(params)+'/' + return query_string + +@register.filter +def remove_from_url(query_string, param_type): + if query_string: + params = query_string.rstrip('/').split('/') + new_params = [] + for p in params: + if not p.startswith(param_type): + new_params.append(p) + query_string = '/'.join(new_params)+'/' + return query_string |