43 lines
1.3 KiB
Python
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
|