warchron_app/src/warchron/model/campaign_participant.py

43 lines
1.3 KiB
Python

from __future__ import annotations
from typing import Any, Dict
from uuid import uuid4
class CampaignParticipant:
def __init__(
self, *, war_participant_id: str, leader: str | None, theme: str | None
):
self.id: str = str(uuid4())
self.war_participant_id: str = war_participant_id # ref to War.participants
self.leader: str | None = leader
self.theme: str | None = theme
def set_id(self, new_id: str) -> None:
self.id = new_id
def set_war_participant(self, new_participant: str) -> None:
self.war_participant_id = new_participant
def set_leader(self, new_faction: str) -> None:
self.leader = new_faction
def set_theme(self, new_theme: str) -> None:
self.theme = new_theme
def toDict(self) -> Dict[str, Any]:
return {
"id": self.id,
"war_participant_id": self.war_participant_id,
"leader": self.leader,
"theme": self.theme,
}
@staticmethod
def fromDict(data: Dict[str, Any]) -> CampaignParticipant:
part = CampaignParticipant(
war_participant_id=data["war_participant_id"],
leader=data.get("leader"),
theme=data.get("theme"),
)
part.set_id(data["id"])
return part