summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Yves Chibon <pingou@pingoured.fr>2012-04-05 07:41:20 +0200
committerPierre-Yves Chibon <pingou@pingoured.fr>2012-04-05 07:41:20 +0200
commit643b3b8241e24a2a582b2b91c45f93c9e799b7ac (patch)
treef26302dc23fb6d2ffa0289f4064a348e3f916851
parentb754c3085cee6212a661178c56b3abb85e96f186 (diff)
downloadhyperkitty-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.html4
-rw-r--r--urls.py7
-rw-r--r--views/pages.py17
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>
diff --git a/urls.py b/urls.py
index 845474d..afa7cae 100644
--- a/urls.py
+++ b/urls.py
@@ -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):