from uuid import uuid4 from datetime import datetime from warchron.model.round import Round class Campaign: def __init__(self, name, month): self.id = str(uuid4()) self.name = name self.month = month self.entrants = {} self.rounds = [] 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_month(self, new_month): self.month = new_month def set_state(self, new_state): self.is_over = new_state def toDict(self): return { "id" : self.id, "name" : self.name, "month" : self.month, # "entrants" : self.entrants, "rounds": [rnd.toDict() for rnd in self.rounds], "is_over": self.is_over } @staticmethod def fromDict(data: dict): camp = Campaign(name=data["name"], month=data["month"]) camp.set_id(data["id"]) # camp.entrants = data.get("entrants", {}) for rnd_data in data.get("rounds", []): camp.rounds.append(Round.fromDict(rnd_data)) camp.set_state(data.get("is_over", False)) return camp def get_round(self, round_id) -> Round: return self.rounds[round_id] def get_all_rounds(self) -> list[Round]: return list(self.rounds) def add_round(self) -> Round: round = Round() self.rounds.append(round) return round def remove_round(self, round_id: str): rnd = next((r for r in self.rounds if r.id == round_id), None) if rnd: self.rounds.remove(rnd)