diff options
-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() |