Text style tags are now properly stripped from template elements
This commit is contained in:
parent
d84266182a
commit
1cffe9f224
1 changed files with 10 additions and 3 deletions
13
secretary.py
13
secretary.py
|
|
@ -308,13 +308,17 @@ class Renderer(object):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _unescape_entities(xml_text):
|
def _unescape_entities(xml_text):
|
||||||
# unescape XML entities gt and lt
|
"""
|
||||||
|
Strips tags of the form <text:span ...> from inside Jinja elements
|
||||||
|
and unescapes HTML codes for >, <, & and "
|
||||||
|
"""
|
||||||
unescape_rules = {
|
unescape_rules = {
|
||||||
|
r'(?is)({[{|%].*)(<.?text:s.*?>)(.*[%|}]})': r'\1\3',
|
||||||
|
|
||||||
r'(?is)({[{|%].*)(>)(.*[%|}]})': r'\1>\3',
|
r'(?is)({[{|%].*)(>)(.*[%|}]})': r'\1>\3',
|
||||||
r'(?is)({[{|%].*)(<)(.*[%|}]})': r'\1<\3',
|
r'(?is)({[{|%].*)(<)(.*[%|}]})': r'\1<\3',
|
||||||
r'(?is)({[{|%].*)(&)(.*[%|}]})': r'\1&\3',
|
r'(?is)({[{|%].*)(&)(.*[%|}]})': r'\1&\3',
|
||||||
r'(?is)({[{|%].*)(")(.*[%|}]})': r'\1"\3',
|
r'(?is)({[{|%].*)(")(.*[%|}]})': r'\1"\3'
|
||||||
r'(?is)({[{|%].*)(<.?text:s.?>)(.*[%|}]})': r'\1 \3'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for p, r in unescape_rules.items():
|
for p, r in unescape_rules.items():
|
||||||
|
|
@ -449,6 +453,7 @@ class Renderer(object):
|
||||||
self._prepare_template_tags(xml_document)
|
self._prepare_template_tags(xml_document)
|
||||||
template_string = Renderer._unescape_entities(xml_document.toxml())
|
template_string = Renderer._unescape_entities(xml_document.toxml())
|
||||||
jinja_template = self.environment.from_string(template_string)
|
jinja_template = self.environment.from_string(template_string)
|
||||||
|
|
||||||
result = jinja_template.render(**kwargs)
|
result = jinja_template.render(**kwargs)
|
||||||
result = Renderer._encode_escape_chars(result)
|
result = Renderer._encode_escape_chars(result)
|
||||||
|
|
||||||
|
|
@ -460,6 +465,8 @@ class Renderer(object):
|
||||||
except:
|
except:
|
||||||
self.log.error('Error rendering template:\n%s',
|
self.log.error('Error rendering template:\n%s',
|
||||||
xml_document.toprettyxml(), exc_info=True)
|
xml_document.toprettyxml(), exc_info=True)
|
||||||
|
|
||||||
|
self.log.error('Unescaped template was:\n{}'.format(template_string))
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
self.log.debug('Rendering xml object finished')
|
self.log.debug('Rendering xml object finished')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue