# HG changeset patch # User Christophe de Vienne # Date 1454191578 -3600 # Node ID 900c27ea30e97bd47b9135298d5dc28319531e2c # Parent aec47ca624b25411672ec1dd674d9f8f350ce508 [cwvreg] Fix propertyvalues hot updates When CWProperty instances are touched, the corresponding value gets updated in vreg['propertyvalues'], but their type was ignored. diff -r aec47ca624b2 -r 900c27ea30e9 hooks/syncsession.py --- a/hooks/syncsession.py Thu Jan 07 12:20:50 2016 +0100 +++ b/hooks/syncsession.py Sat Jan 30 23:06:18 2016 +0100 @@ -148,7 +148,8 @@ """the observed connections set has been commited""" cwprop = self.cwprop if not cwprop.for_user: - self.cnx.vreg['propertyvalues'][cwprop.pkey] = cwprop.value + self.cnx.vreg['propertyvalues'][cwprop.pkey] = \ + self.cnx.vreg.typed_value(cwprop.pkey, cwprop.value) # if for_user is set, update is handled by a ChangeCWPropertyOp operation diff -r aec47ca624b2 -r 900c27ea30e9 hooks/test/unittest_syncsession.py --- a/hooks/test/unittest_syncsession.py Thu Jan 07 12:20:50 2016 +0100 +++ b/hooks/test/unittest_syncsession.py Sat Jan 30 23:06:18 2016 +0100 @@ -69,6 +69,15 @@ req.execute('INSERT CWProperty X: X pkey "ui.language", X value "hop"') self.assertEqual(cm.exception.errors, {'value-subject': u'unauthorized value'}) + def test_vreg_propertyvalues_update(self): + self.vreg.register_property( + 'test.int', type='Int', help='', sitewide=True) + with self.admin_access.repo_cnx() as cnx: + cnx.execute('INSERT CWProperty X: X pkey "test.int", X value "42"') + cnx.commit() + self.assertEqual(self.vreg.property_value('test.int'), 42) + + if __name__ == '__main__': from logilab.common.testlib import unittest_main unittest_main()