aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2012-07-05 12:23:56 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2012-07-14 12:55:13 -0500
commit3b47da8eab4ac8b4b580fb95da2d4a3e891e9555 (patch)
tree90f5569b9080101db1874338f71c490613ead923
parent828fc6300a5e9d1cf8cd10e875945ce7a8c3a1ab (diff)
downloadmediagoblin-3b47da8eab4ac8b4b580fb95da2d4a3e891e9555.tar.lz
mediagoblin-3b47da8eab4ac8b4b580fb95da2d4a3e891e9555.tar.xz
mediagoblin-3b47da8eab4ac8b4b580fb95da2d4a3e891e9555.zip
Themes are now registered and can have their templates loaded properly
-rw-r--r--mediagoblin/app.py9
-rw-r--r--mediagoblin/config_spec.ini5
-rw-r--r--mediagoblin/init/__init__.py24
3 files changed, 32 insertions, 6 deletions
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index 33acbba0..a10edfaa 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -76,10 +76,17 @@ class MediaGoblinApp(object):
# Register themes
self.theme_registry = register_themes(app_config)
+ self.current_theme_name = app_config.get('theme')
+ if self.current_theme_name \
+ and self.theme_registry.has_key(self.current_theme_name):
+ self.current_theme = self.theme_registry[self.current_theme_name]
+ else:
+ self.current_theme = None
# Get the template environment
self.template_loader = get_jinja_loader(
- app_config.get('local_templates'))
+ app_config.get('local_templates'),
+ self.current_theme)
# Set up storage systems
self.public_store, self.queue_store = setup_storage()
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index ce81b356..7fc5fa70 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -60,6 +60,11 @@ push_urls = string_list(default=list())
exif_visible = boolean(default=False)
geolocation_map_visible = boolean(default=False)
+# Theming stuff
+theme_install_dir = string(default="%(here)s/user_dev/themes/")
+theme = string()
+
+
[storage:publicstore]
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
base_dir = string(default="%(here)s/user_dev/media/public")
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index 1d8115cb..7a885800 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -71,7 +71,7 @@ def setup_database():
return connection, db
-def get_jinja_loader(user_template_path=None):
+def get_jinja_loader(user_template_path=None, current_theme=None):
"""
Set up the Jinja template loaders, possibly allowing for user
overridden templates.
@@ -79,10 +79,24 @@ def get_jinja_loader(user_template_path=None):
(In the future we may have another system for providing theming;
for now this is good enough.)
"""
- if user_template_path:
- return jinja2.ChoiceLoader(
- [jinja2.FileSystemLoader(user_template_path),
- jinja2.PackageLoader('mediagoblin', 'templates')])
+ 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')