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