elapouya/python-docx-template

DocumentPart object has no attribute '_rels'.

theodore86 opened this issue · 8 comments

Describe the bug

A clear and concise description of what the bug is.

It seems like python-docx has released an new version:

python-docx==1.1.1
docxtpl==0.16.8
uri = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/header'
    def get_headers_footers(self, uri):
>       for relKey, val in self.docx._part._rels.items():
E       AttributeError: 'DocumentPart' object has no attribute '_rels'. Did you mean: 'rels'?

I have the same issue. Everything was working the day before python-docx 1.1.1 release and not it gets this error. As soon as I specified that I want previous version of python-docx 1.1.0, everything started working again. Here is my traceback:


AttributeError Traceback (most recent call last)
File , line 90
89 template_vars {"name":"John", "lastname":"Oliver"}
---> 90 doc.render(template_vars)
92 doc.save("<path_to_save>".docx")

File /local_disk0/.ephemeral_nfs/envs/.../lib/python3.10/site-packages/docxtpl/template.py:382, in DocxTemplate.render(self, context, jinja_env, autoescape)
379 # Headers
380 headers = self.build_headers_footers_xml(context, self.HEADER_URI,
381 jinja_env)
--> 382 for relKey, xml in headers:
383 self.map_headers_footers_xml(relKey, xml)
385 # Footers

File /local_disk0/.ephemeral_nfs/envs/.../lib/python3.10/site-packages/docxtpl/template.py:338, in DocxTemplate.build_headers_footers_xml(self, context, uri, jinja_env)
337 def build_headers_footers_xml(self, context, uri, jinja_env=None):
--> 338 for relKey, part in self.get_headers_footers(uri):
339 xml = self.get_part_xml(part)
340 encoding = self.get_headers_footers_encoding(xml)

File /local_disk0/.ephemeral_nfs/envs/.../lib/python3.10/site-packages/docxtpl/template.py:324, in DocxTemplate.get_headers_footers(self, uri)
323 def get_headers_footers(self, uri):
--> 324 for relKey, val in self.docx._part._rels.items():
325 if (val.reltype == uri) and (val.target_part.blob):
326 yield relKey, val.target_part

AttributeError: 'DocumentPart' object has no attribute '_rels'

I've hit the same issue and rolled back to python-docx 1.1.0 as a fix.

I've hit the same issue and rolled back to python-docx 1.1.0 as a fix.

Rolling back also fixed the issue for me.

I am going to investigate about what's new in that python-docx version...

I created the new docxtpl 0.17.0 : it requires python-docx 1.1.1+

Please, could you test ?

Yes, everything works perfectly for me. Thank you so much! How about the others?

Yes, working with docxtpl 0.17.0 and python-docx 1.1.2. Thanks!

Thank, i have already locked the dependencies so it is not an major issue, it works.