From e1b954f066a42fd9eb613861a517070f8ad35823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 11 Jul 2017 16:58:53 +0200 Subject: [PATCH] [FIX] mail: do not put context as feedback when marking an activity as done Backport of 9fb86d6facbf99346dddcf41096b7045663b49a4 --- addons/mail/models/mail_activity.py | 7 ++++++- addons/mail/static/src/js/activity.js | 2 +- addons/mail/static/tests/chatter_tests.js | 10 +++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py index 1f094445a44..581267d4435 100644 --- a/addons/mail/models/mail_activity.py +++ b/addons/mail/models/mail_activity.py @@ -143,7 +143,12 @@ class MailActivity(models.Model): return res @api.multi - def action_done(self, feedback=False): + def action_done(self): + """ Wrapper without feedback because web button add context as + parameter, therefore setting context to feedback """ + return self.action_feedback() + + def action_feedback(self, feedback=False): message = self.env['mail.message'] if feedback: self.write(dict(feedback=feedback)) diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js index 1ff531bc8b4..50ae03b1215 100644 --- a/addons/mail/static/src/js/activity.js +++ b/addons/mail/static/src/js/activity.js @@ -54,7 +54,7 @@ var AbstractActivityField = AbstractField.extend({ _markActivityDone: function (id, feedback) { return this._rpc({ model: 'mail.activity', - method: 'action_done', + method: 'action_feedback', args: [[id]], kwargs: {feedback: feedback}, }); diff --git a/addons/mail/static/tests/chatter_tests.js b/addons/mail/static/tests/chatter_tests.js index dee0fa94acf..f268851463d 100644 --- a/addons/mail/static/tests/chatter_tests.js +++ b/addons/mail/static/tests/chatter_tests.js @@ -279,7 +279,7 @@ QUnit.test('kanban activity widget with an activity', function (assert) { '', mockRPC: function (route, args) { rpcCount++; - if (route === '/web/dataset/call_kw/mail.activity/action_done') { + if (route === '/web/dataset/call_kw/mail.activity/action_feedback') { var current_ids = this.data.partner.records[0].activity_ids; var done_ids = args.args[0]; this.data.partner.records[0].activity_ids = _.difference(current_ids, done_ids); @@ -523,8 +523,8 @@ QUnit.test('form activity widget: schedule next activity', function (assert) { '', res_id: 2, mockRPC: function (route, args) { - if (route === '/web/dataset/call_kw/mail.activity/action_done') { - assert.ok(_.isEqual(args.args[0], [1]), "should call 'action_done' for id 1"); + if (route === '/web/dataset/call_kw/mail.activity/action_feedback') { + assert.ok(_.isEqual(args.args[0], [1]), "should call 'action_feedback' for id 1"); assert.strictEqual(args.kwargs.feedback, 'everything is ok', "the feedback should be sent correctly"); return $.when(); @@ -609,8 +609,8 @@ QUnit.test('form activity widget: mark as done and remove', function (assert) { mockRPC: function (route, args) { if (route === '/web/dataset/call_kw/mail.activity/unlink') { assert.ok(_.isEqual(args.args[0], [1]), "should call 'unlink' for id 1"); - } else if (route === '/web/dataset/call_kw/mail.activity/action_done') { - assert.ok(_.isEqual(args.args[0], [2]), "should call 'action_done' for id 2"); + } else if (route === '/web/dataset/call_kw/mail.activity/action_feedback') { + assert.ok(_.isEqual(args.args[0], [2]), "should call 'action_feedback' for id 2"); assert.strictEqual(args.kwargs.feedback, 'everything is ok', "the feedback should be sent correctly"); // should generate a message and unlink the activity