[Erp5-report] r13758 - in /erp5/trunk/products/CMFActivity: ./ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 28 16:34:31 CEST 2007
Author: yo
Date: Wed Mar 28 16:34:30 2007
New Revision: 13758
URL: http://svn.erp5.org?rev=13758&view=rev
Log:
Define a new method setDefaultActivateParameters. Deprecate _v_activate_kw.
Modified:
erp5/trunk/products/CMFActivity/ActiveObject.py
erp5/trunk/products/CMFActivity/ActiveProcess.py
erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
Modified: erp5/trunk/products/CMFActivity/ActiveObject.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActiveObject.py?rev=13758&r1=13757&r2=13758&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActiveObject.py (original)
+++ erp5/trunk/products/CMFActivity/ActiveObject.py Wed Mar 28 16:34:30 2007
@@ -31,6 +31,7 @@
from Acquisition import aq_base
from ZODB.POSException import ConflictError
from Products.CMFCore.utils import getToolByName
+from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
try:
from Products.CMFCore import permissions
@@ -57,7 +58,7 @@
method on the wrapper returned by the `activate` method like this:
>>> obj.activate().aMethod()
-
+
This will defer the call to obj.aMethod()
"""
@@ -66,23 +67,23 @@
def activate(self, activity=DEFAULT_ACTIVITY, active_process=None,
passive_commit=0, activate_kw=None, **kw):
"""Returns an active wrapper for this object.
-
+
Reserved Optional parameters:
-
+
at_date -- request execution date for this activate call
-
+
after_method_id -- never validate message if after_method_id
is in the list of methods which are
going to be executed
-
+
after_message_uid -- never validate message if after_message_uid
is in the list of messages which are
going to be executed
-
+
after_path -- never validate message if after_path
is in the list of path which are
going to be executed
-
+
after_path_and_method_id
-- never validate message if a message for
method_id on path is in the queue.
@@ -96,15 +97,31 @@
# Get activate values from activate_kw, then _v_activate_kw
# only if they are not set directly as arguments to activate()
if activate_kw is not None:
- for key,value in activate_kw.items():
- if not kw.has_key(key):
- kw[key] = value
- # This volatile variable '_v_activate_kw' can be used to pass parameters
+ for k, v in activate_kw.iteritems():
+ if k not in kw:
+ kw[k] = v
+
+ # Get default parameters from a transactional variable.
+ tv = getTransactionalVariable()
+ key = ('default_activate_parameter', self.getPhysicalPath())
+ try:
+ for k, v in tv[key].iteritems():
+ if k not in kw:
+ kw[k] = v
+ except KeyError:
+ pass
+
+ # Deprecated: This volatile variable '_v_activate_kw' can be used to pass parameters
# automatically to activate.
if getattr(self, '_v_activate_kw', None) is not None:
- for key,value in self._v_activate_kw.items():
- if not kw.has_key(key):
- kw[key] = value
+ import warnings
+ warnings.warn('_v_activate_kw is deprecated;\n'
+ ' use setDefaultActivateParameters instead.',
+ DeprecationWarning)
+ for k, v in self._v_activate_kw.iteritems():
+ if k not in kw:
+ kw[k] = v
+
activity_tool = getToolByName(self, 'portal_activities', None)
if activity_tool is None: return self # Do nothing if no portal_activities
# activate returns an ActiveWrapper
@@ -172,3 +189,10 @@
if activity_tool is None: return None # Do nothing if no portal_activities
return activity_tool.getActiveProcess()
+ security.declareProtected( permissions.ModifyPortalContent, 'setDefaultActivateParameters' )
+ def setDefaultActivateParameters(self, **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', self.getPhysicalPath())
+ tv[key] = kw
Modified: erp5/trunk/products/CMFActivity/ActiveProcess.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActiveProcess.py?rev=13758&r1=13757&r2=13758&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActiveProcess.py (original)
+++ erp5/trunk/products/CMFActivity/ActiveProcess.py Wed Mar 28 16:34:30 2007
@@ -47,7 +47,7 @@
"""
o = ActiveProcess( id )
if activate_kw is not None:
- o._v_activate_kw = activate_kw
+ o.setDefaultActivateParameters(**activate_kw)
o.uid = self.portal_catalog.newUid()
self._setObject( id, o )
if kw: o.__of__(folder)._edit(force_update=1, **kw)
Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=13758&r1=13757&r2=13758&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py Wed Mar 28 16:34:30 2007
@@ -543,7 +543,7 @@
self.tic()
self.assertEquals(o.getTitle(), 'b')
- o._v_activate_kw = {'tag':'toto'}
+ o.setDefaultActivateParameters(tag = 'toto')
def titi(self):
self.setCorporateName(self.getTitle() + 'd')
o.__class__.titi = titi
More information about the Erp5-report
mailing list