[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