diff --git a/conservancy_beancount/reports/core.py b/conservancy_beancount/reports/core.py index 300e404764921533a6d180f03f3b071bb15c1cb1..524e7291dfe55e31478b211fcead70c70b1259e3 100644 --- a/conservancy_beancount/reports/core.py +++ b/conservancy_beancount/reports/core.py @@ -1436,9 +1436,15 @@ class BaseODS(BaseSpreadsheet[RT, ST], metaclass=abc.ABCMeta): return self.multilink_cell(self._meta_link_pairs(links), **attrs) def multiline_cell(self, lines: Iterable[Any], **attrs: Any) -> odf.table.TableCell: + item_lines = [str(item).splitlines() for item in lines if item is not None] + if any(len(seq) > 1 for seq in item_lines): + for seq in item_lines: + seq.append('') + seq.pop() cell = odf.table.TableCell(valuetype='string', **attrs) - for line in lines: - cell.addElement(odf.text.P(text=str(line))) + for seq in item_lines: + for line in seq: + cell.addElement(odf.text.P(text=line)) return cell def multilink_cell(self, links: Iterable[LinkType], **attrs: Any) -> odf.table.TableCell: @@ -1457,7 +1463,8 @@ class BaseODS(BaseSpreadsheet[RT, ST], metaclass=abc.ABCMeta): def string_cell(self, text: str, **attrs: Any) -> odf.table.TableCell: cell = odf.table.TableCell(valuetype='string', **attrs) - cell.addElement(odf.text.P(text=text)) + for line in text.splitlines(): + cell.addElement(odf.text.P(text=line)) return cell def write_row(self, row: RT) -> None: diff --git a/tests/test_reports_fund.py b/tests/test_reports_fund.py index 569129bca31638fd36de1f4d98637ac9ef548d88..446601503d6c046f3d267c65d455f08a1acca43a 100644 --- a/tests/test_reports_fund.py +++ b/tests/test_reports_fund.py @@ -193,7 +193,9 @@ def check_ods_sheet(sheet, account_balances, *, full): cells = iter(testutil.ODSCell.from_row(row)) try: fund = next(cells).firstChild.text - except (AttributeError, StopIteration): + except AttributeError: + fund = '' + except StopIteration: continue try: balances = account_bals.pop(fund)