[Erp5-report] r24123 - in /erp5/trunk/products/CMFActivity: ./ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Oct 9 15:01:11 CEST 2008
Author: vincent
Date: Thu Oct 9 15:01:06 2008
New Revision: 24123
URL: http://svn.erp5.org?rev=24123&view=rev
Log:
unrestrictedTraverse is no suitable for this use: it can raise another exception than KeyError (see OFS/Traversable.py) and also prevents from finding methods on object (only subobjects or objects accessible via acquisition context).
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=24123&r1=24122&r2=24123&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActivityTool.py (original)
+++ erp5/trunk/products/CMFActivity/ActivityTool.py Thu Oct 9 15:01:06 2008
@@ -252,8 +252,8 @@
try:
# XXX: There is no check to see if user is allowed to access
# that method !
- method = obj.unrestrictedTraverse(self.method_id)
- except KeyError:
+ method = getattr(obj, self.method_id)
+ except:
method = None
self.setExecutionState(MESSAGE_NOT_EXECUTABLE, context=activity_tool)
else:
Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=24123&r1=24122&r2=24123&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py Thu Oct 9 15:01:06 2008
@@ -2973,9 +2973,9 @@
LOG('Testing... ',0,message)
portal = self.getPortalObject()
activity_tool = self.getActivityTool()
- def checkMessage(message):
+ def checkMessage(message, exception_type):
self.assertNotEqual(message.getExecutionState(), 1) # 1 == MESSAGE_EXECUTED
- self.assertEqual(message.exc_type, KeyError)
+ self.assertEqual(message.exc_type, exception_type)
self.assertNotEqual(message.traceback, None)
# With Message.__call__
# 1: activity context does not exist when activity is executed
@@ -2989,7 +2989,7 @@
message = message_list[0]
portal.organisation_module._delOb(organisation.id)
message(activity_tool)
- checkMessage(message)
+ checkMessage(message, KeyError)
activity_tool.manageCancel(message.object_path, message.method_id)
# 2: activity method does not exist when activity is executed
portal.organisation_module.activate().this_method_does_not_exist()
@@ -2998,7 +2998,7 @@
self.assertEqual(len(message_list), 1)
message = message_list[0]
message(activity_tool)
- checkMessage(message)
+ checkMessage(message, AttributeError)
activity_tool.manageCancel(message.object_path, message.method_id)
# With ActivityTool.invokeGroup
@@ -3013,7 +3013,7 @@
message = message_list[0]
portal.organisation_module._delOb(organisation.id)
activity_tool.invokeGroup('getTitle', [message])
- checkMessage(message)
+ checkMessage(message, KeyError)
activity_tool.manageCancel(message.object_path, message.method_id)
# 2: activity method does not exist when activity is executed
portal.organisation_module.activate().this_method_does_not_exist()
@@ -3022,7 +3022,7 @@
self.assertEqual(len(message_list), 1)
message = message_list[0]
activity_tool.invokeGroup('this_method_does_not_exist', [message])
- checkMessage(message)
+ checkMessage(message, KeyError)
activity_tool.manageCancel(message.object_path, message.method_id)
# Unadressed error paths (in both cases):
More information about the Erp5-report
mailing list