Files
f1-circuits/models/locality.py
T
jschoubben 83311a6079 Fix circular reference recursion in JSON serialization
Dataclass models have parent back-references (TrackLayout→Circuit→
Locality→Country) causing infinite recursion in dataclasses.asdict().
Add to_dict() methods that exclude parent refs, use them in API endpoints.
2026-05-08 03:01:42 +02:00

38 lines
1.0 KiB
Python

from dataclasses import dataclass
from typing import TYPE_CHECKING
from .circuit import Circuit
if TYPE_CHECKING:
from .country import Country
@dataclass
class Locality:
slug: str
name: str
country: 'Country'
circuits: dict[str, Circuit]
def to_dict(self) -> dict:
return {
"slug": self.slug,
"name": self.name,
"circuits": {k: v.to_dict() for k, v in self.circuits.items()},
}
@classmethod
def from_dict(cls, country: 'Country', slug: str, data: dict):
locality = cls(
slug=slug,
name=data["name"],
country=country,
circuits={}
)
locality.circuits = {circuit_slug: Circuit.from_dict(locality, circuit_slug, circuit_data) for
circuit_slug, circuit_data in data["circuits"].items()}
return locality
def load_geo_json_data(self):
"""Load data for all circuits"""
for circuit in self.circuits.values():
circuit.load_geo_json_data()