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

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jun 10 13:24:48 CEST 2009


Author: jerome
Date: Wed Jun 10 13:24:47 2009
New Revision: 27487

URL: http://svn.erp5.org?rev=27487&view=rev
Log:
reactivate messages using their original activity queue when recreating
activity table ( manageClearActivities ). Messages where always reactivated
using SQLDict

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

Modified: erp5/trunk/products/CMFActivity/ActivityTool.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActivityTool.py?rev=27487&r1=27486&r2=27487&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActivityTool.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/ActivityTool.py [utf8] Wed Jun 10 13:24:47 2009
@@ -36,6 +36,7 @@
 from Products.CMFCore import CMFCorePermissions
 from Products.ERP5Type.Core.Folder import Folder
 from Products.CMFActivity.ActiveResult import ActiveResult
+from Products.CMFActivity.ActiveObject import DEFAULT_ACTIVITY
 from Products.PythonScripts.Utility import allow_class
 from AccessControl import ClassSecurityInfo, Permissions
 from AccessControl.SecurityManagement import newSecurityManager
@@ -347,7 +348,7 @@
     except (socket.error, MailHostError), message:
       LOG('ActivityTool.notifyUser', WARNING, 'Mail containing failure information failed to be sent: %s. Exception was: %s %s\n%s' % (message, self.exc_type, self.exc_value, self.traceback))
 
-  def reactivate(self, activity_tool):
+  def reactivate(self, activity_tool, activity=DEFAULT_ACTIVITY):
     # Reactivate the original object.
     obj= self.getObject(activity_tool)
     # Change user if required (TO BE DONE)
@@ -355,7 +356,7 @@
     current_user = str(_getAuthenticatedUser(self))
     user = self.changeUser(self.user_name, activity_tool)
     try:
-      active_obj = obj.activate(**self.activity_kw)
+      active_obj = obj.activate(activity=activity, **self.activity_kw)
       getattr(active_obj, self.method_id)(*self.args, **self.kw)
     finally:
       # Use again the previous user
@@ -1273,12 +1274,13 @@
       folder = getToolByName(self, 'portal_skins').activity
 
       # Obtain all pending messages.
-      message_list = []
+      message_list_dict = {}
       if keep:
         for activity in activity_dict.itervalues():
           if hasattr(activity, 'dumpMessageList'):
             try:
-              message_list.extend(activity.dumpMessageList(self))
+              message_list_dict[activity.__class__.__name__] =\
+                                    activity.dumpMessageList(self)
             except ConflictError:
               raise
             except:
@@ -1309,15 +1311,16 @@
         folder.SQLQueue_createMessageTable()
 
       # Reactivate the messages.
-      for m in message_list:
-        try:
-          m.reactivate(aq_inner(self))
-        except ConflictError:
-          raise
-        except:
-          LOG('ActivityTool', WARNING,
-              'could not reactivate the message %r, %r' %
-              (m.object_path, m.method_id), error=sys.exc_info())
+      for activity, message_list in message_list_dict.iteritems():
+        for m in message_list:
+          try:
+            m.reactivate(aq_inner(self), activity=activity)
+          except ConflictError:
+            raise
+          except:
+            LOG('ActivityTool', WARNING,
+                'could not reactivate the message %r, %r' %
+                (m.object_path, m.method_id), error=sys.exc_info())
 
       if REQUEST is not None:
         message = 'Activities%20Cleared'

Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=27487&r1=27486&r2=27487&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] Wed Jun 10 13:24:47 2009
@@ -630,7 +630,7 @@
     self.tic()
     self.assertEquals(o.getTitle(), 'last')
 
-  def CheckClearActivities(self, activity):
+  def CheckClearActivities(self, activity, activity_count=1):
     """
       Check if active objects are held even after clearing the tables.
     """
@@ -643,13 +643,14 @@
 
     def check(o):
       message_list = portal.portal_activities.getMessageList()
-      self.assertEquals(len(message_list), 1)
+      self.assertEquals(len(message_list), activity_count)
       m = message_list[0]
       self.assertEquals(m.object_path, o.getPhysicalPath())
       self.assertEquals(m.method_id, '_setTitle')
 
     o = portal.organisation._getOb(self.company_id)
-    o.activate(activity=activity)._setTitle('foo')
+    for i in range(activity_count):
+      o.activate(activity=activity)._setTitle('foo')
     get_transaction().commit()
     check(o)
 
@@ -1472,7 +1473,7 @@
       message = '\nCheck Clearing Activities With SQL Queue'
       ZopeTestCase._print(message)
       LOG('Testing... ',0,message)
-    self.CheckClearActivities('SQLQueue')
+    self.CheckClearActivities('SQLQueue', activity_count=2)
 
   def flushAllActivities(self, silent=0, loop_size=1000):
     """Executes all messages until the queue only contains failed




More information about the Erp5-report mailing list