render_template now only accepts a template string. use render_template_file to render a ODF template file.
This commit is contained in:
parent
77f504b663
commit
08bb72ed31
1 changed files with 22 additions and 11 deletions
33
renders.py
33
renders.py
|
|
@ -57,7 +57,7 @@ class BaseRender():
|
||||||
render.render
|
render.render
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, xml_doc, **template_args):
|
def __init__(self, xml_doc, template_args):
|
||||||
self.template_vars = template_args
|
self.template_vars = template_args
|
||||||
self.xml_document = xml.dom.minidom.parseString(xml_doc)
|
self.xml_document = xml.dom.minidom.parseString(xml_doc)
|
||||||
body = self.xml_document.getElementsByTagName('office:body')
|
body = self.xml_document.getElementsByTagName('office:body')
|
||||||
|
|
@ -144,14 +144,14 @@ class BaseRender():
|
||||||
note_text = replace_node.toxml().replace(TABLECELL_TAG, '')
|
note_text = replace_node.toxml().replace(TABLECELL_TAG, '')
|
||||||
|
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
if replace_node is not None:
|
if replace_node is not None:
|
||||||
paragraph_parent = replace_node.parentNode
|
paragraph_parent = replace_node.parentNode
|
||||||
|
|
||||||
new_node_text = \
|
new_node_text = \
|
||||||
' '.join(re.findall('(\{.*?\})', note_text))
|
' '.join(re.findall('(\{.*?\})', note_text))
|
||||||
|
logging.error(new_node_text)
|
||||||
new_node = self.xml_document.createTextNode(new_node_text)
|
new_node = self.xml_document.createTextNode(new_node_text)
|
||||||
paragraph_parent.replaceChild(new_node, replace_node)
|
paragraph_parent.replaceChild(new_node, replace_node)
|
||||||
|
|
||||||
|
|
@ -174,22 +174,22 @@ class BaseRender():
|
||||||
def render_odt(template, **args):
|
def render_odt(template, **args):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def render_template(template, **template_args):
|
def render_template(template, **kwargs):
|
||||||
"""
|
"""
|
||||||
Renders *template* file using *template_args* variables.
|
Renders *template* file using *kwargs* variables.
|
||||||
Returns the ODF file generated.
|
Returns the ODF file generated.
|
||||||
"""
|
"""
|
||||||
|
input_template = StringIO.StringIO(template)
|
||||||
input = zipfile.ZipFile(template, "r" )
|
input = zipfile.ZipFile(input_template, "r" )
|
||||||
text = StringIO.StringIO()
|
rendered = StringIO.StringIO()
|
||||||
output = zipfile.ZipFile(text, 'a')
|
output = zipfile.ZipFile(rendered, 'a')
|
||||||
|
|
||||||
# go through the files in source
|
# go through the files in source
|
||||||
for zi in input.filelist:
|
for zi in input.filelist:
|
||||||
out = input.read( zi.filename )
|
out = input.read( zi.filename )
|
||||||
|
|
||||||
if zi.filename == 'content.xml':
|
if zi.filename == 'content.xml':
|
||||||
render = BaseRender(out, **template_args)
|
render = BaseRender(out, kwargs)
|
||||||
out = render.render().encode('ascii', 'xmlcharrefreplace')
|
out = render.render().encode('ascii', 'xmlcharrefreplace')
|
||||||
|
|
||||||
elif zi.filename == 'mimetype':
|
elif zi.filename == 'mimetype':
|
||||||
|
|
@ -205,7 +205,18 @@ def render_template(template, **template_args):
|
||||||
input.close()
|
input.close()
|
||||||
output.close()
|
output.close()
|
||||||
|
|
||||||
return text.getvalue()
|
return rendered.getvalue()
|
||||||
|
|
||||||
|
|
||||||
|
def render_template_file(file, **kwargs):
|
||||||
|
"""
|
||||||
|
Render a ODF template file
|
||||||
|
"""
|
||||||
|
|
||||||
|
template_string = StringIO.StringIO()
|
||||||
|
template_string.write(file)
|
||||||
|
|
||||||
|
return render_template(template_string, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue