Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c77cae0

Browse files
committed
hdr: add _Footer._prior_headerfooter
1 parent bd7d13c commit c77cae0

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

docx/section.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,15 @@ def _has_definition(self):
315315
footerReference = self._sectPr.get_footerReference(WD_HEADER_FOOTER.PRIMARY)
316316
return False if footerReference is None else True
317317

318+
@property
319+
def _prior_headerfooter(self):
320+
"""|_Footer| proxy on prior sectPr element or None if this is first section."""
321+
preceding_sectPr = self._sectPr.preceding_sectPr
322+
return (
323+
None if preceding_sectPr is None
324+
else _Footer(preceding_sectPr, self._document_part)
325+
)
326+
318327

319328
class _Header(_BaseHeaderFooter):
320329
"""Page header."""

tests/test_section.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,29 @@ def it_knows_when_it_has_a_definition_to_help(self, has_definition_fixture):
531531

532532
assert has_definition is expected_value
533533

534+
def it_provides_access_to_the_prior_Footer_to_help(
535+
self, request, document_part_, footer_
536+
):
537+
doc_elm = element("w:document/(w:sectPr,w:sectPr)")
538+
prior_sectPr, sectPr = doc_elm[0], doc_elm[1]
539+
footer = _Footer(sectPr, document_part_)
540+
# ---mock must occur after construction of "real" footer---
541+
_Footer_ = class_mock(request, "docx.section._Footer", return_value=footer_)
542+
543+
prior_footer = footer._prior_headerfooter
544+
545+
_Footer_.assert_called_once_with(prior_sectPr, document_part_)
546+
assert prior_footer is footer_
547+
548+
def but_it_returns_None_when_its_the_first_footer(self):
549+
doc_elm = element("w:document/w:sectPr")
550+
sectPr = doc_elm[0]
551+
footer = _Footer(sectPr, None)
552+
553+
prior_footer = footer._prior_headerfooter
554+
555+
assert prior_footer is None
556+
534557
# fixtures -------------------------------------------------------
535558

536559
@pytest.fixture(
@@ -549,6 +572,10 @@ def has_definition_fixture(self, request):
549572
def document_part_(self, request):
550573
return instance_mock(request, DocumentPart)
551574

575+
@pytest.fixture
576+
def footer_(self, request):
577+
return instance_mock(request, _Footer)
578+
552579
@pytest.fixture
553580
def footer_part_(self, request):
554581
return instance_mock(request, FooterPart)

0 commit comments

Comments
 (0)