diff --git a/product/CMFActivity/Activity/SQLBase.py b/product/CMFActivity/Activity/SQLBase.py index a0613cf9329576981a18d220e9672c78c01b9f77..45043e7fc42233a78ba0310a144ef5365e1ba66e 100644 --- a/product/CMFActivity/Activity/SQLBase.py +++ b/product/CMFActivity/Activity/SQLBase.py @@ -196,6 +196,7 @@ class SQLBase: # something is missing (context object cannot be found, method cannot # be accessed on object). non_executable_message_list.append(uid) + notify_user_list.append((m, False)) if deletable_uid_list: try: self._retryOnLockError(activity_tool.SQLBase_delMessage, diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py index 4a1ad6b60d652543239c9dfbb9a52bd060e2b82c..75347628acdf1caf48fd3619c0f75e13d855abcc 100644 --- a/product/CMFActivity/ActivityTool.py +++ b/product/CMFActivity/ActivityTool.py @@ -323,7 +323,9 @@ class Message(BaseMessage): call_traceback = 'Created at:\n%s' % self.call_traceback fail_count = self.line.retry + 1 - if retry: + if m.getExecutionState() == MESSAGE_NOT_EXECUTABLE: + message = "Not executable activity" + elif retry: message = "Pending activity already failed %s times" % fail_count else: message = "Activity failed" diff --git a/product/CMFActivity/tests/testCMFActivity.py b/product/CMFActivity/tests/testCMFActivity.py index 751ae7781b4516da103b76d9b65411fd60cef006..678c047425eb02299fb485bd767595bad82c5787 100644 --- a/product/CMFActivity/tests/testCMFActivity.py +++ b/product/CMFActivity/tests/testCMFActivity.py @@ -2336,11 +2336,19 @@ class TestCMFActivity(ERP5TypeTestCase): Message.notifyUser = fake_notifyUser Organisation.failingMethod = failingMethod try: - obj.activate(activity=activity, priority=6).failingMethod() + # MESSAGE_NOT_EXECUTED + obj.activate(activity=activity).failingMethod() get_transaction().commit() self.assertEqual(len(notification_done), 0) self.flushAllActivities(silent=1, loop_size=100) self.assertEqual(len(notification_done), 1) + # MESSAGE_NOT_EXECUTABLE + obj.getParentValue()._delObject(obj.getId()) + obj.activate(activity=activity).getId() + get_transaction().commit() + self.assertEqual(len(notification_done), 1) + self.flushAllActivities(silent=1, loop_size=100) + self.assertEqual(len(notification_done), 2) finally: Message.notifyUser = original_notifyUser delattr(Organisation, 'failingMethod')