From 416df8980afa18b3a686e63405f5cc9a946c4e95 Mon Sep 17 00:00:00 2001 From: Nikita Manovich Date: Mon, 7 Sep 2020 22:38:38 +0300 Subject: [PATCH] Don't allow lambda manager to return objects with a label which doesn't exist in the task. (#2131) --- cvat/apps/lambda_manager/views.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index d307ca51..52c1de41 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -134,6 +134,16 @@ class LambdaFunction: }) quality = data.get("quality") mapping = data.get("mapping") + mapping_by_default = {db_label.name:db_label.name + for db_label in db_task.label_set.all()} + if not mapping: + # use mapping by default to avoid labels in mapping which + # don't exist in the task + mapping = mapping_by_default + else: + # filter labels in mapping which don't exist in the task + mapping = {k:v for k,v in mapping.items() if v in mapping_by_default} + if self.kind == LambdaType.DETECTOR: payload.update({ "image": self._get_image(db_task, data["frame"], quality)