summaryrefslogtreecommitdiffstats
path: root/askbot/templatetags
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-12-11 14:50:25 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-12-11 14:50:25 -0300
commit2ab5eaf579f39e490a3a36175d47818469eb4807 (patch)
tree3c107667ed1de1a1f3cadd513b274ecb1b894004 /askbot/templatetags
parentb159c234d18c9c1cd4236f5ef37ad89cd284e480 (diff)
parent78429a2ad57c0cb018889f167bb7b9da69ef0125 (diff)
downloadaskbot-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.py52
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