diff --git a/CHANGES.rst b/CHANGES.rst index 59e04629..092c9876 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,7 +5,8 @@ Changelog 1.4.45 (unreleased) ------------------- -- Nothing changed yet. +- WEB-4414: Fix ProcedureViewlet crashing when procedure_ts token is no longer in vocabulary + [remdub] 1.4.44 (2026-04-28) diff --git a/src/imio/smartweb/core/tests/test_procedure.py b/src/imio/smartweb/core/tests/test_procedure.py index fae933e6..868a1cc8 100644 --- a/src/imio/smartweb/core/tests/test_procedure.py +++ b/src/imio/smartweb/core/tests/test_procedure.py @@ -224,6 +224,14 @@ def test_get_selected_procedure_title_returns_term_when_set(self, m): self.assertIsNotNone(term) self.assertIn("Acte de d\\u00e9c\\u00e8s", term.title) + @requests_mock.Mocker() + def test_get_selected_procedure_title_none_when_unknown_token(self, m): + url = f"{WCS_URL}formdefs/" + m.get(url, text=json.dumps(self.json_procedures_raw_mock)) + self.procedure.procedure_ts = "https://nonexistent-procedure.be/unknown/" + viewlet = self._make_viewlet() + self.assertIsNone(viewlet.get_selected_procedure_title()) + # --- is_anonymous --- def test_is_anonymous_returns_false_when_authenticated(self): diff --git a/src/imio/smartweb/core/viewlets/procedure.py b/src/imio/smartweb/core/viewlets/procedure.py index e3ec29f1..3d0386fe 100644 --- a/src/imio/smartweb/core/viewlets/procedure.py +++ b/src/imio/smartweb/core/viewlets/procedure.py @@ -13,7 +13,10 @@ def get_selected_procedure_title(self): IVocabularyFactory, "imio.smartweb.vocabulary.PublikProcedures" ) vocabulary = factory() - term = vocabulary.getTerm(self.context.procedure_ts) + try: + term = vocabulary.getTerm(self.context.procedure_ts) + except LookupError: + return None return term @property