You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
750 B
22 lines
750 B
import os.path
|
|
from lxml import etree
|
|
from jinja2 import Environment, FileSystemLoader
|
|
from . import filters
|
|
|
|
|
|
def render_xml(path, template_name, **nfe):
|
|
env = Environment(
|
|
loader=FileSystemLoader(path), extensions=['jinja2.ext.with_'])
|
|
|
|
env.filters["normalize"] = filters.normalize_str
|
|
env.filters["format_percent"] = filters.format_percent
|
|
env.filters["format_datetime"] = filters.format_datetime
|
|
env.filters["format_date"] = filters.format_date
|
|
|
|
template = env.get_template(template_name)
|
|
|
|
xml = template.render(**nfe)
|
|
xml = xml.replace('&', '&')
|
|
parser = etree.XMLParser(remove_blank_text=True, remove_comments=True)
|
|
elem = etree.fromstring(xml, parser=parser)
|
|
return etree.tostring(elem)
|