[Checkins] SVN: zope.schema/trunk/ fix KeyError on DefaultProperty if field doesn't have defaultFactory. this could happen for persistent fields created before defaultFactory was added
David Glick
cvs-admin at zope.org
Fri Nov 9 20:06:39 UTC 2012
Log message for revision 128214:
fix KeyError on DefaultProperty if field doesn't have defaultFactory. this could happen for persistent fields created before defaultFactory was added
Changed:
U zope.schema/trunk/CHANGES.txt
U zope.schema/trunk/src/zope/schema/_bootstrapfields.py
U zope.schema/trunk/src/zope/schema/tests/test__bootstrapfields.py
-=-
Modified: zope.schema/trunk/CHANGES.txt
===================================================================
--- zope.schema/trunk/CHANGES.txt 2012-11-09 20:05:41 UTC (rev 128213)
+++ zope.schema/trunk/CHANGES.txt 2012-11-09 20:06:38 UTC (rev 128214)
@@ -4,7 +4,7 @@
4.2.1 (unreleased)
------------------
-- TBD
+- Fix the default property of fields that have no defaultFactory attribute.
4.2.0 (2012-05-12)
Modified: zope.schema/trunk/src/zope/schema/_bootstrapfields.py
===================================================================
--- zope.schema/trunk/src/zope/schema/_bootstrapfields.py 2012-11-09 20:05:41 UTC (rev 128213)
+++ zope.schema/trunk/src/zope/schema/_bootstrapfields.py 2012-11-09 20:06:38 UTC (rev 128214)
@@ -61,7 +61,7 @@
def __get__(self, inst, owner):
name, check = self._info
- defaultFactory = inst.__dict__['defaultFactory']
+ defaultFactory = inst.__dict__.get('defaultFactory')
# If there is no default factory, simply return the default.
if defaultFactory is None:
return inst.__dict__[name]
Modified: zope.schema/trunk/src/zope/schema/tests/test__bootstrapfields.py
===================================================================
--- zope.schema/trunk/src/zope/schema/tests/test__bootstrapfields.py 2012-11-09 20:05:41 UTC (rev 128213)
+++ zope.schema/trunk/src/zope/schema/tests/test__bootstrapfields.py 2012-11-09 20:06:38 UTC (rev 128214)
@@ -90,6 +90,14 @@
inst._prop = 'PROP'
self.assertEqual(inst.prop, 'PROP')
+ def test__get___wo_defaultFactory_in_dict(self):
+ class Test(DummyInst):
+ _prop = None
+ prop = self._makeOne('_prop')
+ inst = Test()
+ inst._prop = 'PROP'
+ self.assertEqual(inst.prop, 'PROP')
+
def test___get___w_defaultFactory_not_ICAF_no_check(self):
class Test(DummyInst):
_prop = None
More information about the checkins
mailing list