diff options
author | Pierre-Yves Chibon <pingou@pingoured.fr> | 2012-04-05 07:41:20 +0200 |
---|---|---|
committer | Pierre-Yves Chibon <pingou@pingoured.fr> | 2012-04-05 07:41:20 +0200 |
commit | 643b3b8241e24a2a582b2b91c45f93c9e799b7ac (patch) | |
tree | f26302dc23fb6d2ffa0289f4064a348e3f916851 | |
parent | b754c3085cee6212a661178c56b3abb85e96f186 (diff) | |
download | hyperkitty-643b3b8241e24a2a582b2b91c45f93c9e799b7ac.tar.gz hyperkitty-643b3b8241e24a2a582b2b91c45f93c9e799b7ac.tar.xz hyperkitty-643b3b8241e24a2a582b2b91c45f93c9e799b7ac.zip |
Fix the search to work properly with the pagination and have nice urls
-rw-r--r-- | templates/search.html | 4 | ||||
-rw-r--r-- | urls.py | 7 | ||||
-rw-r--r-- | views/pages.py | 17 |
3 files changed, 13 insertions, 15 deletions
diff --git a/templates/search.html b/templates/search.html index af17f3e..f2fa699 100644 --- a/templates/search.html +++ b/templates/search.html @@ -21,7 +21,7 @@ <div class="pagination"> <span class="step-links"> {% if threads.has_previous %} - <a href="?{{ query_string }}&page={{ threads.previous_page_number }}">previous</a> + <a href="?page={{ threads.previous_page_number }}">previous</a> {% endif %} <span class="current"> @@ -29,7 +29,7 @@ </span> {% if threads.has_next %} - <a href="?{{ query_string }}&page={{ threads.next_page_number }}">next</a> + <a href="?page={{ threads.next_page_number }}">next</a> {% endif %} </span> </div> @@ -31,9 +31,10 @@ urlpatterns = patterns('', url(r'^message/(?P<mlist_fqdn>.*@.*)/(?P<messageid>.+)$', 'views.pages.message'), # Search #url(r'^search$', 'views.pages.search'), - url(r'^search/(?P<mlist_fqdn>.*@.*)$', 'views.pages.search_keyword'), - url(r'^search/(?P<mlist_fqdn>.*@.*)/$', 'views.pages.search_keyword'), - url(r'^search/(?P<mlist_fqdn>.*@.*)\/(?P<keyword>.*)$', 'views.pages.search_keyword'), + url(r'^search/(?P<mlist_fqdn>.*@.*)\/(?P<target>.*)\/(?P<keyword>.*)$', 'views.pages.search_keyword'), + url(r'^search/(?P<mlist_fqdn>.*@.*)\/(?P<target>.*)\/(?P<keyword>.*)/$', 'views.pages.search_keyword'), + url(r'^search/(?P<mlist_fqdn>.*@.*)$', 'views.pages.search'), + url(r'^search/(?P<mlist_fqdn>.*@.*)/$', 'views.pages.search'), url(r'^tag/(?P<mlist_fqdn>.*@.*)\/(?P<tag>.*)$', 'views.pages.search_tag'), # mockups: url(r'^mockup/$', 'views.mockup.index'), diff --git a/views/pages.py b/views/pages.py index 8f60067..149364c 100644 --- a/views/pages.py +++ b/views/pages.py @@ -200,7 +200,7 @@ def message (request, mlist_fqdn, messageid): }) return HttpResponse(t.render(c)) -def _search_results_page(request, mlist_fqdn, query_string, query_string_variables, search_type): +def _search_results_page(request, mlist_fqdn, query_string, search_type): search_form = SearchForm(auto_id=False) t = loader.get_template('search.html') @@ -251,21 +251,22 @@ def _search_results_page(request, mlist_fqdn, query_string, query_string_variabl 'month_participants': len(participants), 'month_discussions': res_num, 'threads': threads, - 'query_string' : query_string_variables, }) return HttpResponse(t.render(c)) def search(request, mlist_fqdn): keyword = request.GET.get('keyword') + target = request.GET.get('target') + print request, target if keyword: - url = '/search/%s/%s' % (mlist_fqdn, keyword) + url = '/search/%s/%s/%s' % (mlist_fqdn, target, keyword) else: - url = '/search/%s' % (mlist_fqdn,) + url = '/search/%s' % (mlist_fqdn) return HttpResponseRedirect(url) -def search_keyword(request, mlist_fqdn, keyword=None, target=None): +def search_keyword(request, mlist_fqdn, target=None, keyword=None): if not keyword: keyword = request.GET.get('keyword') if not target: @@ -273,10 +274,6 @@ def search_keyword(request, mlist_fqdn, keyword=None, target=None): if not target: target = 'Subject' regex = '.*%s.*' % keyword - query_string_variables = request.GET.copy() - if query_string_variables.has_key('page'): - del query_string_variables['page'] - query_string_variables = urllib.urlencode(query_string_variables) if target == 'SubjectContent': query_string = {'$or' : [ @@ -285,7 +282,7 @@ def search_keyword(request, mlist_fqdn, keyword=None, target=None): ]} else: query_string = {target.capitalize(): re.compile(regex, re.IGNORECASE)} - return _search_results_page(request, mlist_fqdn, query_string, query_string_variables, 'Search') + return _search_results_page(request, mlist_fqdn, query_string, 'Search') def search_tag(request, mlist_fqdn, tag=None): |