[Erp5-report] r10273 - in /erp5/trunk/products/ERP5Type: Base.py tests/testERP5Type.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Sat Sep 23 14:41:27 CEST 2006
Author: jerome
Date: Sat Sep 23 14:41:22 2006
New Revision: 10273
URL: http://svn.erp5.org?rev=10273&view=rev
Log:
getProperty passes default parameter to getter, if getter supports it.
All ERP5Type tests can pass with this.
Modified:
erp5/trunk/products/ERP5Type/Base.py
erp5/trunk/products/ERP5Type/tests/testERP5Type.py
Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=10273&r1=10272&r2=10273&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Base.py Sat Sep 23 14:41:22 2006
@@ -88,6 +88,8 @@
from ZODB.POSException import ConflictError
from zLOG import LOG, INFO, ERROR, WARNING
+
+_MARKER=[]
class WorkflowMethod(Method):
@@ -789,16 +791,24 @@
return default_value
security.declareProtected( Permissions.AccessContentsInformation, 'getProperty' )
- def getProperty(self, key, d=None, **kw):
- """
- Previous Name: getValue
-
- Generic accessor. Calls the real accessor
+ def getProperty(self, key, d=_MARKER, **kw):
+ """getProperty is the generic accessor to all properties and categories
+ defined on this object.
+ If an accessor exists for this property, the accessor will be called,
+ default value will be passed to the accessor as first positional argument.
"""
accessor_name = 'get' + UpperCase(key)
aq_self = aq_base(self)
if hasattr(aq_self, accessor_name):
method = getattr(self, accessor_name)
+ if d is not _MARKER:
+ try:
+ # here method is a method defined on the class, we don't know if the
+ # method supports default argument or not, so we'll try and if the
+ # method doesn't accepts it, we ignore default argument.
+ return method(d, **kw)
+ except TypeError:
+ pass
return method(**kw)
# Try to get a portal_type property (Implementation Dependent)
if not Base.aq_portal_type.has_key(self.portal_type):
@@ -808,16 +818,20 @@
pass
if hasattr(Base.aq_portal_type[self.portal_type], accessor_name):
method = getattr(self, accessor_name)
+ if d is not _MARKER:
+ try:
+ return method(d, **kw)
+ except TypeError:
+ pass
return method(**kw)
else:
- return ERP5PropertyManager.getProperty(self, key, d=d, **kw)
+ if d is not _MARKER:
+ return ERP5PropertyManager.getProperty(self, key, d=d, **kw)
+ return ERP5PropertyManager.getProperty(self, key, **kw)
security.declareProtected( Permissions.AccessContentsInformation, 'getPropertyList' )
def getPropertyList(self, key, d=None):
- """
- Previous Name: getValue
-
- Generic accessor. Calls the real accessor
+ """Same as getProperty, but for list properties.
"""
return self.getProperty('%s_list' % key)
Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=10273&r1=10272&r2=10273&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py Sat Sep 23 14:41:22 2006
@@ -765,15 +765,14 @@
self.assertEquals(person.getLastName(), None)
self.assertEquals(person.getLastName('foo'), 'foo')
self.assertEquals(person.getLastName(default='foo'), 'foo')
- # FIXME: default not supported with getProperty and Getter methods
# test static method through getProperty
- #self.assertEquals(person.getProperty('first_name'), None)
- #self.assertEquals(person.getProperty('first_name', 'foo'), 'foo')
- #self.assertEquals(person.getProperty('first_name', d='foo'), 'foo')
+ self.assertEquals(person.getProperty('first_name'), None)
+ self.assertEquals(person.getProperty('first_name', 'foo'), 'foo')
+ self.assertEquals(person.getProperty('first_name', d='foo'), 'foo')
# test dynamic method through getProperty
- #self.assertEquals(person.getProperty('last_name'), None)
- #self.assertEquals(person.getProperty('last_name', 'foo'), 'foo')
- #self.assertEquals(person.getProperty('last_name', d='foo'), 'foo')
+ self.assertEquals(person.getProperty('last_name'), None)
+ self.assertEquals(person.getProperty('last_name', 'foo'), 'foo')
+ self.assertEquals(person.getProperty('last_name', d='foo'), 'foo')
# test simple property through getProperty
property_name = 'XXXthis_property_does_not_exist123123'
self.assertEquals(person.getProperty(property_name), None)
@@ -796,12 +795,10 @@
self.assertEquals('default', person.getDummyPsProp('default'))
# using getProperty
self.assertEquals('ps_default', person.getProperty('dummy_ps_prop'))
- # FIXME: default not supported with getProperty and Getter methods
- # XXX self.assertEquals('default', person.getProperty('dummy_ps_prop', 'default'))
+ self.assertEquals('default', person.getProperty('dummy_ps_prop', 'default'))
# None can be a default value too
- # FIXME: default not supported with getProperty and Getter methods
- # XXX self.assertEquals(None, person.getProperty('dummy_ps_prop', None))
+ self.assertEquals(None, person.getProperty('dummy_ps_prop', None))
self.assertEquals(None, person.getDummyPsProp(None))
# once the value has been set, there's no default
More information about the Erp5-report
mailing list