From d5337e8e44a8a4fadccbc35da06eb4f5c0d7176d Mon Sep 17 00:00:00 2001 From: Luan Date: Mon, 21 Oct 2013 12:46:31 -0200 Subject: [PATCH] adding cumulative filters to thread lists #24 --- src/super_archives/templates/message-list.html | 9 ++++++--- src/super_archives/utils/url.py | 5 +++-- src/super_archives/views.py | 11 ++++++----- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/super_archives/templates/message-list.html b/src/super_archives/templates/message-list.html index 0c7a16c..0982942 100644 --- a/src/super_archives/templates/message-list.html +++ b/src/super_archives/templates/message-list.html @@ -27,9 +27,12 @@

{% trans "Lists" %}

diff --git a/src/super_archives/utils/url.py b/src/super_archives/utils/url.py index bf40280..38f5402 100644 --- a/src/super_archives/utils/url.py +++ b/src/super_archives/utils/url.py @@ -19,6 +19,7 @@ def pop_from_get(path, query=None, **kwargs): if query_dict[key] == value: del query_dict[key] continue - if not query_dict: - return u'{}?q='.format(path) + if value in query_dict[key]: + aux = query_dict[key].split(value) + query_dict[key] = u''.join(aux).strip() return u'{}?{}'.format(path, urllib.urlencode(query_dict)) diff --git a/src/super_archives/views.py b/src/super_archives/views.py index df44133..a53ff5c 100644 --- a/src/super_archives/views.py +++ b/src/super_archives/views.py @@ -60,8 +60,9 @@ def thread(request, mailinglist, thread_token): def list_messages(request): - - selected_list = request.GET.get('list') + selected_lists = request.GET.get('list', []) + if selected_lists: + selected_lists = selected_lists.split() order_by = request.GET.get('order') if order_by == 'hottest': @@ -69,9 +70,9 @@ def list_messages(request): else: threads = queries.get_latest_threads() - mail_list = request.GET.get('list') + mail_list = selected_lists if mail_list: - threads = threads.filter(mailinglist__name=mail_list) + threads = threads.filter(mailinglist__name__in=mail_list) paginator = Paginator(threads, 16) try: @@ -86,7 +87,7 @@ def list_messages(request): 'lists': lists, 'n_results': paginator.count, 'threads': threads, - 'selected_list': selected_list, + 'selected_lists': ' '.join(selected_lists) if selected_lists else '', 'order_data': settings.ORDERING_DATA, } return render(request, 'message-list.html', template_data) -- libgit2 0.21.2