Loading poolpay/admin/PersonsTable.py 0 → 100644 +26 −0 Original line number Diff line number Diff line from babel.numbers import format_currency from rich.text import Text from textual.widgets import DataTable from poolpay.model.Person import Person def to_row(p: Person) -> tuple[str, str, Text, str]: balance = format_currency(p.balance_cents / 100, "EUR", locale="de_DE") style = "green" if p.balance_cents > 0 else "red" if p.balance_cents < 0 else "" return ( p.name, p.cl_account_name, Text(balance, style=style), ", ".join(card.id for card in p.cards) ) class PersonsTable(DataTable): def on_mount(self) -> None: self.add_columns("Name", "CL-Account", "Kontostand", "Karten-IDs") self.add_rows(to_row(p) for p in Person.get_all()) def on_data_table_header_selected(self, event: DataTable.HeaderSelected) -> None: self.sort(event.column_key) Loading
poolpay/admin/PersonsTable.py 0 → 100644 +26 −0 Original line number Diff line number Diff line from babel.numbers import format_currency from rich.text import Text from textual.widgets import DataTable from poolpay.model.Person import Person def to_row(p: Person) -> tuple[str, str, Text, str]: balance = format_currency(p.balance_cents / 100, "EUR", locale="de_DE") style = "green" if p.balance_cents > 0 else "red" if p.balance_cents < 0 else "" return ( p.name, p.cl_account_name, Text(balance, style=style), ", ".join(card.id for card in p.cards) ) class PersonsTable(DataTable): def on_mount(self) -> None: self.add_columns("Name", "CL-Account", "Kontostand", "Karten-IDs") self.add_rows(to_row(p) for p in Person.get_all()) def on_data_table_header_selected(self, event: DataTable.HeaderSelected) -> None: self.sort(event.column_key)