30 lines
926 B
Python
30 lines
926 B
Python
from dataclasses import dataclass
|
|
from typing import Optional, Dict, Any, TYPE_CHECKING
|
|
if TYPE_CHECKING:
|
|
from models.circuit import Circuit
|
|
|
|
|
|
@dataclass
|
|
class GeoJSONProperties:
|
|
id: str
|
|
country: str
|
|
locality: str
|
|
circuit: str
|
|
length: Optional[int] = None
|
|
altitude: Optional[int] = None
|
|
rotation: Optional[float] = None
|
|
direction: Optional[str] = None
|
|
fastest_laptime: Optional[float] = None
|
|
|
|
@classmethod
|
|
def from_dict(cls, circuit: 'Circuit', data: Dict[str, Any]) -> 'GeoJSONProperties':
|
|
return cls(
|
|
id=data.get("id"),
|
|
country=circuit.locality.country.name,
|
|
locality=circuit.locality.name,
|
|
circuit=circuit.name,
|
|
**{k: v for k, v in data.items() if
|
|
k in cls.__annotations__ and k not in ['id', 'country', 'locality',
|
|
'circuit']}
|
|
)
|