from uuid import uuid4 from datetime import datetime from warchron.model.campaign import Campaign class War: def __init__(self, name): self.id = str(uuid4()) self.name = name self.year = datetime.now().year self.entrants = {} self.campaigns = [] self.is_over = False def set_id(self, new_id): self.id = new_id def set_name(self, new_name): self.name = new_name def set_year(self, new_year): self.year = new_year def set_state(self, new_state): self.is_over = new_state def toDict(self): return { "id" : self.id, "name" : self.name, "year" : self.year, # "entrants" : self.entrants, "campaigns": [camp.toDict() for camp in self.campaigns], "is_over": self.is_over } @staticmethod def fromDict(data: dict): war = War(name=data["name"]) war.set_id(data["id"]) war.set_year(data["year"]) # war.entrants = data.get("entrants", {}) for camp_data in data.get("campaigns", []): war.campaigns.append(Campaign.fromDict(camp_data)) war.set_state(data.get("is_over", False)) return war def add_campaign(self, name) -> Campaign: campaign = Campaign(name) self.campaigns.append(campaign) return campaign def get_campaign(self, campaign_id) -> Campaign: return self.campaigns[campaign_id] def get_all_campaigns(self) -> list[Campaign]: return list(self.campaigns) def add_campaign(self, name: str) -> Campaign: campaign = Campaign(name) self.campaigns.append(campaign) return campaign