summaryrefslogtreecommitdiffstats
path: root/askbot/skins
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-11-17 17:57:09 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-11-17 17:57:09 -0300
commit5b951d7db05a103523eaa9a0729ea0f2909127e8 (patch)
tree88a13b4a9c6573396016bc444085e1bd8025f4d5 /askbot/skins
parent8fb693146db9ada774d01ef51691dd3c6d7cc6ab (diff)
downloadaskbot-5b951d7db05a103523eaa9a0729ea0f2909127e8.tar.gz
askbot-5b951d7db05a103523eaa9a0729ea0f2909127e8.tar.bz2
askbot-5b951d7db05a103523eaa9a0729ea0f2909127e8.zip
added django-style template loader class and replaced render_into_skin with render
Diffstat (limited to 'askbot/skins')
-rw-r--r--askbot/skins/loaders.py54
1 files changed, 17 insertions, 37 deletions
diff --git a/askbot/skins/loaders.py b/askbot/skins/loaders.py
index 16b4ccf0..50276f34 100644
--- a/askbot/skins/loaders.py
+++ b/askbot/skins/loaders.py
@@ -1,6 +1,7 @@
import os.path
-from django.template.loaders.filesystem import Loader
+from django.template.loader import BaseLoader
from django.template import RequestContext
+from django.template import TemplateDoesNotExist
from django.http import HttpResponse
from django.utils import translation
from django.conf import settings as django_settings
@@ -22,29 +23,6 @@ template.add_to_builtins('askbot.templatetags.extra_filters_jinja')
#here it is ignored because it is assumed that we won't use unicode paths
ASKBOT_SKIN_COLLECTION_DIR = os.path.dirname(__file__)
-filesystem = Loader()
-
-#changed the name from load_template_source
-def filesystem_load_template_source(name, dirs=None):
- """Django template loader
- """
-
- if dirs is None:
- dirs = (ASKBOT_SKIN_COLLECTION_DIR, )
- else:
- dirs += (ASKBOT_SKIN_COLLECTION_DIR, )
-
- try:
- #todo: move this to top after splitting out get_skin_dirs()
- tname = os.path.join(askbot_settings.ASKBOT_DEFAULT_SKIN, 'templates', name)
- return filesystem.load_template_source(tname, dirs)
- except:
- tname = os.path.join('default', 'templates', name)
- return filesystem.load_template_source(tname, dirs)
-filesystem_load_template_source.is_usable = True
-#added this for backward compatbility
-load_template_source = filesystem_load_template_source
-
class SkinEnvironment(CoffinEnvironment):
"""Jinja template environment
that loads templates from askbot skins
@@ -105,8 +83,9 @@ def get_skin(request = None):
for a given request (request var is not used at this time)"""
return SKINS[askbot_settings.ASKBOT_DEFAULT_SKIN]
-def get_template(template, request = None):
- """retreives template for the skin
+def get_askbot_template(template, request = None):
+ """
+ retreives template for the skin
request variable will be used in the future to set
template according to the user preference or admins preference
@@ -119,21 +98,22 @@ def get_template(template, request = None):
def render_into_skin_as_string(template, data, request):
context = RequestContext(request, data)
- template = get_template(template, request)
+ template = get_askbot_template(template, request)
return template.render(context)
-def render_into_skin(template, data, request, mimetype = 'text/html'):
- """in the future this function will be able to
- switch skin depending on the site administrator/user selection
- right now only admins can switch
- """
- return HttpResponse(
- render_into_skin_as_string(template, data, request),
- mimetype=mimetype
- )
-
def render_text_into_skin(text, data, request):
context = RequestContext(request, data)
skin = get_skin(request)
template = skin.from_string(text)
return template.render(context)
+
+class Loader(BaseLoader):
+ """skins template loader for Django > 1.2
+ todo: verify that this actually follows django's convention correctly
+ """
+ is_usable = True
+ def load_template(self, template_name, template_dirs = None):
+ try:
+ return get_askbot_template(template_name), template_name
+ except TemplateNotFound:
+ raise TemplateDoesNotExist