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)

Reply via email to