Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2011-08-22 13:48:43 (GMT)
committer Sascha Silbe <sascha-pgp@silbe.org>2011-08-22 14:12:11 (GMT)
commitb0e6e213cb5179ff3c3cd1bb0f6d08dda4b1d5d3 (patch)
tree4ea7ed8d7844de44625cb7f24f3f679c50d0ca61
parent28bace5821005637ed31b9de0cc0fa17d2be89e2 (diff)
Implement find_unique_values()
Previously it returned only a fixed set of values to satisfy the test suite.
-rw-r--r--gdatastore/datastore.py5
-rw-r--r--gdatastore/index.py9
2 files changed, 13 insertions, 1 deletions
diff --git a/gdatastore/datastore.py b/gdatastore/datastore.py
index 6f5a011..d1457aa 100644
--- a/gdatastore/datastore.py
+++ b/gdatastore/datastore.py
@@ -315,7 +315,10 @@ class InternalApi(object):
def find_unique_values(self, query, name):
logging.debug('find_unique_values(%r, %r)', query, name)
- return ['org.sugarlabs.DataStoreTest1', 'org.sugarlabs.DataStoreTest2']
+ if query:
+ raise NotImplementedError('non-empty query not supported yet')
+
+ return self._index.find_unique_values(name)
def save(self, tree_id, parent_id, metadata, path, delete_after, async_cb,
async_err_cb):
diff --git a/gdatastore/index.py b/gdatastore/index.py
index 177a300..9b43541 100644
--- a/gdatastore/index.py
+++ b/gdatastore/index.py
@@ -304,6 +304,15 @@ class Index(object):
return entries, total_count
+ def find_unique_values(self, property):
+ if property in _STANDARD_TERMS:
+ prefix = _PREFIX_FULL_VALUE + _STANDARD_TERMS[property]['prefix']
+ else:
+ prefix = _PREFIX_FULL_VALUE + _prefix_for_unknown(property)
+
+ return [term.term[len(prefix):]
+ for term in self._database.allterms(prefix)]
+
def retrieve(self, object_id):
postings = self._database.postlist(_object_id_term(object_id))
document = self._database.get_document(postings.next().docid)