From ef09ce6277d2b844656b38e4fea299764d49a5a5 Mon Sep 17 00:00:00 2001 From: elapouya Date: Sat, 7 Jan 2023 14:02:11 +0100 Subject: [PATCH] 0.16.5 --- CHANGES.rst | 9 ++++++--- docxtpl/__init__.py | 2 +- docxtpl/template.py | 6 +++--- tests/doc_properties.py | 15 +++++++++++++++ tests/templates/doc_properties_tpl.docx | Bin 0 -> 23913 bytes 5 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 tests/doc_properties.py create mode 100644 tests/templates/doc_properties_tpl.docx diff --git a/CHANGES.rst b/CHANGES.rst index 08961f2..dd765d4 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +0.16.5 (2023-01-07) +------------------- +- PR #467 - thanks to Slarag +- fix #465 +- fix #464 + 0.16.4 (2022-08-04) ------------------- - Regional fonts for RichText @@ -23,9 +29,6 @@ 0.15.2 (2022-01-12) ------------------- - fix #408 - -0.15.1 (2021-12-20) -------------------- - Multi-rendering with same DocxTemplate object is now possible see tests/multi_rendering.py - fix #392 diff --git a/docxtpl/__init__.py b/docxtpl/__init__.py index 732521c..1ef0ba7 100644 --- a/docxtpl/__init__.py +++ b/docxtpl/__init__.py @@ -4,7 +4,7 @@ Created : 2015-03-12 @author: Eric Lapouyade """ -__version__ = '0.16.4' +__version__ = '0.16.5' # flake8: noqa from .inline_image import InlineImage diff --git a/docxtpl/template.py b/docxtpl/template.py index aa77ee0..843aade 100644 --- a/docxtpl/template.py +++ b/docxtpl/template.py @@ -43,8 +43,8 @@ class DocxTemplate(object): self.is_rendered = False self.is_saved = False - def init_docx(self): - if not self.docx or self.is_rendered: + def init_docx(self, reload: bool = True): + if not self.docx or (self.is_rendered and reload): self.docx = Document(self.template_file) self.is_rendered = False @@ -755,7 +755,7 @@ class DocxTemplate(object): self.is_saved = True def get_undeclared_template_variables(self, jinja_env: Optional[Environment] = None) -> Set[str]: - self.init_docx() + self.init_docx(reload=False) xml = self.get_xml() xml = self.patch_xml(xml) for uri in [self.HEADER_URI, self.FOOTER_URI]: diff --git a/tests/doc_properties.py b/tests/doc_properties.py new file mode 100644 index 0000000..2083c8c --- /dev/null +++ b/tests/doc_properties.py @@ -0,0 +1,15 @@ +import os.path + +import jinja2 +from docxtpl import DocxTemplate, InlineImage + +doctemplate = r'templates/doc_properties_tpl.docx' + +tpl = DocxTemplate(doctemplate) + +context = { + 'test': 'HelloWorld' +} + +tpl.render(context) +tpl.save("output/doc_properties.docx") diff --git a/tests/templates/doc_properties_tpl.docx b/tests/templates/doc_properties_tpl.docx new file mode 100644 index 0000000000000000000000000000000000000000..d15557aaaff0446121e58b98e78a14bd613ac248 GIT binary patch literal 23913 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