Commit 57aa2029 authored by Nicolas Dumazet's avatar Nicolas Dumazet

remove dead code (after a return; after a raise)


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@43150 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent e0ca6717
...@@ -88,7 +88,6 @@ from zope.interface import classImplementsOnly, implementedBy ...@@ -88,7 +88,6 @@ from zope.interface import classImplementsOnly, implementedBy
from string import join from string import join
import sys, re import sys, re
from Products.ERP5Type.PsycoWrapper import psyco
from cStringIO import StringIO from cStringIO import StringIO
from socket import gethostname, gethostbyaddr from socket import gethostname, gethostbyaddr
...@@ -538,79 +537,6 @@ def initializeClassDynamicProperties(self, klass): ...@@ -538,79 +537,6 @@ def initializeClassDynamicProperties(self, klass):
def initializePortalTypeDynamicProperties(self, klass, ptype, aq_key, portal): def initializePortalTypeDynamicProperties(self, klass, ptype, aq_key, portal):
raise ValueError("No reason to go through this no more with portal type classes") raise ValueError("No reason to go through this no more with portal type classes")
## Init CachingMethod which implements caching for ERP5
from Products.ERP5Type.Cache import initializePortalCachingProperties
initializePortalCachingProperties(portal)
if aq_key not in Base.aq_portal_type:
# Mark as generated
prop_holder = PropertyHolder()
# Recurse to parent object
parent_object = self.aq_inner.aq_parent
parent_klass = parent_object.__class__
parent_type = parent_object.portal_type
if getattr(parent_klass, 'isRADContent', 0) and \
(ptype != parent_type or klass != parent_klass):
parent_aq_key = parent_object._aq_key()
if parent_aq_key not in Base.aq_portal_type:
initializePortalTypeDynamicProperties(parent_object, parent_klass,
parent_type,
parent_aq_key, portal)
prop_list = list(getattr(klass, '_properties', []))
cat_list = list(getattr(klass, '_categories', []))
constraint_list = list(getattr(klass, '_constraints', []))
ps_definition_dict = {'_properties': prop_list,
'_categories': cat_list,
'_constraints': constraint_list}
# Initialize portal_type properties (XXX)
# Always do it before processing klass.property_sheets (for compatibility).
# Because of the order we generate accessors, it is still possible
# to overload data access for some accessors.
ptype_object = portal.portal_types.getTypeInfo(ptype)
if ptype_object is not None:
ptype_object.updatePropertySheetDefinitionDict(ps_definition_dict)
for base in getClassPropertyList(klass):
# FIXME: With ZODB Property Sheets, there should only be the
# name of the Property Sheet as a string. aq_dynamic should not
# be necessary as soon as all the Documents and Property Sheets
# have been migrated. This is kept for backward compatility with
# the filesystem Property Sheet (see ERP5Type.dynamic.portal_type_class)
if isinstance(base, basestring):
# The property Sheet might be in ERP5PropertySheetLegacy,
# give it a try. If it's not there, no need to warn or log
# heavily: it just means that it will be a ZODB propertysheet
from Products.ERP5Type import PropertySheet
base = getattr(PropertySheet, base)
if isinstance(base, basestring):
continue
for list_name, current_list in ps_definition_dict.items():
try:
current_list += getattr(base, list_name, ())
except TypeError:
raise ValueError("%s is not a list for %s" % (list_name, base))
prop_holder._portal_type = ptype
prop_holder._properties = prop_list
prop_holder._categories = cat_list
prop_holder._constraints = constraint_list
from Utils import setDefaultClassProperties, setDefaultProperties
setDefaultClassProperties(prop_holder)
setDefaultProperties(prop_holder, object=self, portal=portal)
#LOG('initializeDefaultProperties: %s' % ptype, 0, str(prop_holder.__dict__))
initializePortalTypeDynamicWorkflowMethods(self, klass, ptype, prop_holder,
portal)
# We can now associate it after initialising security
InitializeClass(prop_holder)
prop_holder.__propholder__ = prop_holder
# For now, this line below is commented, because this breaks
# _aq_dynamic without JP's patch to Zope for an unknown reason.
#klass.__ac_permissions__ = prop_holder.__ac_permissions__
Base.aq_portal_type[aq_key] = prop_holder
def initializePortalTypeDynamicWorkflowMethods(ptype_klass, portal_workflow): def initializePortalTypeDynamicWorkflowMethods(ptype_klass, portal_workflow):
"""We should now make sure workflow methods are defined """We should now make sure workflow methods are defined
and also make sure simulation state is defined.""" and also make sure simulation state is defined."""
...@@ -938,101 +864,6 @@ class Base( CopyContainer, ...@@ -938,101 +864,6 @@ class Base( CopyContainer,
# ahah! disabled, thanks to portal type classes # ahah! disabled, thanks to portal type classes
return None return None
# _aq_dynamic has been created so that callable objects
# and default properties can be associated per portal type
# and per class. Other uses are possible (ex. WebSection).
ptype = self.portal_type
klass = self.__class__
aq_key = (ptype, klass) # We do not use _aq_key() here for speed
# If this is a portal_type property and everything is already defined
# for that portal_type, try to return a value ASAP
try:
property_holder = Base.aq_portal_type[aq_key]
except KeyError:
pass
else:
accessor = getattr(property_holder, id, None)
if type(accessor) is tuple and id not in PropertyHolder.RESERVED_PROPERTY_SET:
accessor = property_holder.createAccessor(id)
return accessor
Base.aq_method_lock.acquire()
try:
if aq_key in Base.aq_portal_type:
# Another thread generated accessors just before we acquired the lock
# so we must simply retry.
return getattr(self, id, None)
if aq_key in Base.aq_method_generating:
# We are already generating accessors for this aq_key.
# Return immediately to prevent infinite loops.
return
# Store that we are generating for this aq_key, because _aq_dynamic may
# be called recursively. A typical example is that to generate methods
# for a document, we'll have to generate methods for Types Tool and
# Base Category portal.
Base.aq_method_generating.append(aq_key)
try:
# Proceed with property generation
# Generate class methods
initializeClassDynamicProperties(self, klass)
# Iterate until an ERP5 Site is obtained.
portal = self.getPortalObject()
while portal.portal_type != 'ERP5 Site':
portal = portal.aq_parent.aq_inner.getPortalObject()
# Generate portal_type methods
initializePortalTypeDynamicProperties(self, klass, ptype, aq_key, portal)
finally:
del Base.aq_method_generating[-1]
# Generate Related Accessors
if not Base.aq_related_generated:
Base.aq_related_generated = 1
from Utils import createRelatedValueAccessors
portal_types = getToolByName(portal, 'portal_types', None)
generated_bid = set()
econtext = createExpressionContext(object=self, portal=portal)
# Use 'items' instead of 'iteritems' because PropertySheet.__dict__ may
# be modified by another thread (that, for example, installs a BT).
for pid, ps in PropertySheet.__dict__.items():
if pid[0] != '_':
base_category_list = []
for cat in getattr(ps, '_categories', ()):
if isinstance(cat, Expression):
result = cat(econtext)
if isinstance(result, (list, tuple)):
base_category_list.extend(result)
else:
base_category_list.append(result)
else:
base_category_list.append(cat)
for bid in base_category_list:
if bid not in generated_bid:
createRelatedValueAccessors(None, bid)
generated_bid.add(bid)
for ptype in portal_types.listTypeInfo():
for bid in ptype.getTypeBaseCategoryList():
if bid not in generated_bid :
createRelatedValueAccessors(None, bid)
generated_bid.add(bid)
# We suppose that if we reach this point
# then it means that all code generation has succeeded
# (no except should hide that). We can safely return None
# if id does not exist as a dynamic property
# Baseline: accessor generation failures should always
# raise an exception up to the user
return getattr(self, id, None)
finally:
Base.aq_method_lock.release()
# Proceed with standard acquisition
return None
psyco.bind(_aq_dynamic)
# Constructor # Constructor
def __init__(self, id, uid=None, rid=None, sid=None, **kw): def __init__(self, id, uid=None, rid=None, sid=None, **kw):
self.id = id self.id = id
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment