changeset f8724016634c in modules/notification_email:default
details:
https://hg.tryton.org/modules/notification_email?cmd=changeset&node=f8724016634c
description:
Factorize addresses computation
This allows to extend the addresses of a notification.
issue10521
review358281009
diffstat:
notification.py | 86 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 49 insertions(+), 37 deletions(-)
diffs (103 lines):
diff -r f5c2f382c241 -r f8724016634c notification.py
--- a/notification.py Sun Jul 04 17:54:47 2021 +0200
+++ b/notification.py Mon Jul 12 23:12:23 2021 +0200
@@ -229,43 +229,10 @@
or config.get('email', 'from'))
logs = []
for record in records:
- languagues = set()
- to = []
- if self.recipients:
- recipients = getattr(record, self.recipients.name, None)
- if recipients:
- languagues.update(self._get_languages(recipients))
- to = self._get_addresses(recipients)
- if not to and self.fallback_recipients:
- languagues.update(
- self._get_languages(self.fallback_recipients))
- to = self._get_addresses(self.fallback_recipients)
-
- cc = []
- if self.recipients_secondary:
- recipients_secondary = getattr(
- record, self.recipients_secondary.name, None)
- if recipients_secondary:
- languagues.update(
- self._get_languages(recipients_secondary))
- cc = self._get_addresses(recipients_secondary)
- if not cc and self.fallback_recipients_secondary:
- languagues.update(
- self._get_languages(self.fallback_recipients_secondary))
- cc = self._get_addresses(self.fallback_recipients_secondary)
-
- bcc = []
- if self.recipients_hidden:
- recipients_hidden = getattr(
- record, self.recipients_hidden.name, None)
- if recipients_hidden:
- languagues.update(self._get_languages(recipients_hidden))
- bcc = self._get_addresses(recipients_hidden)
- if not bcc and self.fallback_recipients_hidden:
- languagues.update(
- self._get_languages(self.fallback_recipients_hidden))
- bcc = self._get_addresses(self.fallback_recipients_hidden)
-
+ to, to_languages = self._get_to(record)
+ cc, cc_languages = self._get_cc(record)
+ bcc, bcc_languages = self._get_bcc(record)
+ languagues = to_languages | cc_languages | bcc_languages
to_addrs = [e for _, e in getaddresses(to + cc + bcc)]
if to_addrs:
msg = self.get_email(record, from_, to, cc, bcc, languagues)
@@ -276,6 +243,51 @@
if logs:
Log.create(logs)
+ def _get_to(self, record):
+ to = []
+ languagues = set()
+ if self.recipients:
+ recipients = getattr(record, self.recipients.name, None)
+ if recipients:
+ languagues.update(self._get_languages(recipients))
+ to = self._get_addresses(recipients)
+ if not to and self.fallback_recipients:
+ languagues.update(
+ self._get_languages(self.fallback_recipients))
+ to = self._get_addresses(self.fallback_recipients)
+ return to, languagues
+
+ def _get_cc(self, record):
+ cc = []
+ languagues = set()
+ if self.recipients_secondary:
+ recipients_secondary = getattr(
+ record, self.recipients_secondary.name, None)
+ if recipients_secondary:
+ languagues.update(
+ self._get_languages(recipients_secondary))
+ cc = self._get_addresses(recipients_secondary)
+ if not cc and self.fallback_recipients_secondary:
+ languagues.update(
+ self._get_languages(self.fallback_recipients_secondary))
+ cc = self._get_addresses(self.fallback_recipients_secondary)
+ return cc, languagues
+
+ def _get_bcc(self, record):
+ bcc = []
+ languagues = set()
+ if self.recipients_hidden:
+ recipients_hidden = getattr(
+ record, self.recipients_hidden.name, None)
+ if recipients_hidden:
+ languagues.update(self._get_languages(recipients_hidden))
+ bcc = self._get_addresses(recipients_hidden)
+ if not bcc and self.fallback_recipients_hidden:
+ languagues.update(
+ self._get_languages(self.fallback_recipients_hidden))
+ bcc = self._get_addresses(self.fallback_recipients_hidden)
+ return bcc, languagues
+
@classmethod
def validate(cls, notifications):
super().validate(notifications)