Commit d5337e8e44a8a4fadccbc35da06eb4f5c0d7176d
1 parent
2d13baf3
Exists in
master
and in
39 other branches
adding cumulative filters to thread lists #24
Showing
3 changed files
with
15 additions
and
10 deletions
Show diff stats
src/super_archives/templates/message-list.html
@@ -27,9 +27,12 @@ | @@ -27,9 +27,12 @@ | ||
27 | <h4>{% trans "Lists" %}</h4> | 27 | <h4>{% trans "Lists" %}</h4> |
28 | <ul class="unstyled-list"> | 28 | <ul class="unstyled-list"> |
29 | {% for list in lists %} | 29 | {% for list in lists %} |
30 | - <li {% if list.name == selected_list %} title="{% trans "Remove filter" %}" class="selected" {% endif %}> | ||
31 | - <span class="glyphicon {% if list.name == selected_list %}glyphicon-remove{% else %}glyphicon-chevron-right{% endif %}"></span> <a href="{% ifnotequal list.name selected_list %} {% append_to_get list=list.name p=1 %} {% else %} {% append_to_get list="" p=1 %} | ||
32 | - {% endifnotequal %}">{{ list.name }}</a></li> | 30 | + {% with list.name|add:" "|add:selected_lists as list_name %} |
31 | + <li {% if list.name in selected_lists %} title="{% trans "Remove filter" %}" class="selected" {% endif %}> | ||
32 | + <span class="glyphicon {% if list.name in selected_lists %}glyphicon-remove{% else %}glyphicon-chevron-right{% endif %}"></span> | ||
33 | + <a href="{% if not list.name in selected_lists %}{% append_to_get list=list_name p=1 %}{% else %}{% pop_from_get list=list.name %}{% endif %}">{{ list.name }}</a> | ||
34 | + </li> | ||
35 | + {% endwith %} | ||
33 | {% endfor %} | 36 | {% endfor %} |
34 | </ul> | 37 | </ul> |
35 | </div> | 38 | </div> |
src/super_archives/utils/url.py
@@ -19,6 +19,7 @@ def pop_from_get(path, query=None, **kwargs): | @@ -19,6 +19,7 @@ def pop_from_get(path, query=None, **kwargs): | ||
19 | if query_dict[key] == value: | 19 | if query_dict[key] == value: |
20 | del query_dict[key] | 20 | del query_dict[key] |
21 | continue | 21 | continue |
22 | - if not query_dict: | ||
23 | - return u'{}?q='.format(path) | 22 | + if value in query_dict[key]: |
23 | + aux = query_dict[key].split(value) | ||
24 | + query_dict[key] = u''.join(aux).strip() | ||
24 | return u'{}?{}'.format(path, urllib.urlencode(query_dict)) | 25 | return u'{}?{}'.format(path, urllib.urlencode(query_dict)) |
src/super_archives/views.py
@@ -60,8 +60,9 @@ def thread(request, mailinglist, thread_token): | @@ -60,8 +60,9 @@ def thread(request, mailinglist, thread_token): | ||
60 | 60 | ||
61 | 61 | ||
62 | def list_messages(request): | 62 | def list_messages(request): |
63 | - | ||
64 | - selected_list = request.GET.get('list') | 63 | + selected_lists = request.GET.get('list', []) |
64 | + if selected_lists: | ||
65 | + selected_lists = selected_lists.split() | ||
65 | 66 | ||
66 | order_by = request.GET.get('order') | 67 | order_by = request.GET.get('order') |
67 | if order_by == 'hottest': | 68 | if order_by == 'hottest': |
@@ -69,9 +70,9 @@ def list_messages(request): | @@ -69,9 +70,9 @@ def list_messages(request): | ||
69 | else: | 70 | else: |
70 | threads = queries.get_latest_threads() | 71 | threads = queries.get_latest_threads() |
71 | 72 | ||
72 | - mail_list = request.GET.get('list') | 73 | + mail_list = selected_lists |
73 | if mail_list: | 74 | if mail_list: |
74 | - threads = threads.filter(mailinglist__name=mail_list) | 75 | + threads = threads.filter(mailinglist__name__in=mail_list) |
75 | 76 | ||
76 | paginator = Paginator(threads, 16) | 77 | paginator = Paginator(threads, 16) |
77 | try: | 78 | try: |
@@ -86,7 +87,7 @@ def list_messages(request): | @@ -86,7 +87,7 @@ def list_messages(request): | ||
86 | 'lists': lists, | 87 | 'lists': lists, |
87 | 'n_results': paginator.count, | 88 | 'n_results': paginator.count, |
88 | 'threads': threads, | 89 | 'threads': threads, |
89 | - 'selected_list': selected_list, | 90 | + 'selected_lists': ' '.join(selected_lists) if selected_lists else '', |
90 | 'order_data': settings.ORDERING_DATA, | 91 | 'order_data': settings.ORDERING_DATA, |
91 | } | 92 | } |
92 | return render(request, 'message-list.html', template_data) | 93 | return render(request, 'message-list.html', template_data) |