diff options
-rw-r--r-- | lib/mongo.py | 14 | ||||
-rw-r--r-- | views/pages.py | 6 |
2 files changed, 15 insertions, 5 deletions
diff --git a/lib/mongo.py b/lib/mongo.py index b202001..9344932 100644 --- a/lib/mongo.py +++ b/lib/mongo.py @@ -176,13 +176,23 @@ def get_archives_length(table): return archives -def search_archives(table, query): +def search_archives(table, query, limit=None): db = connection[table] db.mails.create_index('Date') db.mails.ensure_index('Date') for el in query: db.mails.create_index(str(el)) db.mails.ensure_index(str(el)) - return list(db.mails.find(query, sort=[('Date', + output = [] + try: + limit = int(limit) + except ValueError: + limit = None + if limit: + output = list(db.mails.find(query, sort=[('Date', + pymongo.DESCENDING)]).limit(limit)) + else: + output = list(db.mails.find(query, sort=[('Date', pymongo.DESCENDING)])) + return output diff --git a/views/pages.py b/views/pages.py index 6ed9964..6537a41 100644 --- a/views/pages.py +++ b/views/pages.py @@ -237,11 +237,11 @@ def message (request, mlist_fqdn, messageid): return HttpResponse(t.render(c)) def _search_results_page(request, mlist_fqdn, query_string, search_type, - page=1, num_threads=25): + page=1, num_threads=25, limit=None): search_form = SearchForm(auto_id=False) t = loader.get_template('search.html') list_name = mlist_fqdn.split('@')[0] - threads = mongo.search_archives(list_name, query_string) + threads = mongo.search_archives(list_name, query_string, limit=limit) res_num = len(threads) participants = set() @@ -326,7 +326,7 @@ def search_tag(request, mlist_fqdn, tag=None, page=1): else: query_string = None return _search_results_page(request, mlist_fqdn, query_string, - 'Tag search', page) + 'Tag search', page, limit=50) def thread (request, mlist_fqdn, threadid): ''' Displays all the email for a given thread identifier ''' |