56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
# 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 Pool, PoolMeta
|
|
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', 'email']:
|
|
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
|