@@ -76,19 +76,38 @@ def compute_task_quality_report(
7676 raise Exception (f"Task({ task_id } ) quality report has not been created in time" )
7777
7878
79+ def get_task (task_id : int ) -> models .TaskRead :
80+ logger = logging .getLogger ("app" )
81+ with get_api_client () as api_client :
82+ try :
83+ task , _ = api_client .tasks_api .retrieve (task_id )
84+ return task
85+
86+ except exceptions .ApiException as ex :
87+ logger .exception (f"Exception when calling TaskApi.retrieve: { ex } \n " )
88+ raise
89+
90+
7991def get_task_quality_report (
8092 task_id : int ,
8193 * ,
8294 max_waiting_time : int = 10 * 60 ,
8395 sleep_interval : float = 0.5 ,
8496) -> models .QualityReport :
8597 logger = logging .getLogger ("app" )
98+
8699 report = get_last_task_quality_report (task_id )
87- if report and report .created_date > report .target_last_updated :
100+
101+ if (
102+ report
103+ # retrieving the task details to check if the latest quality report is actual
104+ # or not should be more effective than recreating quality report each time
105+ and get_task (task_id ).updated_date <= report .target_last_updated
106+ ):
88107 if logger .isEnabledFor (logging .DEBUG ):
89108 logger .debug (
90109 f"The latest task({ task_id } ) quality report({ report .id } ) is actual. "
91- "Do not recreate it."
110+ "Do not re-create it."
92111 )
93112 return report
94113
@@ -144,7 +163,7 @@ def update_task_validation_layout(
144163 task_id : int ,
145164 * ,
146165 disabled_frames : list [int ],
147- honeypot_real_frames : list [int ],
166+ honeypot_real_frames : list [int ] | None ,
148167) -> None :
149168 logger = logging .getLogger ("app" )
150169
@@ -154,8 +173,14 @@ def update_task_validation_layout(
154173 task_id ,
155174 patched_task_validation_layout_write_request = models .PatchedTaskValidationLayoutWriteRequest (
156175 disabled_frames = disabled_frames ,
157- honeypot_real_frames = honeypot_real_frames ,
158- frame_selection_method = models .FrameSelectionMethod ("manual" ),
176+ ** (
177+ {
178+ "honeypot_real_frames" : honeypot_real_frames ,
179+ "frame_selection_method" : models .FrameSelectionMethod ("manual" ),
180+ }
181+ if honeypot_real_frames
182+ else {}
183+ ),
159184 ),
160185 )
161186 except exceptions .ApiException as ex :
0 commit comments