models.py
1.5 kB · python · 45 lines
1from dataclasses import dataclass2from typing import Any, Dict, List3from .enums import Edition, Ink, Scheme, Type45# PAINT67@dataclass8class Paint:910 edition: Edition = None11 scheme: Scheme = None12 target: Type = None13 primary: Ink = None14 secondary: List[Ink] = None15 shades: List[int] = None1617 @property18 def is_simple(self) -> bool:19 return self.edition in [Edition.SIMPLE]2021 def wipe(self) -> "Paint":22 self.secondary = None23 self.shades = None24 return self2526 def to_dict(self) -> Dict[str, Any]:27 data = {}28 data["edition"] = self.edition.value if self.edition else None29 data["scheme"] = self.scheme.value if self.scheme else None30 data["target"] = self.target.value if self.target else None31 data["primary"] = self.primary.value if self.primary else None32 data["secondary"] = [s.value for s in self.secondary] if self.secondary else None33 data["shades"] = self.shades34 return data3536 @classmethod37 def from_dict(cls, data: Dict[str, Any]) -> "Paint":38 p = cls()39 p.edition = Edition(data["edition"]) if data.get("edition") else None40 p.scheme = Scheme(data["scheme"]) if data.get("scheme") else None41 p.target = Type(data["target"]) if data.get("target") else None42 p.primary = Ink(data["primary"]) if data.get("primary") else None43 p.secondary = [Ink(s) for s in data["secondary"]] if data.get("secondary") else None44 p.shades = data.get("shades")45 return p