From 5704329f04a4261115b03a4bcd383f574aefab77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janek=20Hlavat=C3=BD?= Date: Sat, 14 Mar 2026 09:28:51 +0100 Subject: [PATCH] Preparation: add ticket type --- src/beaky/datamodels/scan.py | 8 ++++---- src/beaky/datamodels/ticket.py | 21 +++++++++++++++++++++ src/beaky/scanner/scanner.py | 12 ++---------- 3 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 src/beaky/datamodels/ticket.py diff --git a/src/beaky/datamodels/scan.py b/src/beaky/datamodels/scan.py index 9444ed4..abe43a2 100644 --- a/src/beaky/datamodels/scan.py +++ b/src/beaky/datamodels/scan.py @@ -1,9 +1,9 @@ -from datetime import datetime - from pydantic.dataclasses import dataclass - +from datetime import datetime @dataclass class Scan: + id: int date: datetime - event_name: str \ No newline at end of file + event_name: str + diff --git a/src/beaky/datamodels/ticket.py b/src/beaky/datamodels/ticket.py new file mode 100644 index 0000000..3a716f1 --- /dev/null +++ b/src/beaky/datamodels/ticket.py @@ -0,0 +1,21 @@ +from abc import ABC +from enum import Enum + +from pydantic.dataclasses import dataclass +from typing import Callable + + +class TicketType(str, Enum): + WIN_DRAW_LOSE = "win_draw_lose" + # postup? + WIN_DRAW_LOSE_DOUBLE = "win_draw_lose_double" + WIN_LOSE = "win_lose" + BOTH_TEAM_SCORED = "both_team_scored" + GOAL_AMOUNT = "goal_amount" + ... + +# Classes that inherit from this are defined in resolution file, so the deciding function can be used +@dataclass +class Ticket(ABC): + ticketType: TicketType + decidingFunction: Callable diff --git a/src/beaky/scanner/scanner.py b/src/beaky/scanner/scanner.py index 770f51a..352658a 100644 --- a/src/beaky/scanner/scanner.py +++ b/src/beaky/scanner/scanner.py @@ -5,7 +5,7 @@ from openpyxl import load_workbook from pydantic.dataclasses import dataclass from beaky.config import Config -from beaky.datamodels.scan import Scan +from beaky.datamodels.ticket import Scan @dataclass @@ -27,13 +27,6 @@ class Scanner: @dataclass class Link: - """Represents a single link row from an Excel sheet. - - Attributes: - id: identifier from the sheet (kept as string) - url: link to the web page - date: optional creation date (datetime or None) - """ id: str url: str date: Optional[datetime] = None @@ -45,7 +38,6 @@ class Links: self._path = path.path else: self._path = path - self.links: List[Link] = [] def ret_links(self) -> List[Link]: @@ -70,7 +62,7 @@ class Links: return [] # Normalize header names -> index map - header_map = { (str(h).strip().lower() if h is not None else ""): i for i, h in enumerate(header) } + header_map = {(str(h).strip().lower() if h is not None else ""): i for i, h in enumerate(header) } # Helper to parse date-like values def parse_date(v: None | datetime) -> Optional[datetime]: