From cefac89d6a4c9726a147b06045ad09f80e577365 Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Sat, 29 Apr 2023 13:07:36 -0600 Subject: [PATCH] Fix types that are used in webUI --- frigate/http.py | 20 ++++++++++++-------- migrations/015_event_refactor.py | 2 +- web/src/components/RecordingPlaylist.jsx | 4 +++- web/src/routes/Events.jsx | 16 +++++++++++----- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/frigate/http.py b/frigate/http.py index cd2a0c523..198b2be16 100644 --- a/frigate/http.py +++ b/frigate/http.py @@ -44,7 +44,6 @@ from frigate.util import ( restart_frigate, vainfo_hwaccel, get_tz_modifiers, - to_relative_box, ) from frigate.storage import StorageMaintainer from frigate.version import VERSION @@ -196,7 +195,7 @@ def send_to_plus(id): return make_response(jsonify({"success": False, "message": message}), 404) # events from before the conversion to relative dimensions cant include annotations - if any(d > 1 for d in event.box): + if any(d > 1 for d in event.data["box"]): include_annotation = None if event.end_time is None: @@ -252,8 +251,8 @@ def send_to_plus(id): event.save() if not include_annotation is None: - region = event.region - box = event.box + region = event.data["region"] + box = event.data["box"] try: current_app.plus_api.add_annotation( @@ -294,7 +293,7 @@ def false_positive(id): return make_response(jsonify({"success": False, "message": message}), 404) # events from before the conversion to relative dimensions cant include annotations - if any(d > 1 for d in event.box): + if any(d > 1 for d in event.data["box"]): message = f"Events prior to 0.13 cannot be submitted as false positives" logger.error(message) return make_response(jsonify({"success": False, "message": message}), 400) @@ -311,11 +310,15 @@ def false_positive(id): # need to refetch the event now that it has a plus_id event = Event.get(Event.id == id) - region = event.region - box = event.box + region = event.data["region"] + box = event.data["box"] # provide top score if score is unavailable - score = event.top_score if event.score is None else event.score + score = ( + (event.data["top_score"] if event.data["top_score"] else event.top_score) + if event.data["score"] is None + else event.data["score"] + ) try: current_app.plus_api.add_false_positive( @@ -756,6 +759,7 @@ def events(): Event.top_score, Event.false_positive, Event.box, + Event.data, ] if camera != "all": diff --git a/migrations/015_event_refactor.py b/migrations/015_event_refactor.py index ff9ab2bbb..d8a8a387c 100644 --- a/migrations/015_event_refactor.py +++ b/migrations/015_event_refactor.py @@ -41,7 +41,7 @@ def migrate(migrator, database, fake=False, **kwargs): ) migrator.add_fields( Event, - data=pw_pext.JSONField(), + data=JSONField(default={}), ) diff --git a/web/src/components/RecordingPlaylist.jsx b/web/src/components/RecordingPlaylist.jsx index 4d6f93842..4f6996afc 100644 --- a/web/src/components/RecordingPlaylist.jsx +++ b/web/src/components/RecordingPlaylist.jsx @@ -163,7 +163,9 @@ export function EventCard({ camera, event }) {
Start: {format(start, 'HH:mm:ss')}
Duration: {duration}
-
{(event.top_score * 100).toFixed(1)}%
+
+ {((event?.data?.top_score || event.top_score) * 100).toFixed(1)}% +
diff --git a/web/src/routes/Events.jsx b/web/src/routes/Events.jsx index af0af5b67..30e3507f6 100644 --- a/web/src/routes/Events.jsx +++ b/web/src/routes/Events.jsx @@ -206,7 +206,7 @@ export default function Events({ path, ...props }) { e.stopPropagation(); setDownloadEvent((_prev) => ({ id: event.id, - box: event.box, + box: event?.data?.box || event.box, label: event.label, has_clip: event.has_clip, has_snapshot: event.has_snapshot, @@ -599,7 +599,7 @@ export default function Events({ path, ...props }) { {event.sub_label ? `${event.label.replaceAll('_', ' ')}: ${event.sub_label.replaceAll('_', ' ')}` : event.label.replaceAll('_', ' ')} - ({(event.top_score * 100).toFixed(0)}%) + ({((event?.data?.top_score || event.top_score) * 100).toFixed(0)}%)
@@ -638,7 +638,9 @@ export default function Events({ path, ...props }) { @@ -680,7 +682,9 @@ export default function Events({ path, ...props }) {
onEventFrameSelected(event, frame, seekSeconds)} + onFrameSelected={(frame, seekSeconds) => + onEventFrameSelected(event, frame, seekSeconds) + } />
) : null}