diff --git a/frigate/http.py b/frigate/http.py index dfa4b5f62..37bc4e50a 100644 --- a/frigate/http.py +++ b/frigate/http.py @@ -153,6 +153,45 @@ def delete_retain(id): jsonify({"success": True, "message": "Event" + id + " un-retained"}), 200 ) +@bp.route("/events//sub_label", methods=("POST",)) +def set_sub_label(id): + try: + event = Event.get(Event.id == id) + except DoesNotExit: + return make_response( + jsonify({"success": False, "message": "Event" + id + " not found"}), 404 + ) + + if event.label != "person": + return make_response( + jsonify({"success": False, "message": "Event" + id + " is not a person event"}), 400 + ) + + new_sub_label = request.form.get("subLabel", "") + + if new_sub_label: + event.sub_label = new_sub_label + event.save() + jsonify({"success": True, "message": "Event" + id + " sub label set to " + new_sub_label}), 200 + + return make_response( + jsonify({"success": False, "message": "Sublabel not provided."}), 400 + ) + +@bp.route("/events//sub_label", methods=("DELETE",)) +def delete_sub_label(id): + try: + event = Event.get(Event.id == id) + except DoesNotExit: + return make_response( + jsonify({"success": False, "message": "Event" + id + " not found"}), 404 + ) + + event.sub_label = "" + event.save() + return make_response( + jsonify({"success": True, "message": "Event" + id + " sub label removed"}), 200 + ) @bp.route("/events/", methods=("DELETE",)) def delete_event(id): diff --git a/frigate/models.py b/frigate/models.py index ff83dcb54..48180e870 100644 --- a/frigate/models.py +++ b/frigate/models.py @@ -6,6 +6,7 @@ from playhouse.sqlite_ext import * class Event(Model): id = CharField(null=False, primary_key=True, max_length=30) label = CharField(index=True, max_length=20) + sub_label = CharField(index=True, max_length=12) camera = CharField(index=True, max_length=20) start_time = DateTimeField() end_time = DateTimeField()