summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-11-16 20:55:31 -0500
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-11-16 20:55:31 -0500
commitd3860a0092e075cf24180a3a8c68cfb07283f1df (patch)
treebe6958a65e931e23801dc79f542cf469012a19c7
parente774f02303bc7d027633554b143c28252e3f5d71 (diff)
downloadaskbot-d3860a0092e075cf24180a3a8c68cfb07283f1df.tar.gz
askbot-d3860a0092e075cf24180a3a8c68cfb07283f1df.tar.bz2
askbot-d3860a0092e075cf24180a3a8c68cfb07283f1df.zip
allowed skins to be stored in custom directories
-rw-r--r--askbot/setup_templates/settings.py7
-rw-r--r--askbot/skins/loaders.py8
-rw-r--r--askbot/skins/utils.py23
3 files changed, 20 insertions, 18 deletions
diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py
index 92246337..f2d78fec 100644
--- a/askbot/setup_templates/settings.py
+++ b/askbot/setup_templates/settings.py
@@ -115,10 +115,9 @@ ASKBOT_MAX_UPLOAD_FILE_SIZE = 1024 * 1024 #result in bytes
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
-TEMPLATE_DIRS = (
- #specific to askbot
- os.path.join(os.path.dirname(__file__),'askbot','skins').replace('\\','/'),
-)
+#TEMPLATE_DIRS = (,) #template have no effect in askbot, use the variable below
+#ASKBOT_EXTRA_SKIN_DIRS = (,)#path to your skin collection
+#take a look here http://askbot.org/en/question/207/
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
diff --git a/askbot/skins/loaders.py b/askbot/skins/loaders.py
index e44801e6..241897c9 100644
--- a/askbot/skins/loaders.py
+++ b/askbot/skins/loaders.py
@@ -5,6 +5,7 @@ from askbot.conf import settings as askbot_settings
from django.conf import settings as django_settings
from coffin.common import CoffinEnvironment
from jinja2 import loaders as jinja_loaders
+from askbot.skins import utils
#module for skinning askbot
#via ASKBOT_DEFAULT_SKIN configureation variable (not django setting)
@@ -42,13 +43,14 @@ class SkinEnvironment(CoffinEnvironment):
"""
loaders = list()
skin_name = askbot_settings.ASKBOT_DEFAULT_SKIN
- skin_dirs = django_settings.TEMPLATE_DIRS + (ASKBOT_SKIN_COLLECTION_DIR,)
+ skin_dirs = utils.get_skin_dirs()
template_dirs = list()
for dir in skin_dirs:
template_dirs.append(os.path.join(dir, skin_name, 'templates'))
- for dir in skin_dirs:
- template_dirs.append(os.path.join(dir, 'default', 'templates'))
+ if skin_name != 'default':
+ for dir in skin_dirs:
+ template_dirs.append(os.path.join(dir, 'default', 'templates'))
loaders.append(jinja_loaders.FileSystemLoader(template_dirs))
return loaders
diff --git a/askbot/skins/utils.py b/askbot/skins/utils.py
index 67678cd4..259424da 100644
--- a/askbot/skins/utils.py
+++ b/askbot/skins/utils.py
@@ -10,22 +10,23 @@ def get_skin_dirs():
f = os.path.isfile
skin_dirs = []
skin_dirs.append( n(j(d(d(__file__)), 'skins')) )
+ if hasattr(django_settings, 'ASKBOT_EXTRA_SKIN_DIRS'):
+ skin_dirs += django_settings.ASKBOT_EXTRA_SKIN_DIRS
return skin_dirs
def get_skin_choices():
#todo: expand this to handle custom skin directories
- dirs = get_skin_dirs()
- default_dir = dirs[0]
- items = os.listdir(default_dir)
skin_list = ['default']
- for i in items:
- item_path = os.path.join(default_dir,i)
- if not os.path.isdir(item_path):
- continue
- if i == 'common':
- continue
- if i not in skin_list:
- skin_list.append(i)
+ for directory in get_skin_dirs():
+ items = os.listdir(directory)
+ for i in items:
+ item_path = os.path.join(directory, i)
+ if not os.path.isdir(item_path):
+ continue
+ if i == 'common':
+ continue
+ if i not in skin_list:
+ skin_list.append(i)
return [(i,i) for i in skin_list]