mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-06-25 13:51:52 +03:00
Slightly simplify review logic and avoid duplicating the json response for empty review IDs.
This commit is contained in:
parent
39fba9b0a7
commit
570e2e3f76
@ -10,7 +10,7 @@ import pandas as pd
|
|||||||
from fastapi import APIRouter, Request
|
from fastapi import APIRouter, Request
|
||||||
from fastapi.params import Depends
|
from fastapi.params import Depends
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
from peewee import Case, DoesNotExist, IntegrityError, fn, operator
|
from peewee import Case, DoesNotExist, fn, operator
|
||||||
from playhouse.shortcuts import model_to_dict
|
from playhouse.shortcuts import model_to_dict
|
||||||
|
|
||||||
from frigate.api.auth import (
|
from frigate.api.auth import (
|
||||||
@ -173,7 +173,9 @@ async def review_ids(request: Request, ids: str):
|
|||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
reviews = list(ReviewSegment.select().where(ReviewSegment.id << ids).dicts().iterator())
|
reviews = list(
|
||||||
|
ReviewSegment.select().where(ReviewSegment.id << ids).dicts().iterator()
|
||||||
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
return JSONResponse(
|
return JSONResponse(
|
||||||
content=({"success": False, "message": "Review segments not found"}),
|
content=({"success": False, "message": "Review segments not found"}),
|
||||||
@ -490,54 +492,52 @@ async def set_multiple_reviewed(
|
|||||||
|
|
||||||
user_id = current_user["username"]
|
user_id = current_user["username"]
|
||||||
|
|
||||||
reviews = list(ReviewSegment.select(ReviewSegment.id, ReviewSegment.camera).where(ReviewSegment.id << body.ids))
|
reviews = list(
|
||||||
|
ReviewSegment.select(ReviewSegment.id, ReviewSegment.camera).where(
|
||||||
|
ReviewSegment.id << body.ids
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
for review in reviews:
|
for review in reviews:
|
||||||
await require_camera_access(review.camera, request=request)
|
await require_camera_access(review.camera, request=request)
|
||||||
|
|
||||||
found_ids = [r.id for r in reviews]
|
found_ids = [r.id for r in reviews]
|
||||||
|
|
||||||
if not found_ids:
|
if found_ids:
|
||||||
return JSONResponse(
|
existing_statuses = list(
|
||||||
content=(
|
UserReviewStatus.select().where(
|
||||||
{
|
(UserReviewStatus.user_id == user_id)
|
||||||
"success": True,
|
& (UserReviewStatus.review_segment << found_ids)
|
||||||
"message": f"Marked multiple items as {'reviewed' if body.reviewed else 'unreviewed'}",
|
)
|
||||||
}
|
|
||||||
),
|
|
||||||
status_code=200,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
existing_statuses = list(
|
status_by_review = {s.review_segment_id: s for s in existing_statuses}
|
||||||
UserReviewStatus.select().where(
|
|
||||||
(UserReviewStatus.user_id == user_id) &
|
|
||||||
(UserReviewStatus.review_segment << found_ids)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
status_by_review = {s.review_segment_id: s for s in existing_statuses}
|
to_update = []
|
||||||
|
to_create = []
|
||||||
|
|
||||||
to_update = []
|
for review_id in found_ids:
|
||||||
to_create = []
|
if review_id in status_by_review:
|
||||||
|
status = status_by_review[review_id]
|
||||||
|
if status.has_been_reviewed != body.reviewed:
|
||||||
|
status.has_been_reviewed = body.reviewed
|
||||||
|
to_update.append(status)
|
||||||
|
else:
|
||||||
|
to_create.append(
|
||||||
|
{
|
||||||
|
"user_id": user_id,
|
||||||
|
"review_segment_id": review_id,
|
||||||
|
"has_been_reviewed": body.reviewed,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
for review_id in found_ids:
|
if to_update:
|
||||||
if review_id in status_by_review:
|
UserReviewStatus.bulk_update(
|
||||||
status = status_by_review[review_id]
|
to_update, fields=[UserReviewStatus.has_been_reviewed], batch_size=100
|
||||||
if status.has_been_reviewed != body.reviewed:
|
)
|
||||||
status.has_been_reviewed = body.reviewed
|
|
||||||
to_update.append(status)
|
|
||||||
else:
|
|
||||||
to_create.append({
|
|
||||||
"user_id": user_id,
|
|
||||||
"review_segment_id": review_id,
|
|
||||||
"has_been_reviewed": body.reviewed,
|
|
||||||
})
|
|
||||||
|
|
||||||
if to_update:
|
if to_create:
|
||||||
UserReviewStatus.bulk_update(to_update, fields=[UserReviewStatus.has_been_reviewed], batch_size=100)
|
UserReviewStatus.insert_many(to_create).execute()
|
||||||
|
|
||||||
if to_create:
|
|
||||||
UserReviewStatus.insert_many(to_create).execute()
|
|
||||||
|
|
||||||
return JSONResponse(
|
return JSONResponse(
|
||||||
content=(
|
content=(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user