/
+ seat_id = child.text.strip()
+
+ if seat_id: # Break if we've already found the identifier
+ break
+ try:
+ if re.match(r"^\w\d{1,3}$", seat_id):
+ return seat_id
+ except TypeError:
+ pass
+ return
diff --git a/src/ez_lan_manager/types/ConfigurationTypes.py b/src/ez_lan_manager/types/ConfigurationTypes.py
index edb32fa..da5e6cf 100644
--- a/src/ez_lan_manager/types/ConfigurationTypes.py
+++ b/src/ez_lan_manager/types/ConfigurationTypes.py
@@ -1,6 +1,8 @@
from copy import copy
from dataclasses import dataclass
from datetime import datetime
+from pathlib import Path
+
class NoSuchCategoryError(Exception):
pass
@@ -15,6 +17,7 @@ class DatabaseConfiguration:
@dataclass(frozen=True)
class TicketInfo:
+ default_category: str
categories: list[str]
_prices: dict[str, int]
_available_tickets: dict[str, int]
@@ -50,3 +53,7 @@ class LanInfo:
ticket_info: TicketInfo
date_from: datetime
date_till: datetime
+
+@dataclass(frozen=True)
+class SeatingConfiguration:
+ base_svg_path: Path
diff --git a/src/ez_lan_manager/types/Seat.py b/src/ez_lan_manager/types/Seat.py
new file mode 100644
index 0000000..2cabb50
--- /dev/null
+++ b/src/ez_lan_manager/types/Seat.py
@@ -0,0 +1,12 @@
+from dataclasses import dataclass
+from typing import Optional
+
+from src.ez_lan_manager.types.User import User
+
+
+@dataclass(frozen=True)
+class Seat:
+ seat_id: str
+ is_blocked: bool
+ category: str
+ user: Optional[User]