fix: Remove automatically suggested document for document that is already has review request (fixes ) ()

* Added check that if there is already review request for the document
in question, ignore the automatic suggestion for that document.
Fixes .

* fix: dont block on open requests for a previous version. Add tests

---------

Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
This commit is contained in:
Tero Kivinen 2023-07-23 13:02:40 -04:00 committed by GitHub
parent 14b4f82239
commit 5a0ea56b38
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View file

@ -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

View file

@ -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])]