summaryrefslogtreecommitdiffstats
path: root/api.py
diff options
context:
space:
mode:
authorPierre-Yves Chibon <pingou@pingoured.fr>2012-03-31 16:23:01 +0200
committerPierre-Yves Chibon <pingou@pingoured.fr>2012-03-31 16:23:01 +0200
commitda61e8b5a39d246e3f7535165cbfb54c997bef37 (patch)
tree04ff99517e2826637be719de46c51326490bb705 /api.py
parent9f729a6c8fa5fbbe16f04c44dee360d0fbd5226b (diff)
parent85d040687fc21f13f3a124eb88f154027e052da1 (diff)
downloadhyperkitty-da61e8b5a39d246e3f7535165cbfb54c997bef37.tar.gz
hyperkitty-da61e8b5a39d246e3f7535165cbfb54c997bef37.tar.xz
hyperkitty-da61e8b5a39d246e3f7535165cbfb54c997bef37.zip
Merge
Diffstat (limited to 'api.py')
-rw-r--r--api.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/api.py b/api.py
index 4bdcd27..1f934c5 100644
--- a/api.py
+++ b/api.py
@@ -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