Verified Commit 0b598ae4 authored by Jakob Moser's avatar Jakob Moser
Browse files

Adjust main application to use Director

parent 8b9f42ee
Loading
Loading
Loading
Loading
+22 −10
Original line number Diff line number Diff line
@@ -4,7 +4,10 @@ from sqlalchemy import create_engine
from sqlalchemy.orm import Session

from poolpay import db
from poolpay.card.Pirc522CardReader import Pirc522CardReader
from poolpay.director.Director import Director
from poolpay.model.Retrievable import Retrievable
from poolpay.ui.Play import Play
from poolpay.vault.Vault import Vault

proj_dir = Path(__file__).parent.parent.resolve()
@@ -12,24 +15,33 @@ instance_dir = proj_dir / "instance"
vault_file = proj_dir / "instance.img"
db_file = instance_dir / "poolpay.db"

# TODO Start UI (with a basic message indicating the application is locked and a password is required)
# TODO Show a message indicating the application is locked and a password is required?
password = "hunter2"  # TODO Prompt for this instead of hardcoding it into the file

vault = Vault(vault_file, instance_dir)

if not vault_file.exists():
    vault.create(password)

play = Play(
    # TODO Insert types here
    Idle=...,
    PaymentSuccess=...,
    Balance=...,
    Reversal=...,
    WaitForCard=...,
)
director = Director(play)

with vault.open(password), Pirc522CardReader() as card_reader:
    try:
    vault.open(password)

        engine = create_engine(f"sqlite:///{db_file}")
        Retrievable.metadata.create_all(engine)
        db.session = Session(engine)

    # TODO Initialize card reader (on card presented: Update UI, book transaction)
    # TODO Change UI to a "ready" state
        card_reader.on_card_presented(
            lambda reader: director.card_presented(reader.read_id())
        )
        card_reader.on_card_removed(
            lambda reader: director.card_removed()
        )
        director.start()
    finally:
        db.session.close()
        engine.dispose()
    vault.close()