From 271c6a2ee8ced13e57831cc7782c9825d839bb63 Mon Sep 17 00:00:00 2001 From: Toby Date: Wed, 30 May 2012 10:52:35 +0100 Subject: [PATCH] 2375 better detection of genshi/jinja2 templates --- ckan/lib/extract.py | 11 ++++++----- ckan/lib/render.py | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ckan/lib/extract.py b/ckan/lib/extract.py index 247e96fa753..729a1a3305b 100644 --- a/ckan/lib/extract.py +++ b/ckan/lib/extract.py @@ -6,15 +6,16 @@ def extract_ckan(fileobj, *args, **kw): ''' Determine the type of file (Genshi or Jinja2) and then call the correct extractor function. - Basically we just look for a jinja2 {{ or {% tag. ''' + Basically we just look for genshi.edgewall.org which all genshi XML + templates should contain. ''' source = fileobj.read() - if re.search('\{\{|\{\%', source): - # jinja2 - extractor_function = extract_jinja2 - else: + if re.search('genshi\.edgewall\.org', source): # genshi extractor_function = extract_genshi + else: + # jinja2 + extractor_function = extract_jinja2 # we've eaten the file so we need to get back to the start fileobj.seek(0) return extractor_function(fileobj, *args, **kw) diff --git a/ckan/lib/render.py b/ckan/lib/render.py index 67b63c217aa..38aebd0d677 100644 --- a/ckan/lib/render.py +++ b/ckan/lib/render.py @@ -20,9 +20,9 @@ def template_type(template_path): return 'genshi-text' f = open(template_path, 'r') source = f.read() - if re.search('\{\{|\{\%', source): - return 'jinja2' - return 'genshi' + if re.search('genshi\.edgewall\.org', source): + return 'genshi' + return 'jinja2' def template_info(template_name): ''' Returns the path and type for a template '''