From 22b729df446bbba47801c30fd2fda7a26f9264b0 Mon Sep 17 00:00:00 2001 From: Benjamin Saller Date: Mon, 16 Jul 2007 14:46:31 +0000 Subject: better int property handling --- diff --git a/src/olpc/datastore/model.py b/src/olpc/datastore/model.py index e3f9668..ccbf396 100644 --- a/src/olpc/datastore/model.py +++ b/src/olpc/datastore/model.py @@ -301,7 +301,8 @@ registerPropertyType('binary', noop, noop, None, {'store' : True, registerPropertyType('int', str, int, 'float', {'store' : True, 'exact' : True, - 'sortable' : True}) + 'sortable' : True}, + for_xapian=str) registerPropertyType('number', str, float, 'float', {'store' : True, 'exact' : True, diff --git a/src/olpc/datastore/xapianindex.py b/src/olpc/datastore/xapianindex.py index 1b27d79..c465b41 100644 --- a/src/olpc/datastore/xapianindex.py +++ b/src/olpc/datastore/xapianindex.py @@ -256,7 +256,7 @@ class IndexManager(object): uid = create_uid() operation = CREATE - if vid: vid = str(float(vid.value) + 1.0) + if vid: vid = str(float(vid) + 1.0) else: vid = "1.0" # Property mapping via model diff --git a/tests/test_model.py b/tests/test_model.py index 145f5d8..dc49dac 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -52,7 +52,46 @@ class Test(unittest.TestCase): ds.stop() + def test_intproperty(self): + p = model.Property('keep', 1, 'int') + assert p.value == '1' + p.value = 0 + assert p.value == '0' + + p.value = '1' + assert p.value == '1' + + p.value = '0' + assert p.value == '0' + + + ds = DataStore() + ds.registerBackend(backingstore.FileBackingStore) + + ds.mount(DEFAULT_STORE) + + uid = ds.create({'title' : "Document 1", 'keep' : 1},) + ds.complete_indexing() + c = ds.get(uid) + assert c.get_property('keep') == 1 + + ds.update(uid, {'title' : "Document 1", 'keep' : 0}) + ds.complete_indexing() + c = ds.get(uid) + assert c.get_property('keep') == 0 + + + ds.update(uid, {'title' : "Document 1", 'keep' : '1'}) + ds.complete_indexing() + c = ds.get(uid) + assert c.get_property('keep') == 1 + + ds.update(uid, {'title' : "Document 1", 'keep' : '0'}) + ds.complete_indexing() + c = ds.get(uid) + assert c.get_property('keep') == 0 + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(Test)) -- cgit v0.9.1