Files
odoo_source/addons/mail/security/ir.model.access.csv
T
std-odoo cc012a0864 [IMP] mail, various: add email templates management levels
Purpose
=======

Purpose of this commit is to add a new group for the mail template designer.
Goal is to make roles clearer: managers edit templates, users use them. This
commit allow some designers / managers to make email template and to let
others users use those email templates.

Specifications
==============

When this feature is enabled in the Settings page, a new group is required to
modify email templates in a composer like wizard or to make dynamic content.
This allows to separate managers editing / composing templates from standard
users that use them.

If the current does not have this group, the email body will be in readonly
mode if he selected an email template. That way we force him to use the email
template that the manager made.

Technical
=========

New Group
---------

Only users in this group will be able to create / write email template or
to write Jinja code in the mail composer (including other fields like subject
in mailing).

By default, all internal users have this group. Mass mailing users also have
this group as writing mailings is about the same management level as writing
templates.

Mail Composer Mixin
-------------------

In comment mode, the template is rendered and then saved on the body field
so non-"Mail Template Editor" users can load email templates.

But in mass mode, the body of the template is saved and then rendered and
many things change the body (HTML sanitizer, web editor move inline CSS
properties, add / remove spaces...). So in this case, we can not know if
the user changed the body or not. That is why we put the body field in
readonly mode so, it is not modified by the web editor.

Jinja code detection
--------------------

To detect dynamic Jinja content, we compile the template, and we browse the
AST. If we do not have a single "Template Data" node, we assume that the
template is dynamic.

When we detect the template as static, we do not render it. That way we
avoid unnecessary rendering.

Code cleaning
-------------

Move Jinja import into tools so that it is outside of mail framework code.

Task-2187263

closes odoo/odoo#75840

Related: odoo/enterprise#20547
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2021-09-02 03:42:54 +00:00

5.0 KiB

1idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
2access_mail_message_allmail.message.allmodel_mail_message1000
3access_mail_message_portalmail.message.portalmodel_mail_messagebase.group_portal1111
4access_mail_message_usermail.message.usermodel_mail_messagebase.group_user1111
5access_mail_mail_allmail.mail.allmodel_mail_mail0000
6access_mail_mail_portalmail.mail.portalmodel_mail_mailbase.group_portal0000
7access_mail_mail_usermail.mail.usermodel_mail_mailbase.group_user0000
8access_mail_mail_systemmail.mail.systemmodel_mail_mailbase.group_system1111
9access_mail_followers_allmail.followers.allmodel_mail_followers0000
10access_mail_followers_usermail.followers.usermodel_mail_followersbase.group_user1000
11access_mail_followers_systemmail.followers.systemmodel_mail_followersbase.group_system1111
12access_mail_notification_portalmail.notification.portalmodel_mail_notificationbase.group_portal1000
13access_mail_notification_usermail.notification.usermodel_mail_notificationbase.group_user1110
14access_mail_notification_systemmail.notification.systemmodel_mail_notificationbase.group_system1111
15access_mail_channel_allmail.group.allmodel_mail_channel1000
16access_mail_channel_usermail.group.usermodel_mail_channelbase.group_user1111
17access_mail_channel_partner_publicmail.channel.partner.publicmodel_mail_channel_partnerbase.group_public1000
18access_mail_channel_partner_portalmail.channel.partner.portalmodel_mail_channel_partnerbase.group_portal1111
19access_mail_channel_partner_usermail.channel.partner.usermodel_mail_channel_partnerbase.group_user1111
20access_mail_alias_allmail.alias.allmodel_mail_alias1000
21access_mail_alias_usermail.alias.usermodel_mail_aliasbase.group_user1000
22access_mail_alias_systemmail.alias.systemmodel_mail_aliasbase.group_system1111
23access_mail_message_subtype_allmail.message.subtype.allmodel_mail_message_subtype1000
24access_mail_message_subtype_usermail.message.subtype.usermodel_mail_message_subtypebase.group_user1111
25access_mail_tracking_value_allmail.tracking.value.allmodel_mail_tracking_value0000
26access_mail_tracking_value_portalmail.tracking.value.portalmodel_mail_tracking_valuebase.group_portal0000
27access_mail_tracking_value_usermail.tracking.value.usermodel_mail_tracking_valuebase.group_user0000
28access_mail_tracking_value_systemmail.tracking.value.systemmodel_mail_tracking_valuebase.group_system1111
29access_publisher_warranty_contract_allpublisher.warranty.contract.allmodel_publisher_warranty_contract1111
30access_mail_templatemail.templatemodel_mail_templatebase.group_user1000
31access_mail_template_editormail.template_editormodel_mail_templatemail.group_mail_template_editor1111
32access_mail_template_systemmail.template_systemmodel_mail_templatebase.group_system1111
33access_mail_shortcodemail.shortcodemodel_mail_shortcodebase.group_user1111
34access_mail_shortcode_portalmail.shortcode.portalmodel_mail_shortcodebase.group_portal1000
35access_mail_activity_allmail.activity.allmodel_mail_activity0000
36access_mail_activity_usermail.activity.usermodel_mail_activitybase.group_user1111
37access_mail_activity_type_allmail.activity.type.allmodel_mail_activity_type0000
38access_mail_activity_type_usermail.activity.type.usermodel_mail_activity_typebase.group_user1000
39access_mail_activity_type_systemmail.activity.type.systemmodel_mail_activity_typebase.group_system1111
40access_mail_blacklist_systemaccess_mail_blacklist_systemmodel_mail_blacklistbase.group_system1111
41access_mail_wizard_inviteaccess.mail.wizard.invitemodel_mail_wizard_invitebase.group_user1110
42access_mail_compose_messageaccess.mail.compose.messagemodel_mail_compose_messagebase.group_user1110
43access_mail_compose_message_portalaccess.mail.compose.message.portalmodel_mail_compose_messagebase.group_portal1110
44access_mail_resend_cancelaccess.mail.resend.cancelmodel_mail_resend_cancelbase.group_user1110
45access_mail_resend_messageaccess.mail.resend.messagemodel_mail_resend_messagebase.group_user1110
46access_mail_resend_partneraccess.mail.resend.partnermodel_mail_resend_partnerbase.group_user1110
47access_mail_template_previewaccess.mail.template.previewmodel_mail_template_previewbase.group_user1110
48access_mail_blacklist_remove_systemacesss.mail.blacklist.remove.systemmodel_mail_blacklist_removebase.group_system1111
49access_mail_guest_allmail.guestmodel_mail_guest0000
50access_mail_guest_usermail.guestmodel_mail_guestbase.group_user1000
51access_mail_guest_systemmail.guestmodel_mail_guestbase.group_system1111
52access_res_users_settings_allres.users.settingsmodel_res_users_settings0000
53access_res_users_settings_userres.users.settingsmodel_res_users_settingsbase.group_user1111
54ir_actions_report_access_userir.actions.report.access.userbase.model_ir_actions_reportbase.group_user1000