details: https://code.tryton.org/tryton/commit/9a04fd46cbcb
branch: 7.8
user: Cédric Krier <[email protected]>
date: Tue Jun 30 23:08:57 2026 +0200
description:
Enforce access rights on the email template record on marketing email
Closes #14907
(grafted from 856dea6dca76bd9cd7fa03a3dbe51f160b912e69)
diffstat:
modules/marketing_email/CHANGELOG | 1 +
modules/marketing_email/marketing.py | 12 ++++++++++++
2 files changed, 13 insertions(+), 0 deletions(-)
diffs (44 lines):
diff -r 33fd88f82c04 -r 9a04fd46cbcb modules/marketing_email/CHANGELOG
--- a/modules/marketing_email/CHANGELOG Tue Jun 30 09:48:33 2026 +0200
+++ b/modules/marketing_email/CHANGELOG Tue Jun 30 23:08:57 2026 +0200
@@ -1,3 +1,4 @@
+* Enforce access rights on the email template record (issue14907)
Version 7.8.2 - 2026-03-02
--------------------------
diff -r 33fd88f82c04 -r 9a04fd46cbcb modules/marketing_email/marketing.py
--- a/modules/marketing_email/marketing.py Tue Jun 30 09:48:33 2026 +0200
+++ b/modules/marketing_email/marketing.py Tue Jun 30 23:08:57 2026 +0200
@@ -36,6 +36,11 @@
from trytond.url import http_host
from trytond.wizard import Button, StateTransition, StateView, Wizard
+try:
+ from trytond.model import ModelAccessProxy
+except ImportError:
+ ModelAccessProxy = None
+
from .exceptions import EMailValidationError, TemplateError
@@ -434,6 +439,7 @@
def process(cls, messages=None, emails=None, smtpd_datamanager=None):
pool = Pool()
WebShortener = pool.get('web.shortened_url')
+ ModelData = pool.get('ir.model.data')
spy_pixel = config.getboolean(
'marketing', 'email_spy_pixel', default=False)
@@ -487,6 +493,12 @@
message=message.rec_name,
exception=exception)) from exception
for email in (emails or message.list_.emails):
+ if ModelAccessProxy:
+ email = ModelAccessProxy(
+ email, {
+ '_groups': [
+ ModelData.get_id('marketing.group_marketing')],
+ })
content = (template
.generate(
email=email,