mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-12 22:25:24 +03:00
Add api support for filtering on zones
This commit is contained in:
parent
b3b4f049c9
commit
951f36d1c1
@ -450,6 +450,7 @@ Reviews from the database. Accepts the following query string parameters:
|
|||||||
| `after` | int | Epoch time |
|
| `after` | int | Epoch time |
|
||||||
| `cameras` | str | , separated list of cameras |
|
| `cameras` | str | , separated list of cameras |
|
||||||
| `labels` | str | , separated list of labels |
|
| `labels` | str | , separated list of labels |
|
||||||
|
| `zones` | str | , separated list of zones |
|
||||||
| `reviewed` | int | Include items that have been reviewed (0 or 1) |
|
| `reviewed` | int | Include items that have been reviewed (0 or 1) |
|
||||||
| `limit` | int | Limit the number of events returned |
|
| `limit` | int | Limit the number of events returned |
|
||||||
| `severity` | str | Limit items to severity (alert, detection, significant_motion) |
|
| `severity` | str | Limit items to severity (alert, detection, significant_motion) |
|
||||||
|
|||||||
@ -22,6 +22,7 @@ ReviewBp = Blueprint("reviews", __name__)
|
|||||||
def review():
|
def review():
|
||||||
cameras = request.args.get("cameras", "all")
|
cameras = request.args.get("cameras", "all")
|
||||||
labels = request.args.get("labels", "all")
|
labels = request.args.get("labels", "all")
|
||||||
|
zones = request.args.get("zones", "all")
|
||||||
reviewed = request.args.get("reviewed", type=int, default=0)
|
reviewed = request.args.get("reviewed", type=int, default=0)
|
||||||
limit = request.args.get("limit", type=int, default=None)
|
limit = request.args.get("limit", type=int, default=None)
|
||||||
severity = request.args.get("severity", None)
|
severity = request.args.get("severity", None)
|
||||||
@ -60,6 +61,20 @@ def review():
|
|||||||
label_clause = reduce(operator.or_, label_clauses)
|
label_clause = reduce(operator.or_, label_clauses)
|
||||||
clauses.append((label_clause))
|
clauses.append((label_clause))
|
||||||
|
|
||||||
|
if zones != "all":
|
||||||
|
# use matching so segments with multiple zones
|
||||||
|
# still match on a search where any zone matches
|
||||||
|
zone_clauses = []
|
||||||
|
filtered_zones = zones.split(",")
|
||||||
|
|
||||||
|
for zone in filtered_zones:
|
||||||
|
zone_clauses.append(
|
||||||
|
(ReviewSegment.data["zones"].cast("text") % f'*"{zone}"*')
|
||||||
|
)
|
||||||
|
|
||||||
|
zone_clause = reduce(operator.or_, zone_clauses)
|
||||||
|
clauses.append((zone_clause))
|
||||||
|
|
||||||
if reviewed == 0:
|
if reviewed == 0:
|
||||||
clauses.append((ReviewSegment.has_been_reviewed == False))
|
clauses.append((ReviewSegment.has_been_reviewed == False))
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user