[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