summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAamir Khan <syst3m.w0rm@gmail.com>2012-04-05 22:28:11 +0530
committerAamir Khan <syst3m.w0rm@gmail.com>2012-04-05 22:28:11 +0530
commit769a2670fc5927d3a4e11b4c8367abf1eed6c0c0 (patch)
treee3ec43bd1a18ac2a8beb1723c8acee6f2aee05c1
parent643b3b8241e24a2a582b2b91c45f93c9e799b7ac (diff)
downloadhyperkitty-769a2670fc5927d3a4e11b4c8367abf1eed6c0c0.tar.gz
hyperkitty-769a2670fc5927d3a4e11b4c8367abf1eed6c0c0.tar.xz
hyperkitty-769a2670fc5927d3a4e11b4c8367abf1eed6c0c0.zip
RESTish URL for search result pages
-rw-r--r--urls.py4
-rw-r--r--views/pages.py13
2 files changed, 7 insertions, 10 deletions
diff --git a/urls.py b/urls.py
index afa7cae..e2d7f9e 100644
--- a/urls.py
+++ b/urls.py
@@ -31,6 +31,10 @@ urlpatterns = patterns('',
url(r'^message/(?P<mlist_fqdn>.*@.*)/(?P<messageid>.+)$', 'views.pages.message'),
# Search
#url(r'^search$', 'views.pages.search'),
+ # If page number is present in URL
+ url(r'^search/(?P<mlist_fqdn>.*@.*)\/(?P<target>.*)\/(?P<keyword>.*)\/(?P<page>.*)$', 'views.pages.search_keyword'),
+ url(r'^search/(?P<mlist_fqdn>.*@.*)\/(?P<target>.*)\/(?P<keyword>.*)\/(?P<page>.*)/$', 'views.pages.search_keyword'),
+ # Show the first page as default when no page number is present in URL
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'),
diff --git a/views/pages.py b/views/pages.py
index 149364c..ba28e94 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, search_type):
+def _search_results_page(request, mlist_fqdn, query_string, page, search_type):
search_form = SearchForm(auto_id=False)
t = loader.get_template('search.html')
@@ -214,12 +214,6 @@ def _search_results_page(request, mlist_fqdn, query_string, search_type):
paginator = Paginator(threads, 25) # Show 25 threads per page
- page = request.GET.get('page')
- try:
- page = int(request.GET.get('page', '1'))
- except ValueError:
- page = 1
-
# If page request (9999) is out of range, deliver last page of results.
try:
threads = paginator.page(page)
@@ -266,7 +260,7 @@ def search(request, mlist_fqdn):
return HttpResponseRedirect(url)
-def search_keyword(request, mlist_fqdn, target=None, keyword=None):
+def search_keyword(request, mlist_fqdn, target=None, keyword=None, page=1):
if not keyword:
keyword = request.GET.get('keyword')
if not target:
@@ -274,7 +268,6 @@ def search_keyword(request, mlist_fqdn, target=None, keyword=None):
if not target:
target = 'Subject'
regex = '.*%s.*' % keyword
-
if target == 'SubjectContent':
query_string = {'$or' : [
{'Subject': re.compile(regex, re.IGNORECASE)},
@@ -282,7 +275,7 @@ def search_keyword(request, mlist_fqdn, target=None, keyword=None):
]}
else:
query_string = {target.capitalize(): re.compile(regex, re.IGNORECASE)}
- return _search_results_page(request, mlist_fqdn, query_string, 'Search')
+ return _search_results_page(request, mlist_fqdn, query_string, page, 'Search')
def search_tag(request, mlist_fqdn, tag=None):