diff options
author | Pierre-Yves Chibon <pingou@pingoured.fr> | 2012-03-31 16:23:01 +0200 |
---|---|---|
committer | Pierre-Yves Chibon <pingou@pingoured.fr> | 2012-03-31 16:23:01 +0200 |
commit | da61e8b5a39d246e3f7535165cbfb54c997bef37 (patch) | |
tree | 04ff99517e2826637be719de46c51326490bb705 /api.py | |
parent | 9f729a6c8fa5fbbe16f04c44dee360d0fbd5226b (diff) | |
parent | 85d040687fc21f13f3a124eb88f154027e052da1 (diff) | |
download | hyperkitty-da61e8b5a39d246e3f7535165cbfb54c997bef37.tar.gz hyperkitty-da61e8b5a39d246e3f7535165cbfb54c997bef37.tar.xz hyperkitty-da61e8b5a39d246e3f7535165cbfb54c997bef37.zip |
Merge
Diffstat (limited to 'api.py')
-rw-r--r-- | api.py | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -6,6 +6,7 @@ from django.http import HttpResponseNotModified, HttpResponse from lib import mongo import pymongo import json +import re connection = pymongo.Connection('localhost', 27017) @@ -36,3 +37,31 @@ class ThreadResource(View): return HttpResponse(status=404) else: return thread + + +class SearchResource(View): + """ Resource used to search the archives using the REST API. + """ + + def get(self, request, mlist_fqdn, field, keyword): + list_name = mlist_fqdn.split('@')[0] + + if field not in ['Subject', 'Content', 'SubjectContent', 'From']: + return HttpResponse(status=404) + + regex = '.*%s.*' % keyword + if field == 'SubjectContent': + query_string = {'$or' : [ + {'Subject': re.compile(regex, re.IGNORECASE)}, + {'Content': re.compile(regex, re.IGNORECASE)} + ]} + else: + query_string = {field.capitalize(): + re.compile(regex, re.IGNORECASE)} + + print query_string, field, keyword + threads = mongo.search_archives(list_name, query_string) + if not threads: + return HttpResponse(status=404) + else: + return threads |