mirror of
https://github.com/element-hq/synapse
synced 2024-08-19 20:50:21 +00:00
Merge pull request #4052 from matrix-org/rav/ship_resources_as_package_data
Ship the email templates as package_data
This commit is contained in:
commit
f1bfe6167a
13 changed files with 53 additions and 6 deletions
|
@ -12,12 +12,12 @@ recursive-include synapse/storage/schema *.sql
|
||||||
recursive-include synapse/storage/schema *.py
|
recursive-include synapse/storage/schema *.py
|
||||||
|
|
||||||
recursive-include docs *
|
recursive-include docs *
|
||||||
recursive-include res *
|
|
||||||
recursive-include scripts *
|
recursive-include scripts *
|
||||||
recursive-include scripts-dev *
|
recursive-include scripts-dev *
|
||||||
recursive-include synapse *.pyi
|
recursive-include synapse *.pyi
|
||||||
recursive-include tests *.py
|
recursive-include tests *.py
|
||||||
|
|
||||||
|
recursive-include synapse/res *
|
||||||
recursive-include synapse/static *.css
|
recursive-include synapse/static *.css
|
||||||
recursive-include synapse/static *.gif
|
recursive-include synapse/static *.gif
|
||||||
recursive-include synapse/static *.html
|
recursive-include synapse/static *.html
|
||||||
|
|
12
changelog.d/4052.feature
Normal file
12
changelog.d/4052.feature
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
Ship the example email templates as part of the package
|
||||||
|
|
||||||
|
**Note**: if you deploy your Synapse instance from a git checkout or a github
|
||||||
|
snapshot URL, then this means that the example email templates will no longer
|
||||||
|
be installed in `res/templates`. If you have email notifications enabled, you
|
||||||
|
should ensure that `email.template_dir` is either configured to point at a
|
||||||
|
directory where you have installed customised templates, or leave it unset to
|
||||||
|
use the default templates.
|
||||||
|
|
||||||
|
The configuration parser will try to detect the situation where
|
||||||
|
`email.template_dir` is incorrectly set to `res/templates` and do the right
|
||||||
|
thing, but will warn about this.
|
|
@ -211,7 +211,9 @@ email:
|
||||||
require_transport_security: False
|
require_transport_security: False
|
||||||
notif_from: "{{ SYNAPSE_SMTP_FROM or "hostmaster@" + SYNAPSE_SERVER_NAME }}"
|
notif_from: "{{ SYNAPSE_SMTP_FROM or "hostmaster@" + SYNAPSE_SERVER_NAME }}"
|
||||||
app_name: Matrix
|
app_name: Matrix
|
||||||
template_dir: res/templates
|
# if template_dir is unset, uses the example templates that are part of
|
||||||
|
# the Synapse distribution.
|
||||||
|
#template_dir: res/templates
|
||||||
notif_template_html: notif_mail.html
|
notif_template_html: notif_mail.html
|
||||||
notif_template_text: notif_mail.txt
|
notif_template_text: notif_mail.txt
|
||||||
notif_for_new_users: True
|
notif_for_new_users: True
|
||||||
|
|
|
@ -13,11 +13,25 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# This file can't be called email.py because if it is, we cannot:
|
# This file can't be called email.py because if it is, we cannot:
|
||||||
import email.utils
|
import email.utils
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import textwrap
|
||||||
|
|
||||||
from ._base import Config
|
from ._base import Config
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
TEMPLATE_DIR_WARNING = """\
|
||||||
|
WARNING: The email notifier is configured to look for templates in '%(template_dir)s',
|
||||||
|
but no templates could be found there. We will fall back to using the example templates;
|
||||||
|
to get rid of this warning, leave 'email.template_dir' unset.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
class EmailConfig(Config):
|
class EmailConfig(Config):
|
||||||
def read_config(self, config):
|
def read_config(self, config):
|
||||||
|
@ -38,7 +52,6 @@ class EmailConfig(Config):
|
||||||
"smtp_host",
|
"smtp_host",
|
||||||
"smtp_port",
|
"smtp_port",
|
||||||
"notif_from",
|
"notif_from",
|
||||||
"template_dir",
|
|
||||||
"notif_template_html",
|
"notif_template_html",
|
||||||
"notif_template_text",
|
"notif_template_text",
|
||||||
]
|
]
|
||||||
|
@ -62,9 +75,24 @@ class EmailConfig(Config):
|
||||||
self.email_smtp_host = email_config["smtp_host"]
|
self.email_smtp_host = email_config["smtp_host"]
|
||||||
self.email_smtp_port = email_config["smtp_port"]
|
self.email_smtp_port = email_config["smtp_port"]
|
||||||
self.email_notif_from = email_config["notif_from"]
|
self.email_notif_from = email_config["notif_from"]
|
||||||
self.email_template_dir = email_config["template_dir"]
|
|
||||||
self.email_notif_template_html = email_config["notif_template_html"]
|
self.email_notif_template_html = email_config["notif_template_html"]
|
||||||
self.email_notif_template_text = email_config["notif_template_text"]
|
self.email_notif_template_text = email_config["notif_template_text"]
|
||||||
|
|
||||||
|
self.email_template_dir = email_config.get("template_dir")
|
||||||
|
|
||||||
|
# backwards-compatibility hack
|
||||||
|
if (
|
||||||
|
self.email_template_dir == "res/templates"
|
||||||
|
and not os.path.isfile(
|
||||||
|
os.path.join(self.email_template_dir, self.email_notif_template_text)
|
||||||
|
)
|
||||||
|
):
|
||||||
|
t = TEMPLATE_DIR_WARNING % {
|
||||||
|
"template_dir": self.email_template_dir,
|
||||||
|
}
|
||||||
|
print(textwrap.fill(t, width=80) + "\n", file=sys.stderr)
|
||||||
|
self.email_template_dir = None
|
||||||
|
|
||||||
self.email_notif_for_new_users = email_config.get(
|
self.email_notif_for_new_users = email_config.get(
|
||||||
"notif_for_new_users", True
|
"notif_for_new_users", True
|
||||||
)
|
)
|
||||||
|
@ -113,7 +141,9 @@ class EmailConfig(Config):
|
||||||
# require_transport_security: False
|
# require_transport_security: False
|
||||||
# notif_from: "Your Friendly %(app)s Home Server <noreply@example.com>"
|
# notif_from: "Your Friendly %(app)s Home Server <noreply@example.com>"
|
||||||
# app_name: Matrix
|
# app_name: Matrix
|
||||||
# template_dir: res/templates
|
# # if template_dir is unset, uses the example templates that are part of
|
||||||
|
# # the Synapse distribution.
|
||||||
|
# #template_dir: res/templates
|
||||||
# notif_template_html: notif_mail.html
|
# notif_template_html: notif_mail.html
|
||||||
# notif_template_text: notif_mail.txt
|
# notif_template_text: notif_mail.txt
|
||||||
# notif_for_new_users: True
|
# notif_for_new_users: True
|
||||||
|
|
|
@ -528,7 +528,10 @@ def load_jinja2_templates(config):
|
||||||
"""
|
"""
|
||||||
logger.info("loading jinja2")
|
logger.info("loading jinja2")
|
||||||
|
|
||||||
loader = jinja2.FileSystemLoader(config.email_template_dir)
|
if config.email_template_dir:
|
||||||
|
loader = jinja2.FileSystemLoader(config.email_template_dir)
|
||||||
|
else:
|
||||||
|
loader = jinja2.PackageLoader('synapse', 'res/templates')
|
||||||
env = jinja2.Environment(loader=loader)
|
env = jinja2.Environment(loader=loader)
|
||||||
env.filters["format_ts"] = format_ts_filter
|
env.filters["format_ts"] = format_ts_filter
|
||||||
env.filters["mxc_to_http"] = _create_mxc_to_http_filter(config)
|
env.filters["mxc_to_http"] = _create_mxc_to_http_filter(config)
|
||||||
|
|
Loading…
Reference in a new issue