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

Reply via email to