Verified Commit 5871f630 authored by Jakob Moser's avatar Jakob Moser
Browse files

Add delete person dialog

parent 14b10619
Loading
Loading
Loading
Loading
+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()