Skip to content

Commit 0d2083f

Browse files
committed
hdr: add Section.different_first_page_hea.. setter
1 parent 32c24d6 commit 0d2083f

File tree

4 files changed

+35
-1
lines changed

4 files changed

+35
-1
lines changed

docx/oxml/section.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,13 @@ def titlePg_val(self):
319319
return False
320320
return titlePg.val
321321

322+
@titlePg_val.setter
323+
def titlePg_val(self, value):
324+
if value in [None, False]:
325+
self._remove_titlePg()
326+
else:
327+
self.get_or_add_titlePg().val = value
328+
322329
@property
323330
def top_margin(self):
324331
"""

docx/section.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ def different_first_page_header_footer(self):
7070
"""
7171
return self._sectPr.titlePg_val
7272

73+
@different_first_page_header_footer.setter
74+
def different_first_page_header_footer(self, value):
75+
self._sectPr.titlePg_val = value
76+
7377
@lazyproperty
7478
def footer(self):
7579
"""|_Footer| object representing default page footer for this section.

features/sct-section.feature

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ Feature: Access and change section properties
1414
| without | False |
1515

1616

17-
@wip
1817
Scenario Outline: Section.different_first_page_header_footer setter
1918
Given a Section object <with-or-without> a distinct first-page header as section
2019
When I assign <value> to section.different_first_page_header_footer

tests/test_section.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@ def it_knows_when_it_displays_a_distinct_first_page_header(
102102

103103
assert different_first_page_header_footer is expected_value
104104

105+
def it_can_change_whether_the_document_has_distinct_odd_and_even_headers(
106+
self, diff_first_header_set_fixture
107+
):
108+
sectPr, value, expected_xml = diff_first_header_set_fixture
109+
section = Section(sectPr, None)
110+
111+
section.different_first_page_header_footer = value
112+
113+
assert sectPr.xml == expected_xml
114+
105115
def it_provides_access_to_its_default_footer(
106116
self, document_part_, _Footer_, footer_
107117
):
@@ -222,6 +232,20 @@ def diff_first_header_get_fixture(self, request):
222232
sectPr = element(sectPr_cxml)
223233
return sectPr, expected_value
224234

235+
@pytest.fixture(
236+
params=[
237+
("w:sectPr", True, "w:sectPr/w:titlePg"),
238+
("w:sectPr/w:titlePg", False, "w:sectPr"),
239+
("w:sectPr/w:titlePg{w:val=1}", True, "w:sectPr/w:titlePg"),
240+
("w:sectPr/w:titlePg{w:val=off}", False, "w:sectPr"),
241+
]
242+
)
243+
def diff_first_header_set_fixture(self, request):
244+
sectPr_cxml, value, expected_cxml = request.param
245+
sectPr = element(sectPr_cxml)
246+
expected_xml = xml(expected_cxml)
247+
return sectPr, value, expected_xml
248+
225249
@pytest.fixture(params=[
226250
('w:sectPr/w:pgMar{w:left=120}', 'left_margin', 76200),
227251
('w:sectPr/w:pgMar{w:right=240}', 'right_margin', 152400),

0 commit comments

Comments
 (0)