Changeset - ca38e4517846
[Not reviewed]
0 2 0
Brett Smith - 4 years ago 2021-01-29 19:26:54
brettcsmith@brettcsmith.org
reports: Add BaseODS.row_count() method.
2 files changed with 15 insertions and 0 deletions:
0 comments (0 inline, 0 general)
conservancy_beancount/reports/core.py
Show inline comments
...
 
@@ -1337,16 +1337,22 @@ class BaseODS(BaseSpreadsheet[RT, ST], metaclass=abc.ABCMeta):
 

	
 
    def add_row(self, *cells: odf.table.TableCell, **attrs: Any) -> odf.table.TableRow:
 
        row = odf.table.TableRow(**attrs)
 
        for cell in cells:
 
            row.addElement(cell)
 
        self.sheet.addElement(row)
 
        return row
 

	
 
    def row_count(self, sheet: Optional[odf.table.Table]=None) -> int:
 
        if sheet is None:
 
            sheet = self.sheet
 
        TableRow = odf.table.TableRow
 
        return sum(1 for cell in sheet.childNodes if cell.isInstanceOf(TableRow))
 

	
 
    def balance_cell(self, balance: Balance, **attrs: Any) -> odf.table.TableCell:
 
        balance = balance.clean_copy() or balance
 
        balance_currency_count = len(balance)
 
        if balance_currency_count == 0:
 
            return self.float_cell(0, **attrs)
 
        elif balance_currency_count == 1:
 
            amount = next(iter(balance.values()))
 
            attrs['stylename'] = self.merge_styles(
tests/test_reports_spreadsheet.py
Show inline comments
...
 
@@ -521,16 +521,25 @@ def test_ods_writer_add_row_single_cell(ods_writer):
 
    assert row.lastChild is cell
 

	
 
def test_ods_writer_add_row_empty(ods_writer):
 
    row = ods_writer.add_row(stylename='blank')
 
    assert ods_writer.sheet.lastChild is row
 
    assert row.firstChild is None
 
    assert row.getAttribute('stylename') == 'blank'
 

	
 
@pytest.mark.parametrize('col_count', range(3))
 
def test_ods_writer_row_count(ods_writer, col_count):
 
    for _ in range(col_count):
 
        ods_writer.sheet.addElement(odf.table.TableColumn())
 
    assert ods_writer.row_count() == 0
 
    for expected in range(1, 4):
 
        ods_writer.sheet.addElement(odf.table.TableRow())
 
        assert ods_writer.row_count() == expected
 

	
 
def test_ods_writer_balance_cell_empty(ods_writer):
 
    balance = core.Balance()
 
    cell = ods_writer.balance_cell(balance)
 
    assert cell.value_type != 'string'
 
    assert float(cell.value) == 0
 

	
 
def test_ods_writer_balance_cell_single_currency(ods_writer):
 
    number = 250
0 comments (0 inline, 0 general)