Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Saller <bcsaller@objectrealms.net>2007-07-16 14:46:31 (GMT)
committer Benjamin Saller <bcsaller@objectrealms.net>2007-07-16 14:46:31 (GMT)
commit22b729df446bbba47801c30fd2fda7a26f9264b0 (patch)
tree794db17c9479b20e4f0df7a9227a998b51fe4bc0
parent6df3576dcc93acafbb4d8d22dcd4ab284b64e412 (diff)
better int property handling
-rw-r--r--src/olpc/datastore/model.py3
-rw-r--r--src/olpc/datastore/xapianindex.py2
-rw-r--r--tests/test_model.py39
3 files changed, 42 insertions, 2 deletions
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))