aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/init/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/init/__init__.py')
-rw-r--r--mediagoblin/init/__init__.py45
1 files changed, 24 insertions, 21 deletions
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index f7bef421..9b0025c9 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -71,7 +71,8 @@ def setup_database():
return connection, db
-def get_jinja_loader(user_template_path=None, current_theme=None):
+def get_jinja_loader(user_template_path=None, current_theme=None,
+ plugin_template_paths=None):
"""
Set up the Jinja template loaders, possibly allowing for user
overridden templates.
@@ -79,26 +80,28 @@ def get_jinja_loader(user_template_path=None, current_theme=None):
(In the future we may have another system for providing theming;
for now this is good enough.)
"""
- if user_template_path or current_theme:
- loader_choices = []
-
- # user template overrides
- if user_template_path:
- loader_choices.append(jinja2.FileSystemLoader(user_template_path))
-
- # Any theme directories in the registry
- if current_theme and current_theme.get('templates_dir'):
- loader_choices.append(
- jinja2.FileSystemLoader(
- current_theme['templates_dir']))
-
- # Add the main mediagoblin templates
- loader_choices.append(
- jinja2.PackageLoader('mediagoblin', 'templates'))
-
- return jinja2.ChoiceLoader(loader_choices)
- else:
- return jinja2.PackageLoader('mediagoblin', 'templates')
+ path_list = []
+
+ # Add user path first--this takes precedence over everything.
+ if user_template_path is not None:
+ path_list.append(jinja2.FileSystemLoader(user_template_path))
+
+ # Any theme directories in the registry
+ if current_theme and current_theme.get('templates_dir'):
+ path_list.append(
+ jinja2.FileSystemLoader(
+ current_theme['templates_dir']))
+
+ # Add plugin template paths next--takes precedence over
+ # core templates.
+ if plugin_template_paths is not None:
+ path_list.extend((jinja2.FileSystemLoader(path)
+ for path in plugin_template_paths))
+
+ # Add core templates last.
+ path_list.append(jinja2.PackageLoader('mediagoblin', 'templates'))
+
+ return jinja2.ChoiceLoader(path_list)
def get_staticdirector(app_config):