From 5a0ea56b385ff565ad18e82ce0881cd860da996e Mon Sep 17 00:00:00 2001 From: Tero Kivinen Date: Sun, 23 Jul 2023 13:02:40 -0400 Subject: [PATCH] fix: Remove automatically suggested document for document that is already has review request (fixes #3211) (#5425) * Added check that if there is already review request for the document in question, ignore the automatic suggestion for that document. Fixes #3211. * fix: dont block on open requests for a previous version. Add tests --------- Co-authored-by: Nicolas Giard Co-authored-by: Robert Sparks --- ietf/group/tests_review.py | 13 +++++++++++++ ietf/review/utils.py | 4 +++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index 6b673ad95..0e56c9f46 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -101,8 +101,20 @@ class ReviewTests(TestCase): self.assertEqual(list(suggested_review_requests_for_team(team)), []) + # blocked by an already existing request (don't suggest it again) + review_req.state_id = "requested" + review_req.save() + self.assertEqual(list(suggested_review_requests_for_team(team)), []) + + # ... but not for a previous version + review_req.requested_rev = prev_rev + review_req.save() + self.assertEqual(len(suggested_review_requests_for_team(team)), 1) + + # blocked by completion review_req.state = ReviewRequestStateName.objects.get(slug="assigned") + review_req.requested_rev = "" review_req.save() assignment.state = ReviewAssignmentStateName.objects.get(slug="completed") assignment.reviewed_rev = review_req.doc.rev @@ -116,6 +128,7 @@ class ReviewTests(TestCase): self.assertEqual(len(suggested_review_requests_for_team(team)), 1) + def test_suggested_review_requests_on_lc_and_telechat(self): review_req = ReviewRequestFactory(state_id='assigned') doc = review_req.doc diff --git a/ietf/review/utils.py b/ietf/review/utils.py index 31b6b401f..4563a82fd 100644 --- a/ietf/review/utils.py +++ b/ietf/review/utils.py @@ -589,10 +589,12 @@ def suggested_review_requests_for_team(team): and existing.reviewassignment_set.filter(state_id__in=("assigned", "accepted")).exists() and (not existing.requested_rev or existing.requested_rev == request.doc.rev)) request_closed = existing.state_id not in ('requested','assigned') + # Is there a review request for this document already in system + requested = existing.state_id in ('requested') and (not existing.requested_rev or existing.requested_rev == request.doc.rev) # at least one assignment was completed for the requested version or the current doc version if no specific version was requested: some_assignment_completed = existing.reviewassignment_set.filter(reviewed_rev=existing.requested_rev or existing.doc.rev, state_id='completed').exists() - return any([no_review_document, no_review_rev, pending, request_closed, some_assignment_completed]) + return any([no_review_document, no_review_rev, pending, request_closed, requested, some_assignment_completed]) res = [r for r in requests.values() if not any(blocks(e, r) for e in existing_requests[r.doc_id])]