F1 circuit layouts with year-by-year SVGs — manually traced track variations
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
921B

  1. from dataclasses import dataclass
  2. from .locality import Locality
  3. @dataclass
  4. class Country:
  5. slug: str
  6. name: str
  7. localities: dict[str, Locality]
  8. def to_dict(self) -> dict:
  9. return {
  10. "slug": self.slug,
  11. "name": self.name,
  12. "localities": {k: v.to_dict() for k, v in self.localities.items()},
  13. }
  14. @classmethod
  15. def from_dict(cls, slug: str, data: dict):
  16. country = cls(
  17. slug=slug,
  18. name=data["name"],
  19. localities={}
  20. )
  21. country.localities = {locality_slug: Locality.from_dict(country, locality_slug, locality_data) for
  22. locality_slug, locality_data in data["localities"].items()}
  23. return country
  24. def load_geo_json_data(self):
  25. """Load data for all cities"""
  26. for locality in self.localities.values():
  27. locality.load_geo_json_data()