diff options
author | Benjamin Saller <bcsaller@objectrealms.net> | 2007-07-17 00:03:00 (GMT) |
---|---|---|
committer | Benjamin Saller <bcsaller@objectrealms.net> | 2007-07-17 00:03:00 (GMT) |
commit | 0cda1d5967f9ef41178be44e0751f3babe0d210b (patch) | |
tree | c7f5d98f392f6dc690226cd581b54b9d1b6c0756 | |
parent | d26583e7d16cc3d91dfd58f8dced8969a5425d64 (diff) |
make sure non-model properties make it into the result set
-rw-r--r-- | src/olpc/datastore/xapianindex.py | 10 | ||||
-rw-r--r-- | tests/test_model.py | 6 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/olpc/datastore/xapianindex.py b/src/olpc/datastore/xapianindex.py index 49448d7..b104d44 100644 --- a/src/olpc/datastore/xapianindex.py +++ b/src/olpc/datastore/xapianindex.py @@ -235,11 +235,19 @@ class IndexManager(object): to Property objects """ d = {} + add_anything = False for k,v in props.iteritems(): p, added = self.datamodel.fromstring(k, v, allowAddition=True) - if added is True: self.fields.add(p.key) + if added is True: + self.fields.add(p.key) + add_anything = True d[p.key] = p + + if add_anything: + with self._write_lock: + self.datamodel.apply(self) + return d def index(self, props, filename=None): diff --git a/tests/test_model.py b/tests/test_model.py index 618c5cb..bb30426 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -113,6 +113,12 @@ class Test(unittest.TestCase): ds.complete_indexing() assert ds.find('whodofoodo')[1] == 1 + c = ds.get_properties(uid) + assert 'foobar' in c + assert 'title' in c + # maps back w/o the type + assert 'incept' in c + ds.stop() |