mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-07-01 03:04:52 +02:00
Add asset records, claims, and credit workflows
This commit is contained in:
@@ -20,6 +20,13 @@ MEMBERSHIP_STATUS_LABELS = {
|
||||
"ended": "BEENDET",
|
||||
}
|
||||
|
||||
ASSET_STATUS_LABELS = {
|
||||
"available": "VERFUEGBAR",
|
||||
"issued": "AUSGEGEBEN",
|
||||
"lost": "VERLOREN",
|
||||
"retired": "AUSGEMUSTERT",
|
||||
}
|
||||
|
||||
HOUSEKEEPER_MEMBER_FIELD_LABELS = {
|
||||
"nickname": "Nickname",
|
||||
"email": "E-Mail-Adresse",
|
||||
@@ -167,6 +174,55 @@ class Member:
|
||||
)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class Asset:
|
||||
asset_id: str
|
||||
label: str
|
||||
category: str = ""
|
||||
inventory_number: str = ""
|
||||
serial_number: str = ""
|
||||
status: str = "available"
|
||||
current_holder_member_id: str = ""
|
||||
deposit_amount_default: str = "0.00"
|
||||
notes: str = ""
|
||||
created_at: str = field(default_factory=_iso_now)
|
||||
updated_at: str = field(default_factory=_iso_now)
|
||||
schema_version: int = 1
|
||||
|
||||
def to_dict(self) -> dict[str, Any]:
|
||||
return {
|
||||
"schema_version": self.schema_version,
|
||||
"asset_id": self.asset_id,
|
||||
"label": self.label,
|
||||
"category": self.category,
|
||||
"inventory_number": self.inventory_number,
|
||||
"serial_number": self.serial_number,
|
||||
"status": self.status,
|
||||
"current_holder_member_id": self.current_holder_member_id,
|
||||
"deposit_amount_default": self.deposit_amount_default,
|
||||
"notes": self.notes,
|
||||
"created_at": self.created_at,
|
||||
"updated_at": self.updated_at,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: dict[str, Any]) -> Asset:
|
||||
return cls(
|
||||
schema_version=int(data.get("schema_version", 1)),
|
||||
asset_id=str(data["asset_id"]),
|
||||
label=str(data.get("label", "")),
|
||||
category=str(data.get("category", "")),
|
||||
inventory_number=str(data.get("inventory_number", "")),
|
||||
serial_number=str(data.get("serial_number", "")),
|
||||
status=str(data.get("status", "available")),
|
||||
current_holder_member_id=str(data.get("current_holder_member_id", "")),
|
||||
deposit_amount_default=str(data.get("deposit_amount_default", "0.00")),
|
||||
notes=str(data.get("notes", "")),
|
||||
created_at=str(data.get("created_at", _iso_now())),
|
||||
updated_at=str(data.get("updated_at", _iso_now())),
|
||||
)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class Event:
|
||||
event_id: str
|
||||
@@ -209,6 +265,7 @@ class Event:
|
||||
class ContributionData:
|
||||
claims: list[dict[str, Any]] = field(default_factory=list)
|
||||
payments: list[dict[str, Any]] = field(default_factory=list)
|
||||
credits: list[dict[str, Any]] = field(default_factory=list)
|
||||
allocations: list[dict[str, Any]] = field(default_factory=list)
|
||||
reminders: list[dict[str, Any]] = field(default_factory=list)
|
||||
schema_version: int = 1
|
||||
@@ -218,6 +275,7 @@ class ContributionData:
|
||||
"schema_version": self.schema_version,
|
||||
"claims": self.claims,
|
||||
"payments": self.payments,
|
||||
"credits": self.credits,
|
||||
"allocations": self.allocations,
|
||||
"reminders": self.reminders,
|
||||
}
|
||||
@@ -228,6 +286,7 @@ class ContributionData:
|
||||
schema_version=int(data.get("schema_version", 1)),
|
||||
claims=list(data.get("claims") or []),
|
||||
payments=list(data.get("payments") or []),
|
||||
credits=list(data.get("credits") or []),
|
||||
allocations=list(data.get("allocations") or []),
|
||||
reminders=list(data.get("reminders") or []),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user