27 lines
775 B
Python
27 lines
775 B
Python
from pathlib import Path
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from src.constants import IBAN_PATTERN, Currency
|
|
from src.models.b4w import B4wExport
|
|
from src.models.comdirect import ComdirectCreditCard, ComdirectDepot, ComdirectGiro
|
|
|
|
|
|
class Account(BaseModel):
|
|
name: str
|
|
model: type[B4wExport | ComdirectGiro | ComdirectCreditCard | ComdirectDepot]
|
|
iban: str | None = Field(pattern=IBAN_PATTERN, default=None)
|
|
currency: Currency | None = None
|
|
|
|
|
|
class Source(BaseModel):
|
|
name: str
|
|
source_path: Path
|
|
accounts: list[Account]
|
|
|
|
def get_account_names(self) -> list[str]:
|
|
return [a.name for a in self.accounts]
|
|
|
|
def get_account(self, name: str) -> Account | None:
|
|
return next((a for a in self.accounts if a.name == name), None)
|