From 7f4169e5fe0bfe5ab06d2a592b9039598e93ae5f Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Fri, 24 Jul 2026 20:34:04 +0200 Subject: [PATCH 1/2] [IMP] edi_queue_oca: update exc record state on failed jobs Rely on new on fail hooks from the queue job module. --- edi_queue_oca/data/job_function.xml | 4 ++++ edi_queue_oca/models/edi_exchange_record.py | 22 +++++++++++++++++++++ edi_queue_oca/tests/test_backend_jobs.py | 21 ++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/edi_queue_oca/data/job_function.xml b/edi_queue_oca/data/job_function.xml index aedc76dec..6183d9c3b 100644 --- a/edi_queue_oca/data/job_function.xml +++ b/edi_queue_oca/data/job_function.xml @@ -2,21 +2,25 @@ action_exchange_generate + _job_on_fail_generate action_exchange_send + _job_on_fail_send action_exchange_receive + _job_on_fail_receive action_exchange_process + _job_on_fail_process diff --git a/edi_queue_oca/models/edi_exchange_record.py b/edi_queue_oca/models/edi_exchange_record.py index 58915fa5a..21c606e15 100644 --- a/edi_queue_oca/models/edi_exchange_record.py +++ b/edi_queue_oca/models/edi_exchange_record.py @@ -91,3 +91,25 @@ def action_exchange_generate_send_chained(self): # Raise prio to max to send the record out as fast as possible. job1.on_done(self.delayable(priority=0).action_exchange_send()) job1.delay() + + def _job_on_fail_generate(self, **kw): + return self._job_on_fail_update("validate_error", **kw) + + def _job_on_fail_send(self, **kw): + return self._job_on_fail_update("output_error_on_send", **kw) + + def _job_on_fail_receive(self, **kw): + return self._job_on_fail_update("input_receive_error", **kw) + + def _job_on_fail_process(self, **kw): + return self._job_on_fail_update("input_processed_error", **kw) + + def _job_on_fail_update(self, failed_state, **kw): + self.ensure_one() + self.write( + { + "edi_exchange_state": failed_state, + "exchange_error": ": ".join([kw["exc_name"], kw["exc_message"]]), + "exchange_error_traceback": kw["exc_info"], + } + ) diff --git a/edi_queue_oca/tests/test_backend_jobs.py b/edi_queue_oca/tests/test_backend_jobs.py index 44c90eac7..c2ddb2060 100644 --- a/edi_queue_oca/tests/test_backend_jobs.py +++ b/edi_queue_oca/tests/test_backend_jobs.py @@ -159,3 +159,24 @@ def test_input_processed_error(self): # Check related jobs record.invalidate_recordset() self.assertEqual(created, self._get_related_jobs(record)) + + def test_on_fail_job(self): + vals = { + "model": self.partner._name, + "res_id": self.partner.id, + } + record = self.backend.create_record("test_csv_output", vals) + self.assertEqual(record.edi_exchange_state, "new") + job = record.action_exchange_generate() + exc_vals = { + "exc_info": "Dummy traceback", + "exc_name": "Dummy exception", + "exc_message": "Dummy message", + } + job.on_fail(exc_vals) + self.assertEqual(record.edi_exchange_state, "validate_error") + self.assertEqual( + record.exchange_error, + ": ".join([exc_vals["exc_name"], exc_vals["exc_message"]]), + ) + self.assertEqual(record.exchange_error_traceback, exc_vals["exc_info"]) From 9489b753971bbc874b824983a6f90e4d5a91cf14 Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Thu, 27 Aug 2026 16:09:36 +0200 Subject: [PATCH 2/2] Add TMP test req --- test-requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test-requirements.txt b/test-requirements.txt index a8133e4b5..886a3bc8b 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,2 +1,4 @@ odoo-test-helper xmlunittest + +odoo-addon-queue_job @ git+https://github.com/OCA/queue@refs/pull/971/head#subdirectory=queue_job