from dataclasses import dataclass from .locality import Locality @dataclass class Country: slug: str name: str localities: dict[str, Locality] def to_dict(self) -> dict: return { "slug": self.slug, "name": self.name, "localities": {k: v.to_dict() for k, v in self.localities.items()}, } @classmethod def from_dict(cls, slug: str, data: dict): country = cls( slug=slug, name=data["name"], localities={} ) country.localities = {locality_slug: Locality.from_dict(country, locality_slug, locality_data) for locality_slug, locality_data in data["localities"].items()} return country def load_geo_json_data(self): """Load data for all cities""" for locality in self.localities.values(): locality.load_geo_json_data()