Skip to content

Commit f9e033e

Browse files
author
Steve Canny
committed
tbl: add Table.alignment.setter
1 parent 572526b commit f9e033e

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

docx/oxml/table.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,14 @@ def alignment(self):
158158
return None
159159
return jc.val
160160

161+
@alignment.setter
162+
def alignment(self, value):
163+
self._remove_jc()
164+
if value is None:
165+
return
166+
jc = self.get_or_add_jc()
167+
jc.val = value
168+
161169
@property
162170
def autofit(self):
163171
"""

docx/table.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ def alignment(self):
4949
"""
5050
return self._tblPr.alignment
5151

52+
@alignment.setter
53+
def alignment(self, value):
54+
self._tblPr.alignment = value
55+
5256
@property
5357
def autofit(self):
5458
"""

features/tbl-props.feature

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ Feature: Get and set table properties
1616
| center | WD_TABLE_ALIGNMENT.CENTER |
1717

1818

19-
@wip
2019
Scenario Outline: Set table alignment
2120
Given a table having <alignment> alignment
2221
When I assign <value> to table.alignment

tests/test_table.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ def it_knows_its_alignment_setting(self, alignment_get_fixture):
2828
table, expected_value = alignment_get_fixture
2929
assert table.alignment == expected_value
3030

31+
def it_can_change_its_alignment_setting(self, alignment_set_fixture):
32+
table, new_value, expected_xml = alignment_set_fixture
33+
table.alignment = new_value
34+
assert table._tbl.xml == expected_xml
35+
3136
def it_knows_whether_it_should_autofit(self, autofit_get_fixture):
3237
table, expected_value = autofit_get_fixture
3338
assert table.autofit is expected_value
@@ -133,6 +138,20 @@ def alignment_get_fixture(self, request):
133138
table = Table(element(tbl_cxml), None)
134139
return table, expected_value
135140

141+
@pytest.fixture(params=[
142+
('w:tbl/w:tblPr', WD_TABLE_ALIGNMENT.LEFT,
143+
'w:tbl/w:tblPr/w:jc{w:val=left}'),
144+
('w:tbl/w:tblPr/w:jc{w:val=left}', WD_TABLE_ALIGNMENT.RIGHT,
145+
'w:tbl/w:tblPr/w:jc{w:val=right}'),
146+
('w:tbl/w:tblPr/w:jc{w:val=right}', None,
147+
'w:tbl/w:tblPr'),
148+
])
149+
def alignment_set_fixture(self, request):
150+
tbl_cxml, new_value, expected_tbl_cxml = request.param
151+
table = Table(element(tbl_cxml), None)
152+
expected_xml = xml(expected_tbl_cxml)
153+
return table, new_value, expected_xml
154+
136155
@pytest.fixture(params=[
137156
('w:tbl/w:tblPr', True),
138157
('w:tbl/w:tblPr/w:tblLayout', True),

0 commit comments

Comments
 (0)