Verified Commit a59e7e2e authored by Jakob Moser's avatar Jakob Moser
Browse files

Add methods to open dialogs and process results

Quite heavily edited from the original AI suggestion

Co-authored-by: default avatarBig Pickle <big-pickle@opencode.ai>
parent 7af38d06
Loading
Loading
Loading
Loading
+41 −0
Changes for poolpay/admin/PoolPayAdminApp.py: 41 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -82,3 +82,44 @@ class PoolPayAdminApp(App):

        filename = f"{now}_poolpay.csv"
        self.deliver_text(StringIO(persons_csv), save_filename=filename)

    def _open_person_dialog(self, maybe_person: Person | None) -> None:
        def apply_person_details(result: PersonDialogResult) -> None:
            person = maybe_person or Person()
            db.session.add(person)

            person.name = result.name
            person.cl_account_name = result.cl_account_name
            # Orphaned cards will be deleted, re-creating doesn't matter because
            # they will be identical to the old instances.
            person.cards = [Card(id=card_id) for card_id in result.card_ids]

            db.session.commit()
            self.action_reload()

        self.push_screen(
            PersonDialog(maybe_person),
            callback=apply_person_details
        )

    def _open_balance_dialog(self, person: Person) -> None:
        def apply_balance_change(result: BalanceDialogResult) -> None:
            person.balance_cents = result.new_balance_cents
            db.session.commit()
            self.action_reload()

        self.push_screen(
            BalanceDialog(person),
            callback=apply_balance_change,
        )

    def _open_delete_dialog(self, person: Person) -> None:
        def apply_delete() -> None:
            db.session.delete(person)
            db.session.commit()
            self.action_reload()

        self.push_screen(
            DeletePersonDialog(person),
            callback=apply_delete,
        )