Loading poolpay/admin/DeletePersonDialog.py 0 → 100644 +50 −0 Changes for poolpay/admin/DeletePersonDialog.py: 50 added lines, 0 removed lines. Original line number Diff line number Diff line from textual.app import ComposeResult from textual.containers import Container, VerticalGroup from textual.widgets import Button, Checkbox, Footer, Label from poolpay.admin.ModalForm import ModalForm from poolpay.admin.money import format_euros from poolpay.model.Person import Person class DeletePersonDialog(ModalForm[None]): def __init__(self, person: Person) -> None: super().__init__() self.person = person @property def _result(self) -> None: return None def compose(self) -> ComposeResult: with VerticalGroup(): yield Label( f"{self.person.name} ({self.person.cl_account_name}) löschen?", markup=False, ) outstanding_balance = self.person.balance_cents != 0 if outstanding_balance: yield Checkbox( f"Trotz {'Guthaben' if self.person.balance_cents >= 0 else 'Schulden'} ({format_euros(self.person.balance_cents)}) löschen", id="balance_acknowledged", ) with Container(): yield Button( "Löschen", variant="error", id="delete", disabled=outstanding_balance, ) yield Footer() def on_checkbox_changed(self, event: Checkbox.Changed) -> None: if event.checkbox.id == "balance_acknowledged": self.query_one("#delete", Button).disabled = not event.value def on_button_pressed(self, event: Button.Pressed) -> None: if event.button.id == "delete": self.dismiss() Loading
poolpay/admin/DeletePersonDialog.py 0 → 100644 +50 −0 Changes for poolpay/admin/DeletePersonDialog.py: 50 added lines, 0 removed lines. Original line number Diff line number Diff line from textual.app import ComposeResult from textual.containers import Container, VerticalGroup from textual.widgets import Button, Checkbox, Footer, Label from poolpay.admin.ModalForm import ModalForm from poolpay.admin.money import format_euros from poolpay.model.Person import Person class DeletePersonDialog(ModalForm[None]): def __init__(self, person: Person) -> None: super().__init__() self.person = person @property def _result(self) -> None: return None def compose(self) -> ComposeResult: with VerticalGroup(): yield Label( f"{self.person.name} ({self.person.cl_account_name}) löschen?", markup=False, ) outstanding_balance = self.person.balance_cents != 0 if outstanding_balance: yield Checkbox( f"Trotz {'Guthaben' if self.person.balance_cents >= 0 else 'Schulden'} ({format_euros(self.person.balance_cents)}) löschen", id="balance_acknowledged", ) with Container(): yield Button( "Löschen", variant="error", id="delete", disabled=outstanding_balance, ) yield Footer() def on_checkbox_changed(self, event: Checkbox.Changed) -> None: if event.checkbox.id == "balance_acknowledged": self.query_one("#delete", Button).disabled = not event.value def on_button_pressed(self, event: Button.Pressed) -> None: if event.button.id == "delete": self.dismiss()