From 1a380eaeb205398144c53f5936b0dc9ddfbd6de8 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 28 Aug 2024 10:10:58 +0200 Subject: 🐛 LO templates: more robust generation (attempt to recover malformed XML) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/utils_secretary.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'ishtar_common/utils_secretary.py') diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py index d87201c6a..e8fae9e59 100644 --- a/ishtar_common/utils_secretary.py +++ b/ishtar_common/utils_secretary.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from secretary import Renderer, parseString +from secretary import Renderer +from lxml import etree +from xml.dom.minidom import parseString from xml.parsers.expat import ExpatError, ErrorString from datetime import datetime @@ -151,7 +153,12 @@ class IshtarSecretaryRenderer(Renderer): result = jinja_template.render(**kwargs) - final_xml = parseString(result.encode("ascii", "xmlcharrefreplace")) + # try to fix xml with mismatched tags + parser = etree.XMLParser(recover=True) + recovered_xml = etree.fromstring(result.encode("ascii", "xmlcharrefreplace"), parser) + + final_xml = parseString(etree.tostring(recovered_xml)) + if self.template_images: self.replace_images(final_xml) -- cgit v1.2.3