|
@@ -203,11 +203,28 @@ class Config:
|
|
|
with open(file_path) as file_stream:
|
|
|
return file_stream.read()
|
|
|
|
|
|
+ def read_template(self, filename: str) -> jinja2.Template:
|
|
|
+ """Load a template file from disk.
|
|
|
+
|
|
|
+ This function will attempt to load the given template from the default Synapse
|
|
|
+ template directory.
|
|
|
+
|
|
|
+ Files read are treated as Jinja templates. The templates is not rendered yet
|
|
|
+ and has autoescape enabled.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ filename: A template filename to read.
|
|
|
+
|
|
|
+ Raises:
|
|
|
+ ConfigError: if the file's path is incorrect or otherwise cannot be read.
|
|
|
+
|
|
|
+ Returns:
|
|
|
+ A jinja2 template.
|
|
|
+ """
|
|
|
+ return self.read_templates([filename])[0]
|
|
|
+
|
|
|
def read_templates(
|
|
|
- self,
|
|
|
- filenames: List[str],
|
|
|
- custom_template_directory: Optional[str] = None,
|
|
|
- autoescape: bool = False,
|
|
|
+ self, filenames: List[str], custom_template_directory: Optional[str] = None,
|
|
|
) -> List[jinja2.Template]:
|
|
|
"""Load a list of template files from disk using the given variables.
|
|
|
|
|
@@ -215,7 +232,8 @@ class Config:
|
|
|
template directory. If `custom_template_directory` is supplied, that directory
|
|
|
is tried first.
|
|
|
|
|
|
- Files read are treated as Jinja templates. These templates are not rendered yet.
|
|
|
+ Files read are treated as Jinja templates. The templates are not rendered yet
|
|
|
+ and have autoescape enabled.
|
|
|
|
|
|
Args:
|
|
|
filenames: A list of template filenames to read.
|
|
@@ -223,16 +241,12 @@ class Config:
|
|
|
custom_template_directory: A directory to try to look for the templates
|
|
|
before using the default Synapse template directory instead.
|
|
|
|
|
|
- autoescape: Whether to autoescape variables before inserting them into the
|
|
|
- template.
|
|
|
-
|
|
|
Raises:
|
|
|
ConfigError: if the file's path is incorrect or otherwise cannot be read.
|
|
|
|
|
|
Returns:
|
|
|
A list of jinja2 templates.
|
|
|
"""
|
|
|
- templates = []
|
|
|
search_directories = [self.default_template_dir]
|
|
|
|
|
|
# The loader will first look in the custom template directory (if specified) for the
|
|
@@ -249,7 +263,7 @@ class Config:
|
|
|
search_directories.insert(0, custom_template_directory)
|
|
|
|
|
|
loader = jinja2.FileSystemLoader(search_directories)
|
|
|
- env = jinja2.Environment(loader=loader, autoescape=autoescape)
|
|
|
+ env = jinja2.Environment(loader=loader, autoescape=jinja2.select_autoescape(),)
|
|
|
|
|
|
# Update the environment with our custom filters
|
|
|
env.filters.update(
|
|
@@ -259,12 +273,8 @@ class Config:
|
|
|
}
|
|
|
)
|
|
|
|
|
|
- for filename in filenames:
|
|
|
- # Load the template
|
|
|
- template = env.get_template(filename)
|
|
|
- templates.append(template)
|
|
|
-
|
|
|
- return templates
|
|
|
+ # Load the templates
|
|
|
+ return [env.get_template(filename) for filename in filenames]
|
|
|
|
|
|
|
|
|
def _format_ts_filter(value: int, format: str):
|