Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-08-22 15:36:15 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-08-22 15:36:15 (GMT)
commit04e50db67c15d6c905400c8707e77e45bde92c55 (patch)
tree179081425b640698ebcbebf8f4ae8820d44e3c98 /src
parentb740fc38b11e6b7a0699ef97987889ffee47d3f2 (diff)
Implement the date range
Diffstat (limited to 'src')
-rw-r--r--src/olpc/datastore/indexstore.py26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/olpc/datastore/indexstore.py b/src/olpc/datastore/indexstore.py
index 0adf9d4..6336b62 100644
--- a/src/olpc/datastore/indexstore.py
+++ b/src/olpc/datastore/indexstore.py
@@ -1,5 +1,7 @@
import os
import logging
+import time
+import sys
import xapian
from xapian import WritableDatabase, Document, Enquire, Query, QueryParser
@@ -113,17 +115,35 @@ class IndexStore(object):
queries.append(query)
+ self._replace_mtime(query_dict)
+ if query_dict.has_key('timestamp'):
+ start = str(query_dict['timestamp'].pop('start', 0))
+ end = str(query_dict['timestamp'].pop('end', sys.maxint))
+ query = Query(Query.OP_VALUE_RANGE, _VALUE_TIMESTAMP, start, end)
+ queries.append(query)
+
if query_dict.has_key('uid'):
queries.append(Query('Q' + query_dict['uid']))
- #if query_dict.has_key('timestamp'):
- # queries.append(Query('Q' + query_dict['uid']))
-
if not queries:
queries.append(Query(''))
return Query(Query.OP_AND, queries)
+ def _replace_mtime(self, query):
+ # TODO: Just a hack for the current journal that filters by mtime
+ DATE_FORMAT = '%Y-%m-%dT%H:%M:%S'
+ if query.has_key('mtime'):
+ mtime_range = query.pop('mtime')
+
+ start = mtime_range['start'][:-7]
+ start = time.mktime(time.strptime(start, DATE_FORMAT))
+
+ end = mtime_range['end'][:-7]
+ end = time.mktime(time.strptime(end, DATE_FORMAT))
+
+ query['timestamp'] = {'start': start, 'end': end}
+
def delete(self, uid):
self._database.delete_document('Q' + uid)