Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha@silbe.org>2009-07-10 14:57:08 (GMT)
committer Sascha Silbe <sascha@silbe.org>2009-08-17 11:15:17 (GMT)
commit9644aa993955bd9be32d93ad1117e4201ff3b473 (patch)
tree66a5a0b74d1ec3ac51ff440539c9dca4562c8a0d
parenta278f7cea03a70e4d273c38a397d655a25c514d2 (diff)
simplify _parse_query() for simple data types
-rw-r--r--src/carquinyol/indexstore.py36
1 files changed, 13 insertions, 23 deletions
diff --git a/src/carquinyol/indexstore.py b/src/carquinyol/indexstore.py
index ba76da6..3a00c25 100644
--- a/src/carquinyol/indexstore.py
+++ b/src/carquinyol/indexstore.py
@@ -164,6 +164,13 @@ class IndexStore(object):
# TODO: total_count will be totally off if all_versions is not set
return (tvids, total_count)
+ _queryTermMap = {
+ 'tree_id': _PREFIX_TID,
+ 'version_id': _PREFIX_VID,
+ 'bundle_id': _PREFIX_BUNDLE_ID,
+ 'activitiy_id': _PREFIX_ACTIVITY_ID,
+ 'keep': _PREFIX_KEEP,
+ }
def _parse_query(self, query_dict):
logging.debug('_parse_query %r' % query_dict)
queries = []
@@ -188,6 +195,12 @@ class IndexStore(object):
queries.append(query)
+ # metadata -> term for simple datatypes (string, bool)
+ for (m_name, term_prefix) in self._queryTermMap.items() :
+ m_value = query_dict.pop(m_name, None)
+ if m_value is not None:
+ queries.append(Query(term_prefix+str(m_value)))
+
timestamp = query_dict.pop('timestamp', None)
if timestamp is not None:
start = str(timestamp.pop('start', 0))
@@ -195,29 +208,6 @@ class IndexStore(object):
query = Query(Query.OP_VALUE_RANGE, _VALUE_TIMESTAMP, start, end)
queries.append(query)
- # TODO: refactor / simplify
- tree_id = query_dict.pop('tree_id', None)
- if tree_id is not None:
- queries.append(Query(_PREFIX_TID + tree_id))
-
- version_id = query_dict.pop('version_id', None)
- if version_id is not None:
- queries.append(Query(_PREFIX_VID + version_id))
-
- bundle_id = query_dict.pop('bundle_id', None)
- if bundle_id is not None:
- queries.append(Query(_PREFIX_BUNDLE_ID + bundle_id))
-
- activity_id = query_dict.pop('activity_id', None)
- if activity_id is not None:
- query = Query(_PREFIX_ACTIVITY_ID + activity_id)
- queries.append(query)
-
- keep = query_dict.pop('keep', None)
- if keep is not None:
- query = Query(_PREFIX_KEEP + str(keep))
- queries.append(query)
-
mime_type = query_dict.pop('mime_type', None)
if mime_type is not None:
mime_queries = []