changeset 1c5f82e2c528 in modules/web_user:default
details: https://hg.tryton.org/modules/web_user?cmd=changeset;node=1c5f82e2c528
description:
Send client email via server
issue9449
review292001002
diffstat:
__init__.py | 3 +++
ir.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 0 deletions(-)
diffs (79 lines):
diff -r 178cf9ef7604 -r 1c5f82e2c528 __init__.py
--- a/__init__.py Tue May 19 18:52:22 2020 +0200
+++ b/__init__.py Thu Sep 17 17:18:02 2020 +0200
@@ -4,6 +4,7 @@
from trytond.pool import Pool
from . import user
from . import party
+from . import ir
def register():
@@ -11,6 +12,8 @@
user.User,
user.UserAuthenticateAttempt,
user.UserSession,
+ ir.Email,
+ ir.EmailTemplate,
module='web_user', type_='model')
Pool.register(
party.Replace,
diff -r 178cf9ef7604 -r 1c5f82e2c528 ir.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ir.py Thu Sep 17 17:18:02 2020 +0200
@@ -0,0 +1,55 @@
+# This file is part of Tryton. The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+from trytond.pool import PoolMeta, Pool
+from trytond.tools import escape_wildcard
+
+
+class Email(metaclass=PoolMeta):
+ __name__ = 'ir.email'
+
+ @classmethod
+ def _match(cls, name, email):
+ pool = Pool()
+ User = pool.get('web.user')
+ yield from super()._match(name, email)
+ domain = ['OR']
+ for field in ['party.name', 'value']:
+ for value in [name, email]:
+ if value and len(value) >= 3:
+ domain.append(
+ (field, 'ilike', '%' + escape_wildcard(value) + '%'))
+ for user in User.search([
+ ('email', '!=', ''),
+ domain,
+ ], order=[]):
+ yield user.party.name if user.party else '', user.email
+
+
+class EmailTemplate(metaclass=PoolMeta):
+ __name__ = 'ir.email.template'
+
+ @classmethod
+ def email_models(cls):
+ return super().email_models() + ['web.user']
+
+ @classmethod
+ def _get_address(cls, record):
+ pool = Pool()
+ User = pool.get('web.user')
+ address = super()._get_address(record)
+ if isinstance(record, User):
+ name = None
+ if record.party:
+ name = record.party.name
+ address = (name, record.email)
+ return address
+
+ @classmethod
+ def _get_language(cls, record):
+ pool = Pool()
+ User = pool.get('web.user')
+ language = super()._get_language(record)
+ if isinstance(record, User):
+ if record.party:
+ language = cls._get_language(record.party)
+ return language