[Erp5-report] r28111 - /erp5/trunk/products/ERP5Type/Utils.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Jul 20 17:43:07 CEST 2009
Author: nicolas
Date: Mon Jul 20 17:43:06 2009
New Revision: 28111
URL: http://svn.erp5.org?rev=28111&view=rev
Log:
* Use property_holder to generate Test Accessors.
This change has probably been forgotten in r3325
* Fix issue when has* accessors defined in API are overload by dynamics accessors
Modified:
erp5/trunk/products/ERP5Type/Utils.py
Modified: erp5/trunk/products/ERP5Type/Utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Utils.py?rev=28111&r1=28110&r2=28111&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Utils.py [utf8] Mon Jul 20 17:43:06 2009
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
#############################################################################
#
# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
@@ -1884,50 +1885,49 @@
if prop['type'] == 'content':
# XXX This approach is wrong because testers for all properties
# should be created upfront rather than on demand
+ accessor_args = (prop['type'], prop.get('storage_id'))
tester_name = 'has' + UpperCase(id)
- tester = Content.Tester(tester_name, id, prop['type'],
- storage_id = prop.get('storage_id'))
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester)
- BaseClass.security.declareProtected(read_permission, tester_name)
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(setter_name, id, Content.Tester, accessor_args)
+ property_holder.declareProtected(read_permission, tester_name)
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(setter_name, id, Content.Tester, accessor_args)
+ property_holder.declareProtected(read_permission, tester_name)
+ else:
+ accessor_args = (prop['type'], prop.get('storage_id'))
+ tester_name = 'has' + UpperCase(id)
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(tester_name, id, Base.Tester, accessor_args)
+ property_holder.declareProtected(read_permission, tester_name)
+
tester_name = '_baseHas' + UpperCase(id)
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester.dummy_copy(tester_name))
- else:
- tester_name = 'has' + UpperCase(id)
- tester = Base.Tester(tester_name, id, prop['type'],
- storage_id = prop.get('storage_id'))
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester)
- BaseClass.security.declareProtected(read_permission, tester_name)
- tester_name = '_baseHas' + UpperCase(id)
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester.dummy_copy(tester_name))
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(tester_name, id, Base.Tester, accessor_args)
# List Tester
tester_name = 'has' + UpperCase(id) + 'List'
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester.dummy_copy(tester_name))
- BaseClass.security.declareProtected(read_permission, tester_name)
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(tester_name, id, List.Tester, accessor_args)
+ property_holder.declareProtected(read_permission, tester_name)
tester_name = '_baseHas' + UpperCase(id) + 'List'
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester.dummy_copy(tester_name))
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(tester_name, id, List.Tester, accessor_args)
tester_name = 'hasDefault' + UpperCase(id)
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester.dummy_copy(tester_name))
- BaseClass.security.declareProtected(read_permission, tester_name)
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(tester_name, id, List.Tester, accessor_args)
+ property_holder.declareProtected(read_permission, tester_name)
tester_name = '_baseHasDefault' + UpperCase(id)
- if not hasattr(BaseClass, tester_name):
- setattr(BaseClass, tester_name, tester.dummy_copy(tester_name))
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
+ property_holder.registerAccessor(tester_name, id, List.Tester, accessor_args)
# First Implementation of Boolean Accessor
tester_name = 'is' + UpperCase(id)
- if not hasattr(property_holder, tester_name):
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
property_holder.registerAccessor(tester_name, id, Base.Getter,
(prop['type'], prop.get('default'), prop.get('storage_id')))
property_holder.declareProtected(read_permission, tester_name)
tester_name = '_baseIs' + UpperCase(id)
- if not hasattr(property_holder, tester_name):
+ if not hasattr(property_holder, tester_name) or prop.get('override', 0):
property_holder.registerAccessor(tester_name, id, Base.Getter,
(prop['type'], prop.get('default'), prop.get('storage_id')))
@@ -1978,10 +1978,9 @@
property_holder.registerAccessor(accessor_name, id, Category.DefaultGetter, ())
accessor_name = 'has' + UpperCase(id)
- if not hasattr(BaseClass, accessor_name):
- tester = Category.Tester(accessor_name, id) # All testers should be created at once at startup
- setattr(BaseClass, accessor_name, tester)
- BaseClass.security.declareProtected(read_permission, accessor_name)
+ if not hasattr(property_holder, accessor_name):
+ property_holder.registerAccessor(accessor_name, id, Category.Tester, ())
+ property_holder.declareProtected(read_permission, accessor_name)
setter_name = 'set' + UpperCase(id)
if not hasattr(property_holder, setter_name):
More information about the Erp5-report
mailing list