diff --git a/src/omotes_rest/apis/api_dataclasses.py b/src/omotes_rest/apis/api_dataclasses.py index 2fffc9e..9b17565 100644 --- a/src/omotes_rest/apis/api_dataclasses.py +++ b/src/omotes_rest/apis/api_dataclasses.py @@ -59,9 +59,9 @@ class JobInput: metadata={ "marshmallow_field": String( allow_none=True, - validate=validate.OneOf(["medium", "low", "high"]) + validate=validate.OneOf(["medium", "low", "high"]), ) - } + }, ) @@ -133,7 +133,7 @@ class JobResponse: input_esdl: str output_esdl: str logs: str - esdl_feedback: dict[str, list] + esdl_feedback: list[dict] job_priority: str diff --git a/src/omotes_rest/postgres_interface.py b/src/omotes_rest/postgres_interface.py index efa1e3a..163045d 100644 --- a/src/omotes_rest/postgres_interface.py +++ b/src/omotes_rest/postgres_interface.py @@ -210,7 +210,7 @@ def set_job_stopped( new_status: JobRestStatus, logs: str | None = None, output_esdl: str | None = None, - esdl_feedback: dict[str, list] | None = None, + esdl_feedback: list[dict] | None = None, ) -> None: """Set the job to stopped with supplied status. diff --git a/src/omotes_rest/rest_interface.py b/src/omotes_rest/rest_interface.py index e66f5d9..4f982a7 100644 --- a/src/omotes_rest/rest_interface.py +++ b/src/omotes_rest/rest_interface.py @@ -101,22 +101,26 @@ def handle_on_job_finished(self, job: Job, result: JobResult) -> None: else: raise NotImplementedError(f"Unknown result type '{result.result_type}'") - esdl_feedback: dict[str, list] = {} + esdl_feedback: list[dict] = [] for message in result.esdl_messages: if message.HasField("esdl_object_id") and message.esdl_object_id: esdl_object_id = message.esdl_object_id else: esdl_object_id = "general" - if esdl_object_id not in esdl_feedback: - esdl_feedback[esdl_object_id] = [] - - esdl_feedback[esdl_object_id].append( - { - "message": message.technical_message, - "severity": EsdlMessage.Severity.Name(message.severity), - } + id_feedback = next( + (feedback for feedback in esdl_feedback if feedback["assetID"] == esdl_object_id), + None, ) + feedback_message = { + "validation_message": message.technical_message, + "severity": EsdlMessage.Severity.Name(message.severity), + } + + if id_feedback: + id_feedback["messages"].append(feedback_message) + else: + esdl_feedback.append({"assetID": esdl_object_id, "messages": [feedback_message]}) self.postgres_if.set_job_stopped( job_id=job.id,