@@ -82,8 +82,6 @@ def get_template_dirs():
8282 return template_dirs
8383
8484
85-
86-
8785def get_pattern_config_str (template_name ):
8886 replace_pattern = "{}$" .format (get_pattern_template_suffix ())
8987 context_path = re .sub (replace_pattern , "" , template_name )
@@ -162,13 +160,12 @@ def render_pattern(request, template_name, allow_non_patterns=False, config=None
162160
163161
164162def get_renderer ():
165- return JinjaTemplateRenderer
163+ return TemplateRenderer
166164
167165
168166class TemplateRenderer :
169-
170167 @classmethod
171- def get_pattern_templates (cls , ):
168+ def get_pattern_templates (cls ):
172169 templates = base_dict ()
173170 template_dirs = get_template_dirs ()
174171
@@ -239,13 +236,28 @@ def get_pattern_templates(cls,):
239236
240237 return templates
241238
242- class DTLTemplateRenderer (TemplateRenderer ):
243239 @classmethod
244240 def get_pattern_source (cls , template ):
245- return escape (template . template . source )
241+ return cls . _get_engine (template ). get_pattern_source ( template )
246242
247243 @classmethod
248- def get_template_ancestors (cls , template_name , context = None , ancestors = None ):
244+ def get_template_ancestors (cls , template_name , context = None ):
245+ template = get_template (template_name )
246+ return cls ._get_engine (template ).get_template_ancestors (template_name , context = context )
247+
248+ @classmethod
249+ def _get_engine (cls , template ):
250+ if "jinja" in str (type (template )).lower ():
251+ return JinjaTemplateRenderer
252+ return DTLTemplateRenderer
253+
254+ class DTLTemplateRenderer :
255+ @staticmethod
256+ def get_pattern_source (template ):
257+ return escape (template .template .source )
258+
259+ @staticmethod
260+ def get_template_ancestors (template_name , context = None , ancestors = None ):
249261 """
250262 Returns a list of template names, starting with provided name
251263 and followed by the names of any templates that extends until
@@ -271,18 +283,15 @@ def get_template_ancestors(cls, template_name, context=None, ancestors=None):
271283 return ancestors
272284
273285
274-
275- class JinjaTemplateRenderer (TemplateRenderer ):
276-
277- @classmethod
278- def get_pattern_source (cls , template ):
286+ class JinjaTemplateRenderer :
287+ @staticmethod
288+ def get_pattern_source (template ):
279289 with open (template .template .filename ) as f :
280290 source = escape (f .read ())
281291 return source
282292
283-
284- @classmethod
285- def get_template_ancestors (cls , template_name , context = None , ancestors = None ):
293+ @staticmethod
294+ def get_template_ancestors (template_name , context = None , ancestors = None ):
286295 """
287296 Returns a list of template names, starting with provided name
288297 and followed by the names of any templates that extends until
@@ -306,4 +315,3 @@ def get_template_ancestors(cls, template_name, context=None, ancestors=None):
306315 cls .get_template_ancestors (parent_template_name , context = context , ancestors = ancestors )
307316
308317 return ancestors
309- > >> >> >> 68 fea3c (First pass at renderers )
0 commit comments