Typing fixes

This commit is contained in:
Nicolas Mowen 2024-12-03 06:23:29 -07:00
parent bb932d0cc6
commit c6868d630d
5 changed files with 31 additions and 8 deletions

View File

@ -17,7 +17,7 @@ from fastapi.responses import JSONResponse, PlainTextResponse
from markupsafe import escape from markupsafe import escape
from peewee import operator from peewee import operator
from frigate.api.defs.app_query_parameters import AppTimelineHourlyQueryParameters from frigate.api.defs.query.app_query_parameters import AppTimelineHourlyQueryParameters
from frigate.api.defs.request.app_body import AppConfigSetBody from frigate.api.defs.request.app_body import AppConfigSetBody
from frigate.api.defs.tags import Tags from frigate.api.defs.tags import Tags
from frigate.config import FrigateConfig from frigate.config import FrigateConfig

View File

@ -1,4 +1,26 @@
from pydantic import BaseModel from typing import Optional
from pydantic import BaseModel, Json
class EventResponse(BaseModel):
id: str
label: str
sub_label: Optional[str]
camera: str
start_time: float
end_time: Optional[float]
false_positive: bool
zones: list[str]
thumbnail: str
has_clip: bool
has_snapshot: bool
retain_indefinitely: bool
plus_id: Optional[str]
model_hash: Optional[str]
detector_type: Optional[str]
model_type: Optional[str]
data: Json
class EventCreateResponse(BaseModel): class EventCreateResponse(BaseModel):

View File

@ -34,6 +34,7 @@ from frigate.api.defs.request.events_body import (
from frigate.api.defs.response.event_response import ( from frigate.api.defs.response.event_response import (
EventCreateResponse, EventCreateResponse,
EventMultiDeleteResponse, EventMultiDeleteResponse,
EventResponse,
EventUploadPlusResponse, EventUploadPlusResponse,
) )
from frigate.api.defs.response.generic_response import GenericResponse from frigate.api.defs.response.generic_response import GenericResponse
@ -50,7 +51,7 @@ logger = logging.getLogger(__name__)
router = APIRouter(tags=[Tags.events]) router = APIRouter(tags=[Tags.events])
@router.get("/events", response_model=list[Event]) @router.get("/events", response_model=list[EventResponse])
def events(params: EventsQueryParams = Depends()): def events(params: EventsQueryParams = Depends()):
camera = params.camera camera = params.camera
cameras = params.cameras cameras = params.cameras
@ -267,7 +268,7 @@ def events(params: EventsQueryParams = Depends()):
return JSONResponse(content=list(events)) return JSONResponse(content=list(events))
@router.get("/events/explore", response_model=list[Event]) @router.get("/events/explore", response_model=list[EventResponse])
def events_explore(limit: int = 10): def events_explore(limit: int = 10):
# get distinct labels for all events # get distinct labels for all events
distinct_labels = Event.select(Event.label).distinct().order_by(Event.label) distinct_labels = Event.select(Event.label).distinct().order_by(Event.label)
@ -329,7 +330,7 @@ def events_explore(limit: int = 10):
return JSONResponse(content=processed_events) return JSONResponse(content=processed_events)
@router.get("/event_ids", response_model=list[Event]) @router.get("/event_ids", response_model=list[EventResponse])
def event_ids(ids: str): def event_ids(ids: str):
ids = ids.split(",") ids = ids.split(",")
@ -652,7 +653,7 @@ def events_summary(params: EventsSummaryQueryParams = Depends()):
return JSONResponse(content=[e for e in groups.dicts()]) return JSONResponse(content=[e for e in groups.dicts()])
@router.get("/events/{event_id}", response_model=Event) @router.get("/events/{event_id}", response_model=EventResponse)
def event(event_id: str): def event(event_id: str):
try: try:
return model_to_dict(Event.get(Event.id == event_id)) return model_to_dict(Event.get(Event.id == event_id))

View File

@ -210,7 +210,7 @@ def export_delete(event_id: str):
) )
@router.get("/exports/{export_id}", response_model=Export) @router.get("/exports/{export_id}")
def get_export(export_id: str): def get_export(export_id: str):
try: try:
return JSONResponse(content=model_to_dict(Export.get(Export.id == export_id))) return JSONResponse(content=model_to_dict(Export.get(Export.id == export_id)))

View File

@ -20,7 +20,7 @@ from pathvalidate import sanitize_filename
from peewee import DoesNotExist, fn from peewee import DoesNotExist, fn
from tzlocal import get_localzone_name from tzlocal import get_localzone_name
from frigate.api.defs.media_query_parameters import ( from frigate.api.defs.query.media_query_parameters import (
Extension, Extension,
MediaEventsSnapshotQueryParams, MediaEventsSnapshotQueryParams,
MediaLatestFrameQueryParams, MediaLatestFrameQueryParams,