-from philo.models.pages import Template
+from philo.loaders.database import Loader
-load_template_source = Template.loader
+_loader = Loader()
+
+
+def load_template_source(template_name, template_dirs=None):
+ # For backwards compatibility
+ import warnings
+ warnings.warn(
+ "'philo.load_template_source' is deprecated; use 'philo.loaders.database.Loader' instead.",
+ PendingDeprecationWarning
+ )
+ return _loader.load_template_source(template_name, template_dirs)
+load_template_source.is_usable = True
--- /dev/null
+from django.template import TemplateDoesNotExist
+from django.template.loader import BaseLoader
+from django.utils.encoding import smart_unicode
+from philo.models import Template
+
+
+class Loader(BaseLoader):
+ is_usable=True
+
+ def load_template_source(self, template_name, template_dirs=None):
+ try:
+ template = Template.objects.get_with_path(template_name)
+ except Template.DoesNotExist:
+ raise TemplateDoesNotExist(template_name)
+ return (template.code, smart_unicode(template))
\ No newline at end of file
mimetype = models.CharField(max_length=255, default=getattr(settings, 'DEFAULT_CONTENT_TYPE', 'text/html'))
code = TemplateField(secure=False, verbose_name='django template code')
- @property
- def origin(self):
- return 'philo.models.Template: ' + self.path
-
- @property
- def django_template(self):
- return DjangoTemplate(self.code)
-
@property
def containers(self):
"""
if isinstance(node, ContainerNode):
nodes.append(node)
- all_nodes = nodelist_crawl(self.django_template.nodelist, process_node)
+ all_nodes = nodelist_crawl(DjangoTemplate(self.code).nodelist, process_node)
contentlet_node_names = set([node.name for node in all_nodes if not node.references])
contentreference_node_names = []
contentreference_node_specs = []
def __unicode__(self):
return self.get_path(pathsep=u' › ', field='name')
- @staticmethod
- @fattr(is_usable=True)
- def loader(template_name, template_dirs=None): # load_template_source
- try:
- template = Template.objects.get_with_path(template_name)
- except Template.DoesNotExist:
- raise TemplateDoesNotExist(template_name)
- return (template.code, template.origin)
-
class Meta:
app_label = 'philo'
context = {}
context.update(extra_context or {})
context.update({'page': self, 'attributes': self.attributes})
+ template = DjangoTemplate(self.template.code)
if request:
context.update({'node': request.node, 'attributes': self.attributes_with_node(request.node)})
page_about_to_render_to_string.send(sender=self, request=request, extra_context=context)
- string = self.template.django_template.render(RequestContext(request, context))
+ string = template.render(RequestContext(request, context))
else:
page_about_to_render_to_string.send(sender=self, request=request, extra_context=context)
- string = self.template.django_template.render(Context(context))
+ string = template.render(Context(context))
page_finished_rendering_to_string.send(sender=self, string=string)
return string