[Erp5-report] r44804 nicolas - /erp5/trunk/products/CMFActivity/ActiveObject.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 30 16:32:27 CEST 2011
Author: nicolas
Date: Wed Mar 30 16:32:26 2011
New Revision: 44804
URL: http://svn.erp5.org?rev=44804&view=rev
Log:
* Add support of default activity parameters storage globaly (not in scope of context).
context.setDefaultActivateParameters(placeless=True, **activate_kw)
* getDefaultActivateParameterDict returns always a dictionary
* Use constant to define key value.
Modified:
erp5/trunk/products/CMFActivity/ActiveObject.py
Modified: erp5/trunk/products/CMFActivity/ActiveObject.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActiveObject.py?rev=44804&r1=44803&r2=44804&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActiveObject.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/ActiveObject.py [utf8] Wed Mar 30 16:32:26 2011
@@ -45,6 +45,8 @@ STOP_STATE = -4
# Special state which allows to select positive nodes
POSITIVE_NODE_STATE = 'Positive Node State'
+_DEFAULT_ACTIVATE_PARAMETER_KEY = 'default_activate_parameter'
+
class ActiveObject(ExtensionClass.Base):
"""Active Object Mixin Class.
@@ -98,14 +100,9 @@ class ActiveObject(ExtensionClass.Base):
kw[k] = v
# Get default parameters from a transactional variable.
- tv = getTransactionalVariable()
- key = ('default_activate_parameter', id(aq_base(self)))
- try:
- for k, v in tv[key].iteritems():
- if k not in kw:
- kw[k] = v
- except KeyError:
- pass
+ new_kw = self.getDefaultActivateParameterDict()
+ new_kw.update(kw) # kw values takes precedence
+ kw = new_kw # replace it to takes into account default activate parameters
if kw.get('group_id', '') is None:
raise ValueError, "Cannot defined a group_id with value None"
@@ -169,35 +166,31 @@ class ActiveObject(ExtensionClass.Base):
return None # Do nothing if no portal_activities
return activity_tool.getActiveProcess()
- def setDefaultActivateParameters(self, **kw):
+ def setDefaultActivateParameters(self, placeless=False, **kw):
# This method sets the default keyword parameters to activate. This is
# useful when you need to specify special parameters implicitly (e.g. to
# reindexObject).
tv = getTransactionalVariable()
- key = ('default_activate_parameter', id(aq_base(self)))
+ if placeless:
+ key = (_DEFAULT_ACTIVATE_PARAMETER_KEY, )
+ else:
+ key = (_DEFAULT_ACTIVATE_PARAMETER_KEY, id(aq_base(self)))
tv[key] = kw
def getDefaultActivateParameterDict(self, inherit_placeless=True):
# This method returns default activate parameters to self.
- # The result can be either a dict object or None.
+ # The result is a dict object.
+ default = {}
tv = getTransactionalVariable()
if inherit_placeless:
- placeless = tv.get(('default_activate_parameter', ))
- if placeless is not None:
- placeless = placeless.copy()
- else:
- placeless = None
- local = tv.get(('default_activate_parameter', id(aq_base(self))))
- if local is None:
- result = placeless
+ placeless = tv.get((_DEFAULT_ACTIVATE_PARAMETER_KEY,), default)
else:
- if placeless is None:
- result = local.copy()
- else:
- # local defaults takes precedence over placeless defaults.
- result = {}
- result.update(placeless)
- result.update(local)
+ placeless = default
+ local = tv.get((_DEFAULT_ACTIVATE_PARAMETER_KEY, id(aq_base(self))),
+ default)
+ result = placeless.copy()
+ # local defaults takes precedence over placeless defaults.
+ result.update(local)
return result
def getActivityRuntimeEnvironment(self):
More information about the Erp5-report
mailing list