]> git.0d.be Git - panikweb.git/blobdiff - panikweb/paniktags/templatetags/paniktags.py
add categories to sound page
[panikweb.git] / panikweb / paniktags / templatetags / paniktags.py
index f836f10564f04ac35d8f03dc0d2bb0ca6c9d426d..2527ba10eb295530a13f206ca8d933d26c3fe7c0 100644 (file)
@@ -2,6 +2,7 @@ import email.utils
 import datetime
 import re
 import time
+import urlparse
 import urllib2
 import uuid
 
@@ -175,18 +176,27 @@ def remove_tag_facet(url, facet):
 
 @register.filter
 def remove_category_facet(url, facet):
-    facet = urllib2.quote(facet.encode('utf-8'), safe='')
-    return re.sub(r'&page=\d+', '', url.replace('&selected_facets=categories_exact:%s' % facet, ''))
-
+    scheme, netloc, path, query, fragment = list(urlparse.urlsplit(str(url)))
+    facet = 'categories_exact:%s' % facet.encode('utf-8')
+    query_string = urlparse.parse_qsl(query)
+    query_string = [x for x in query_string if not (
+        x[0] == 'selected_facets' and x[1] == facet)]
+    query = '&'.join(['%s=%s' % x for x in query_string])
+    url = urlparse.urlunsplit([scheme, netloc, path, query, None])
+    return re.sub(r'&page=\d+', '', url)
 
 @register.filter
 def append_tag_facet(url, facet):
     facet = urllib2.quote(facet.encode('utf-8'), safe='')
+    if not '?' in url:
+        url = url + '?'
     return re.sub(r'&page=\d+', '', url + '&selected_facets=tags_exact:%s' % facet)
 
 @register.filter
 def append_category_facet(url, facet):
     facet = urllib2.quote(facet.encode('utf-8'), safe='')
+    if not '?' in url:
+        url = url + '?'
     return re.sub(r'&page=\d+', '', url + '&selected_facets=categories_exact:%s' % facet)