From 19c364ea2dbda0f84d07d8b231f7fc389eaa7ee5 Mon Sep 17 00:00:00 2001 From: Julien Giannone Date: Fri, 3 Sep 2021 15:45:08 +0000 Subject: [PATCH] [IMP] mail: add model for message reactions Add the model in the freeze for next version, the interface is not fully ready to merge yet but it will be added in https://github.com/odoo/odoo/pull/75630 Part of task-2361194 closes odoo/odoo#75911 Signed-off-by: Samuel Degueldre --- addons/mail/__manifest__.py | 1 + addons/mail/models/__init__.py | 1 + addons/mail/models/mail_message_reaction.py | 24 ++++++++++++++++++ addons/mail/security/ir.model.access.csv | 2 ++ addons/mail/views/mail_menus.xml | 5 ++++ .../views/mail_message_reaction_views.xml | 25 +++++++++++++++++++ 6 files changed, 58 insertions(+) create mode 100644 addons/mail/models/mail_message_reaction.py create mode 100644 addons/mail/views/mail_message_reaction_views.xml diff --git a/addons/mail/__manifest__.py b/addons/mail/__manifest__.py index fe5779b668f..f0ba080c207 100644 --- a/addons/mail/__manifest__.py +++ b/addons/mail/__manifest__.py @@ -41,6 +41,7 @@ 'views/discuss_public_templates.xml', 'views/mail_alias_views.xml', 'views/mail_guest_views.xml', + 'views/mail_message_reaction_views.xml', 'views/res_users_views.xml', 'views/res_users_settings_views.xml', 'views/mail_template_views.xml', diff --git a/addons/mail/models/__init__.py b/addons/mail/models/__init__.py index b2d16600dd2..5a584ddab2b 100644 --- a/addons/mail/models/__init__.py +++ b/addons/mail/models/__init__.py @@ -20,6 +20,7 @@ from . import mail_activity_type from . import mail_activity from . import mail_blacklist from . import mail_followers +from . import mail_message_reaction from . import mail_message_subtype from . import mail_message from . import mail_mail diff --git a/addons/mail/models/mail_message_reaction.py b/addons/mail/models/mail_message_reaction.py new file mode 100644 index 00000000000..406e6c5f5d8 --- /dev/null +++ b/addons/mail/models/mail_message_reaction.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models, fields + + +class MailMessageReaction(models.Model): + _name = 'mail.message.reaction' + _description = 'Message Reaction' + _order = 'id desc' + _log_access = False + + message_id = fields.Many2one(string="Message", comodel_name='mail.message', ondelete='cascade', required=True, readonly=True) + content = fields.Char(string="Content", required=True, readonly=True) + partner_id = fields.Many2one(string="Reacting Partner", comodel_name='res.partner', ondelete='cascade', readonly=True) + guest_id = fields.Many2one(string="Reacting Guest", comodel_name='mail.guest', ondelete='cascade', readonly=True) + + def init(self): + self.env.cr.execute("CREATE UNIQUE INDEX IF NOT EXISTS mail_message_reaction_partner_unique ON %s (message_id, content, partner_id) WHERE partner_id IS NOT NULL" % self._table) + self.env.cr.execute("CREATE UNIQUE INDEX IF NOT EXISTS mail_message_reaction_guest_unique ON %s (message_id, content, guest_id) WHERE guest_id IS NOT NULL" % self._table) + + _sql_constraints = [ + ("partner_or_guest_exists", "CHECK((partner_id IS NOT NULL AND guest_id IS NULL) OR (partner_id IS NULL AND guest_id IS NOT NULL))", "A message reaction must be from a partner or from a guest."), + ] diff --git a/addons/mail/security/ir.model.access.csv b/addons/mail/security/ir.model.access.csv index 97d586ea12d..68dfa6872fd 100644 --- a/addons/mail/security/ir.model.access.csv +++ b/addons/mail/security/ir.model.access.csv @@ -22,6 +22,8 @@ access_mail_channel_rtc_session_system,mail.channel.rtc.session.system,model_mai access_mail_alias_all,mail.alias.all,model_mail_alias,,1,0,0,0 access_mail_alias_user,mail.alias.user,model_mail_alias,base.group_user,1,0,0,0 access_mail_alias_system,mail.alias.system,model_mail_alias,base.group_system,1,1,1,1 +access_mail_message_reaction_all,mail.message.reaction.all,model_mail_message_reaction,,0,0,0,0 +access_mail_message_reaction_system,mail.message.reaction.system,model_mail_message_reaction,base.group_system,1,1,1,1 access_mail_message_subtype_all,mail.message.subtype.all,model_mail_message_subtype,,1,0,0,0 access_mail_message_subtype_user,mail.message.subtype.user,model_mail_message_subtype,base.group_user,1,1,1,1 access_mail_tracking_value_all,mail.tracking.value.all,model_mail_tracking_value,,0,0,0,0 diff --git a/addons/mail/views/mail_menus.xml b/addons/mail/views/mail_menus.xml index 5b8425001c6..4e4088a99fa 100644 --- a/addons/mail/views/mail_menus.xml +++ b/addons/mail/views/mail_menus.xml @@ -113,6 +113,11 @@ action="action_ice_servers" parent="mail.mail_menu_technical" sequence="53"/> +