From fd46192298aca62ea6fadbe3a1bb0c9b49efb94b Mon Sep 17 00:00:00 2001 From: Chris Lee Date: Tue, 28 Apr 2026 00:29:51 -0700 Subject: [PATCH 1/2] Default missing review_rejected to false --- indico_toolkit/results/review.py | 5 ++++- indico_toolkit/types/workflow_object.py | 2 +- tests/results/test_review.py | 13 +++++++++++++ tests/types/test_worflow_result.py | 11 +++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 tests/results/test_review.py diff --git a/indico_toolkit/results/review.py b/indico_toolkit/results/review.py index 1a1c79f..0d4cb8c 100644 --- a/indico_toolkit/results/review.py +++ b/indico_toolkit/results/review.py @@ -23,10 +23,13 @@ def from_dict(review: object) -> "Review": """ Create a `Review` from a review dictionary. """ + rejected = False + if isinstance(review, dict): + rejected = bool(review.get("review_rejected", False)) return Review( id=get(review, int, "review_id"), reviewer_id=get(review, int, "reviewer_id"), notes=get(review, str, "review_notes"), - rejected=get(review, bool, "review_rejected"), + rejected=rejected, type=ReviewType(get(review, str, "review_type")), ) diff --git a/indico_toolkit/types/workflow_object.py b/indico_toolkit/types/workflow_object.py index bd4fa30..57e193d 100644 --- a/indico_toolkit/types/workflow_object.py +++ b/indico_toolkit/types/workflow_object.py @@ -126,7 +126,7 @@ def review_notes(self) -> int: @property def review_rejected(self) -> int: - return self.result["review_rejected"] + return self.result.get("review_rejected", False) @property def admin_review(self) -> bool: diff --git a/tests/results/test_review.py b/tests/results/test_review.py new file mode 100644 index 0000000..53b31be --- /dev/null +++ b/tests/results/test_review.py @@ -0,0 +1,13 @@ +from indico_toolkit.results import Review + + +def test_from_dict_defaults_missing_review_rejected_to_false() -> None: + review = Review.from_dict( + { + "review_id": 1, + "reviewer_id": 2, + "review_notes": "", + "review_type": "manual", + } + ) + assert review.rejected is False diff --git a/tests/types/test_worflow_result.py b/tests/types/test_worflow_result.py index fe9e8c8..252ff5a 100644 --- a/tests/types/test_worflow_result.py +++ b/tests/types/test_worflow_result.py @@ -48,3 +48,14 @@ def test_classification_predictions(): "model_v1", ) assert isinstance(wf_result.get_predictions, Classification) + + +def test_review_rejected_defaults_false_when_missing(): + wf_result = WorkflowResult( + { + "submission_id": 12, + "results": {"document": {"results": {"model_v1": {"pre_review": []}}}}, + }, + "model_v1", + ) + assert wf_result.review_rejected is False From 89bd5593e04661e3501bf69899298eafdbaa40e9 Mon Sep 17 00:00:00 2001 From: Chris Lee Date: Tue, 28 Apr 2026 00:31:14 -0700 Subject: [PATCH 2/2] Limit review_rejected default fix to WorkflowResult only --- indico_toolkit/results/review.py | 5 +---- tests/results/test_review.py | 13 ------------- 2 files changed, 1 insertion(+), 17 deletions(-) delete mode 100644 tests/results/test_review.py diff --git a/indico_toolkit/results/review.py b/indico_toolkit/results/review.py index 0d4cb8c..1a1c79f 100644 --- a/indico_toolkit/results/review.py +++ b/indico_toolkit/results/review.py @@ -23,13 +23,10 @@ def from_dict(review: object) -> "Review": """ Create a `Review` from a review dictionary. """ - rejected = False - if isinstance(review, dict): - rejected = bool(review.get("review_rejected", False)) return Review( id=get(review, int, "review_id"), reviewer_id=get(review, int, "reviewer_id"), notes=get(review, str, "review_notes"), - rejected=rejected, + rejected=get(review, bool, "review_rejected"), type=ReviewType(get(review, str, "review_type")), ) diff --git a/tests/results/test_review.py b/tests/results/test_review.py deleted file mode 100644 index 53b31be..0000000 --- a/tests/results/test_review.py +++ /dev/null @@ -1,13 +0,0 @@ -from indico_toolkit.results import Review - - -def test_from_dict_defaults_missing_review_rejected_to_false() -> None: - review = Review.from_dict( - { - "review_id": 1, - "reviewer_id": 2, - "review_notes": "", - "review_type": "manual", - } - ) - assert review.rejected is False