Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core

Commits:
8e7a6613 by Mark Sapiro at 2018-09-11T15:19:48Z
Enable setting additional templates in the var/templates hierarchy.

- - - - -
bb9222a5 by Mark Sapiro at 2018-09-11T15:34:19Z
Merge branch 'template' into 'master'

Enable setting additional templates in the var/templates hierarchy.

Closes #486

See merge request mailman/mailman!398
- - - - -


6 changed files:

- src/mailman/docs/NEWS.rst
- src/mailman/interfaces/template.py
- src/mailman/model/template.py
- + src/mailman/templates/en/list:member:digest:header.txt
- + src/mailman/templates/en/list:member:regular:header.txt
- + src/mailman/templates/en/list:user:notice:goodbye.txt


Changes:

=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -110,6 +110,8 @@ Bugs
   has been fixed to generate proper mappings in this case.  (Closes #485)
 * Fix a bug where duplicate address records can be created when a user adds an
   existing address with a different case. (Closes #476)
+* Several additional templates can now be set in the ``var/templates``
+  hierarchy.  (Closes #486)
 
 Command line
 ------------


=====================================
src/mailman/interfaces/template.py
=====================================
@@ -159,7 +159,9 @@ class ITemplateManager(Interface):
 
 
 # Mapping of template names to their in-source file names.  A None value means
-# that there is no file in the tree for that template.
+# that there is no file in the tree for that template, but we have possibly
+# empty files for all templates so they can be defined in the var/templates
+# hierarchy.
 
 ALL_TEMPLATES = {
     key: '{}.txt'.format(key)
@@ -171,9 +173,14 @@ ALL_TEMPLATES = {
         'list:admin:notice:subscribe',
         'list:admin:notice:unrecognized',
         'list:admin:notice:unsubscribe',
+        'list:member:digest:footer',
+        'list:member:digest:header',
         'list:member:digest:masthead',
+        'list:member:regular:footer',
+        'list:member:regular:header',
         'list:user:action:subscribe',
         'list:user:action:unsubscribe',
+        'list:user:notice:goodbye',
         'list:user:notice:hold',
         'list:user:notice:no-more-today',
         'list:user:notice:post',
@@ -184,18 +191,11 @@ ALL_TEMPLATES = {
         }
     }
 
-# These have other names.
-ALL_TEMPLATES.update({
+# These have alternate names.
+ALT_TEMPLATE_NAMES = {
     'list:member:digest:footer': 'list:member:generic:footer.txt',
     'list:member:regular:footer': 'list:member:generic:footer.txt',
-    })
-
-# These are some extra supported templates which don't have a mapping to a
-# file in the source tree.
-ALL_TEMPLATES.update({
-    'list:member:digest:header': None,
-    'list:member:regular:header': None,
-    'list:user:notice:goodbye':  None,
-    })
+    }
 
 public(ALL_TEMPLATES=ALL_TEMPLATES)
+public(ALT_TEMPLATE_NAMES=ALT_TEMPLATE_NAMES)


=====================================
src/mailman/model/template.py
=====================================
@@ -27,9 +27,9 @@ from mailman.interfaces.cache import ICacheManager
 from mailman.interfaces.domain import IDomain
 from mailman.interfaces.mailinglist import IMailingList
 from mailman.interfaces.template import (
-    ALL_TEMPLATES, ITemplateLoader, ITemplateManager)
+    ALL_TEMPLATES, ALT_TEMPLATE_NAMES, ITemplateLoader, ITemplateManager)
 from mailman.utilities import protocols
-from mailman.utilities.i18n import find
+from mailman.utilities.i18n import TemplateNotFoundError, find
 from mailman.utilities.string import expand
 from public import public
 from requests import HTTPError
@@ -197,10 +197,19 @@ class TemplateLoader:
         missing = object()
         default_uri = ALL_TEMPLATES.get(name, missing)
         if default_uri is None:
-            return ''
+            # Currently default_uri is never None, but leave this in case
+            # of a future change.
+            return ''                                       # pragma: nocover
         elif default_uri is missing:
             raise URLError('No such file')
-        path, fp = find(default_uri, mlist, code)
+        try:
+            path, fp = find(default_uri, mlist, code)
+        except TemplateNotFoundError:
+            default_uri = ALT_TEMPLATE_NAMES.get(name, missing)
+            if default_uri is missing:
+                # Here again, default_uri is never missing, but leave it.
+                raise                                       # pragma: nocover
+            path, fp = find(default_uri, mlist, code)
         try:
             return fp.read()
         finally:


=====================================
src/mailman/templates/en/list:member:digest:header.txt
=====================================


=====================================
src/mailman/templates/en/list:member:regular:header.txt
=====================================


=====================================
src/mailman/templates/en/list:user:notice:goodbye.txt
=====================================



View it on GitLab: 
https://gitlab.com/mailman/mailman/compare/0fbb37f0ca1d93338751c6ed3ec3f5f7bbb46daa...bb9222a568718a629d3eb2c4e0db4ee143266f56

-- 
View it on GitLab: 
https://gitlab.com/mailman/mailman/compare/0fbb37f0ca1d93338751c6ed3ec3f5f7bbb46daa...bb9222a568718a629d3eb2c4e0db4ee143266f56
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: 
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to