diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-08-22 15:36:15 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-08-22 15:36:15 (GMT) |
commit | 04e50db67c15d6c905400c8707e77e45bde92c55 (patch) | |
tree | 179081425b640698ebcbebf8f4ae8820d44e3c98 /src | |
parent | b740fc38b11e6b7a0699ef97987889ffee47d3f2 (diff) |
Implement the date range
Diffstat (limited to 'src')
-rw-r--r-- | src/olpc/datastore/indexstore.py | 26 |
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) |