diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py index e647dfcf122..ca6500d9b2d 100644 --- a/addons/mail/models/mail_template.py +++ b/addons/mail/models/mail_template.py @@ -69,12 +69,22 @@ class MailTemplate(models.Model): help="Sidebar action to make this template available on records " "of the related document model") + # access + can_write = fields.Boolean(compute='_compute_can_write', + help='The current user can edit the template.') + # Overrides of mail.render.mixin @api.depends('model') def _compute_render_model(self): for template in self: template.render_model = template.model + @api.depends_context('uid') + def _compute_can_write(self): + writable_templates = self._filter_access_rules('write') + for template in self: + template.can_write = template in writable_templates + # ------------------------------------------------------------ # CRUD # ------------------------------------------------------------ diff --git a/addons/mail/static/src/scss/composer.scss b/addons/mail/static/src/scss/composer.scss index 33a61c521ba..a7fc3eb484b 100644 --- a/addons/mail/static/src/scss/composer.scss +++ b/addons/mail/static/src/scss/composer.scss @@ -175,3 +175,10 @@ background-color: rgba($white, 0.1); } } + +.o_mail_composer_form { + .oe-bordered-editor[name=body] .o_readonly { + border: 1px solid $o-gray-300; + padding: 4px; + } +} diff --git a/addons/mail/views/mail_template_views.xml b/addons/mail/views/mail_template_views.xml index ee814dba4d2..664d09697f7 100644 --- a/addons/mail/views/mail_template_views.xml +++ b/addons/mail/views/mail_template_views.xml @@ -53,7 +53,10 @@

- + + diff --git a/addons/mail/wizard/mail_compose_message_views.xml b/addons/mail/wizard/mail_compose_message_views.xml index d785d7a1fb5..9114efd14b9 100644 --- a/addons/mail/wizard/mail_compose_message_views.xml +++ b/addons/mail/wizard/mail_compose_message_views.xml @@ -6,7 +6,7 @@ mail.compose.message -
+ diff --git a/addons/mail/wizard/mail_template_preview.py b/addons/mail/wizard/mail_template_preview.py index 118fbf4fb93..e82cb90e0fe 100644 --- a/addons/mail/wizard/mail_template_preview.py +++ b/addons/mail/wizard/mail_template_preview.py @@ -24,10 +24,11 @@ class MailTemplatePreview(models.TransientModel): result = super(MailTemplatePreview, self).default_get(fields) if not result.get('mail_template_id') or 'resource_ref' not in fields: return result - mail_template = self.env['mail.template'].browse(result['mail_template_id']) - res = self.env[mail_template.model_id.model].search([], limit=1) + mail_template = self.env['mail.template'].browse(result['mail_template_id']).sudo() + model = mail_template.model + res = self.env[model].search([], limit=1) if res: - result['resource_ref'] = '%s,%s' % (mail_template.model_id.model, res.id) + result['resource_ref'] = '%s,%s' % (model, res.id) return result mail_template_id = fields.Many2one('mail.template', string='Related Mail Template', required=True) @@ -52,8 +53,9 @@ class MailTemplatePreview(models.TransientModel): @api.depends('model_id') def _compute_no_record(self): - for preview in self: - preview.no_record = (self.env[preview.model_id.model].search_count([]) == 0) if preview.model_id else True + for preview, preview_sudo in zip(self, self.sudo()): + model_id = preview_sudo.model_id + preview.no_record = not model_id or not self.env[model_id.model].search_count([]) @api.depends('lang', 'resource_ref') def _compute_mail_template_fields(self): diff --git a/addons/survey/wizard/survey_invite_views.xml b/addons/survey/wizard/survey_invite_views.xml index 834d4181cc9..9da8fdb2322 100644 --- a/addons/survey/wizard/survey_invite_views.xml +++ b/addons/survey/wizard/survey_invite_views.xml @@ -5,7 +5,7 @@ survey.invite.view.form survey.invite - + diff --git a/addons/website_slides/wizard/slide_channel_invite_views.xml b/addons/website_slides/wizard/slide_channel_invite_views.xml index 42a9cd87fd4..35f1a035953 100644 --- a/addons/website_slides/wizard/slide_channel_invite_views.xml +++ b/addons/website_slides/wizard/slide_channel_invite_views.xml @@ -5,7 +5,7 @@ slide.channel.invite.view.form slide.channel.invite - +