[Erp5-report] r32882 jm - in /erp5/trunk/products/CMFActivity: ./ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 19 18:56:38 CET 2010


Author: jm
Date: Fri Feb 19 18:56:38 2010
New Revision: 32882

URL: http://svn.erp5.org?rev=32882&view=rev
Log:
Also allow to specify retry parameters in activate_kw

Modified:
    erp5/trunk/products/CMFActivity/ActivityRuntimeEnvironment.py
    erp5/trunk/products/CMFActivity/tests/testCMFActivity.py

Modified: erp5/trunk/products/CMFActivity/ActivityRuntimeEnvironment.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActivityRuntimeEnvironment.py?rev=32882&r1=32881&r2=32882&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActivityRuntimeEnvironment.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/ActivityRuntimeEnvironment.py [utf8] Fri Feb 19 18:56:38 2010
@@ -15,12 +15,16 @@
 
 class BaseMessage:
 
-  delay = None
+  def __property(**kw):
+    (k, v), = kw.items()
+    return property(lambda self: self.activity_kw.get(k, v))
+
+  delay = __property(delay=None)
   # None means infinite retry
-  max_retry = 5
+  max_retry = __property(max_retry=5)
   # For errors happening after message invocation (ConflictError),
   # should we retry quickly without increasing 'retry' count ?
-  conflict_retry = True
+  conflict_retry = __property(conflict_retry=True)
 
 
 class ActivityRuntimeEnvironment(object):
@@ -32,4 +36,4 @@
     # There is no point allowing to modify other attributes from a message
     for k in kw:
       getattr(BaseMessage, k)
-    self._message.__dict__.update(kw)
+    self._message.activity_kw.update(kw)

Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=32882&r1=32881&r2=32882&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] Fri Feb 19 18:56:38 2010
@@ -1659,12 +1659,12 @@
         self.getActivityRuntimeEnvironment().edit(**edit_kw)
       if conflict is not None:
         raise conflict and ConflictError or Exception
-    def check(retry_list):
+    def check(retry_list, **activate_kw):
       fail = retry_list[-1][0] is not None and 1 or 0
       for activity in 'SQLDict', 'SQLQueue':
         exec_count[0] = 0
-        activity_tool.activate(activity=activity, priority=priority(1,6)) \
-                     .doSomething(retry_list)
+        activity_tool.activate(activity=activity, priority=priority(1,6),
+                               **activate_kw).doSomething(retry_list)
         get_transaction().commit()
         self.flushAllActivities(silent=1)
         self.assertEqual(len(retry_list), exec_count[0])
@@ -1687,6 +1687,7 @@
       # ... even in case of ConflictError
       check([(True, {'max_retry': 0}),
              (True, {'max_retry': 0, 'conflict_retry': 0})])
+      check([(True, None)] * 6, conflict_retry=False)
       # Customized number of retries
       for n in 3, 9:
         check([(False, {'max_retry': n})] * n + [(None, None)])
@@ -1696,6 +1697,7 @@
         check([(False, {'max_retry': None})] * n + [(None, None)])
         check([(False, {'max_retry': None})] * n + [(False, {'max_retry': 0})])
       check([(False, {'max_retry': None})] * 9 + [(False, None)])
+
     finally:
       del activity_tool.__class__.doSomething
     self.assertFalse(activity_tool.getMessageList())




More information about the Erp5-report mailing list