]> git.0d.be Git - panikweb.git/blobdiff - panikweb/paniktags/templatetags/paniktags.py
browse sounds using format rather than emission categories
[panikweb.git] / panikweb / paniktags / templatetags / paniktags.py
index cfb52ff407829d49510b25aa4a48395187cd0d5f..8e786eabf48feb8e2179b4dc44e7d46b1026a935 100644 (file)
@@ -216,10 +216,10 @@ def replace ( string, args ):
 
     return re.sub( search, replace, string )
 
-@register.filter
-def remove_tag_facet(url, facet):
+
+def remove_facet(facet_id, url, facet):
     scheme, netloc, path, query, fragment = list(urlparse.urlsplit(str(url)))
-    facet = 'tags_exact:%s' % facet.encode('utf-8')
+    facet = '%s_exact:%s' % (facet_id, 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)]
@@ -227,51 +227,46 @@ def remove_tag_facet(url, facet):
     url = urlparse.urlunsplit([scheme, netloc, path, query, None])
     return re.sub(r'&page=\d+', '', url)
 
+@register.filter
+def remove_tag_facet(url, facet):
+    return remove_facet('tags', url, facet)
 
 @register.filter
 def remove_category_facet(url, 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)
+    return remove_facet('categories', url, facet)
 
 
 @register.filter
 def remove_news_category_facet(url, facet):
-    scheme, netloc, path, query, fragment = list(urlparse.urlsplit(str(url)))
-    facet = 'news_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)
-
+    return remove_facet('news_categories', url, facet)
 
 @register.filter
-def append_tag_facet(url, facet):
+def remove_format_facet(url, facet):
+    return remove_facet('format', url, facet)
+
+
+def append_facet(facet_id, 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)
+    return re.sub(r'&page=\d+', '', url + '&selected_facets=%s_exact:%s' % (facet_id, facet))
+
+@register.filter
+def append_tag_facet(url, facet):
+    return append_facet('tags', url, 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)
+    return append_facet('categories', url, facet)
 
 @register.filter
 def append_news_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=news_categories_exact:%s' % facet)
+    return append_facet('news_categories', url, facet)
+
+@register.filter
+def append_format_facet(url, facet):
+    return append_facet('format', url, facet)
+
 
 @register.tag
 def search_result_template(parser, token):