summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStéphane Bidoul (ACSONE) <stephane.bidoul@acsone.eu>2019-05-10 17:19:55 +0000
committerThibault Delavallée <tde@odoo.com>2019-10-02 15:42:04 +0000
commitc8c8413e3e86e2abc51ade48f11320de961e5e50 (patch)
tree07004cf8d64161b30393ba3f802f346f5d4c29fb
parent9d0f172f29085a6b164313bf20178270b9572cc2 (diff)
[IMP] mail: enforce kw args for message_{post/notify/log}
Since there are message_post overrides using the form `def message_post(self, **kwargs)` in some modules, this method is intended to be invoked with keyword arguments only. This commit enforces this behavior. Calls such as `message_post("body")` will fail regardless of which addon is installed, forcing users to use `message_post(body="body")`. It also fixes a message_post override in hr, and applies the same mechanism to message_notify, and _message_log. closes odoo/odoo#33306 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
-rw-r--r--addons/hr/models/hr_employee.py4
-rw-r--r--addons/mail/models/mail_channel.py2
-rw-r--r--addons/mail/models/mail_thread.py7
-rw-r--r--addons/website_blog/models/website_blog.py2
-rw-r--r--addons/website_forum/models/forum.py2
-rw-r--r--addons/website_slides/models/slide_channel.py2
-rw-r--r--addons/website_slides/models/slide_slide.py2
7 files changed, 11 insertions, 10 deletions
diff --git a/addons/hr/models/hr_employee.py b/addons/hr/models/hr_employee.py
index ad1f40a8e8a..c3d031e8c33 100644
--- a/addons/hr/models/hr_employee.py
+++ b/addons/hr/models/hr_employee.py
@@ -335,8 +335,8 @@ class HrEmployeePrivate(models.Model):
return super(HrEmployeePrivate, self._post_author())._message_log(**kwargs)
@api.returns('mail.message', lambda value: value.id)
- def message_post(self, *args, **kwargs):
- return super(HrEmployeePrivate, self._post_author()).message_post(*args, **kwargs)
+ def message_post(self, **kwargs):
+ return super(HrEmployeePrivate, self._post_author()).message_post(**kwargs)
def _sms_get_partner_fields(self):
return ['user_partner_id']
diff --git a/addons/mail/models/mail_channel.py b/addons/mail/models/mail_channel.py
index 91d40bed9de..d3d2b7e3094 100644
--- a/addons/mail/models/mail_channel.py
+++ b/addons/mail/models/mail_channel.py
@@ -355,7 +355,7 @@ class Channel(models.Model):
return moderation_status, email
@api.returns('mail.message', lambda value: value.id)
- def message_post(self, message_type='notification', **kwargs):
+ def message_post(self, *, message_type='notification', **kwargs):
moderation_status, email = self._extract_moderation_values(message_type, **kwargs)
if moderation_status == 'rejected':
return self.env['mail.message']
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py
index a1348504f27..59a74eaf364 100644
--- a/addons/mail/models/mail_thread.py
+++ b/addons/mail/models/mail_thread.py
@@ -1764,7 +1764,7 @@ class MailThread(models.AbstractModel):
return return_values
@api.returns('mail.message', lambda value: value.id)
- def message_post(self,
+ def message_post(self, *,
body='', subject=None, message_type='notification',
email_from=None, author_id=None, parent_id=False,
subtype_id=False, subtype=None, partner_ids=None, channel_ids=None,
@@ -1954,7 +1954,8 @@ class MailThread(models.AbstractModel):
composer.write(update_values)
return composer.send_mail(auto_commit=auto_commit)
- def message_notify(self, partner_ids=False, parent_id=False, model=False, res_id=False,
+ def message_notify(self, *,
+ partner_ids=False, parent_id=False, model=False, res_id=False,
author_id=None, email_from=None, body='', subject=False, **kwargs):
""" Shortcut allowing to notify partners of messages that shouldn't be
displayed on a document. It pushes notifications on inbox or by email depending
@@ -1997,7 +1998,7 @@ class MailThread(models.AbstractModel):
MailThread._notify_thread(new_message, values, **notif_kwargs)
return new_message
- def _message_log(self, body='', author_id=None, email_from=None, subject=False, message_type='notification', **kwargs):
+ def _message_log(self, *, body='', author_id=None, email_from=None, subject=False, message_type='notification', **kwargs):
""" Shortcut allowing to post note on a document. It does not perform
any notification and pre-computes some values to have a short code
as optimized as possible. This method is private as it does not check
diff --git a/addons/website_blog/models/website_blog.py b/addons/website_blog/models/website_blog.py
index b6e9abbe0ff..47bff0f31aa 100644
--- a/addons/website_blog/models/website_blog.py
+++ b/addons/website_blog/models/website_blog.py
@@ -37,7 +37,7 @@ class Blog(models.Model):
return res
@api.returns('mail.message', lambda value: value.id)
- def message_post(self, parent_id=False, subtype=None, **kwargs):
+ def message_post(self, *, parent_id=False, subtype=None, **kwargs):
""" Temporary workaround to avoid spam. If someone replies on a channel
through the 'Presentation Published' email, it should be considered as a
note as we don't want all channel followers to be notified of this answer. """
diff --git a/addons/website_forum/models/forum.py b/addons/website_forum/models/forum.py
index 12dc7fc5739..f3738eb07e2 100644
--- a/addons/website_forum/models/forum.py
+++ b/addons/website_forum/models/forum.py
@@ -815,7 +815,7 @@ class Post(models.Model):
return groups
@api.returns('mail.message', lambda value: value.id)
- def message_post(self, message_type='notification', **kwargs):
+ def message_post(self, *, message_type='notification', **kwargs):
if self.ids and message_type == 'comment': # user comments have a restriction on karma
# add followers of comments on the parent post
if self.parent_id:
diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py
index 449e7b313f0..a6eaac7b953 100644
--- a/addons/website_slides/models/slide_channel.py
+++ b/addons/website_slides/models/slide_channel.py
@@ -360,7 +360,7 @@ class Channel(models.Model):
return res
@api.returns('mail.message', lambda value: value.id)
- def message_post(self, parent_id=False, subtype=None, **kwargs):
+ def message_post(self, *, parent_id=False, subtype=None, **kwargs):
""" Temporary workaround to avoid spam. If someone replies on a channel
through the 'Presentation Published' email, it should be considered as a
note as we don't want all channel followers to be notified of this answer. """
diff --git a/addons/website_slides/models/slide_slide.py b/addons/website_slides/models/slide_slide.py
index f62c6c09ce7..9728e42aad7 100644
--- a/addons/website_slides/models/slide_slide.py
+++ b/addons/website_slides/models/slide_slide.py
@@ -434,7 +434,7 @@ class Slide(models.Model):
# ---------------------------------------------------------
@api.returns('mail.message', lambda value: value.id)
- def message_post(self, message_type='notification', **kwargs):
+ def message_post(self, *, message_type='notification', **kwargs):
self.ensure_one()
if message_type == 'comment' and not self.channel_id.can_comment: # user comments have a restriction on karma
raise AccessError(_('Not enough karma to comment'))