Loading poolpay/admin/PersonsTable.py +12 −2 Original line number Diff line number Diff line import re from decimal import Decimal from babel.numbers import format_currency from babel.numbers import NumberFormatError, format_currency, parse_decimal from rich.text import Text from textual.widgets import DataTable Loading Loading @@ -34,4 +35,13 @@ class PersonsTable(DataTable): 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) def convert_to_decimal_if_numeric(thing: str | Text) -> str | Decimal: str_value = thing.plain if isinstance(thing, Text) else thing str_value_no_currency_symbol = str_value.removesuffix(" €") try: return parse_decimal(str_value_no_currency_symbol) except NumberFormatError: return str_value self.sort(event.column_key, key=convert_to_decimal_if_numeric) Loading
poolpay/admin/PersonsTable.py +12 −2 Original line number Diff line number Diff line import re from decimal import Decimal from babel.numbers import format_currency from babel.numbers import NumberFormatError, format_currency, parse_decimal from rich.text import Text from textual.widgets import DataTable Loading Loading @@ -34,4 +35,13 @@ class PersonsTable(DataTable): 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) def convert_to_decimal_if_numeric(thing: str | Text) -> str | Decimal: str_value = thing.plain if isinstance(thing, Text) else thing str_value_no_currency_symbol = str_value.removesuffix(" €") try: return parse_decimal(str_value_no_currency_symbol) except NumberFormatError: return str_value self.sort(event.column_key, key=convert_to_decimal_if_numeric)