2025-05-23 05:51:23 +03:00
|
|
|
from typing import Any
|
|
|
|
|
|
2024-09-28 22:21:42 +03:00
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FrigateBaseModel(BaseModel):
|
|
|
|
|
model_config = ConfigDict(extra="forbid", protected_namespaces=())
|
2025-05-23 05:51:23 +03:00
|
|
|
|
|
|
|
|
def get_nested_object(self, path: str) -> Any:
|
|
|
|
|
parts = path.split("/")
|
|
|
|
|
obj = self
|
|
|
|
|
for part in parts:
|
|
|
|
|
if part == "config":
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
if isinstance(obj, BaseModel):
|
|
|
|
|
try:
|
|
|
|
|
obj = getattr(obj, part)
|
|
|
|
|
except AttributeError:
|
|
|
|
|
return None
|
|
|
|
|
elif isinstance(obj, dict):
|
|
|
|
|
try:
|
|
|
|
|
obj = obj[part]
|
|
|
|
|
except KeyError:
|
|
|
|
|
return None
|
|
|
|
|
else:
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
return obj
|