Skip to content

Commit f740adc

Browse files
committed
Look at the tree of replaces-relationships when determining if some reviewer has reviewed this (or perhaps an ancestor) of this document. Fixes ietf-tools#2821. Commit ready for merge.
- Legacy-Id: 16981
1 parent 5c08b40 commit f740adc

3 files changed

Lines changed: 28 additions & 2 deletions

File tree

ietf/doc/factories.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import debug # pyflakes:ignore
88
import factory
9+
import factory.fuzzy
910
import datetime
1011
import six
1112
if six.PY3:
@@ -36,6 +37,8 @@ class Meta:
3637
intended_std_level_id = None
3738
time = datetime.datetime.now()
3839
expires = factory.LazyAttribute(lambda o: o.time+datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE))
40+
pages = factory.fuzzy.FuzzyInteger(2,400)
41+
3942

4043
@factory.lazy_attribute_sequence
4144
def name(self, n):

ietf/doc/tests_review.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import debug # pyflakes:ignore
2323

2424
import ietf.review.mailarch
25-
from ietf.doc.factories import NewRevisionDocEventFactory, WgDraftFactory, WgRfcFactory, ReviewFactory
25+
from ietf.doc.factories import NewRevisionDocEventFactory, IndividualDraftFactory, WgDraftFactory, WgRfcFactory, ReviewFactory
2626
from ietf.doc.models import DocumentAuthor, RelatedDocument, DocEvent, ReviewRequestDocEvent, ReviewAssignmentDocEvent
2727
from ietf.group.factories import RoleFactory, ReviewTeamFactory
2828
from ietf.group.models import Group
@@ -433,6 +433,29 @@ def test_assign_reviewer(self):
433433
self.assertIn("This team has completed other reviews", message)
434434
self.assertIn("{} -01 Serious Issues".format(reviewer_email.person.ascii), message)
435435

436+
def test_previously_reviewed_replaced_doc(self):
437+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="review", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
438+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',person__name='Some Reviewer',name_id='reviewer')
439+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
440+
441+
ind_doc = IndividualDraftFactory()
442+
old_wg_doc = WgDraftFactory(relations=[('replaces',ind_doc)])
443+
middle_wg_doc = WgDraftFactory(relations=[('replaces',old_wg_doc)])
444+
new_wg_doc = WgDraftFactory(relations=[('replaces',middle_wg_doc)])
445+
446+
ReviewAssignmentFactory(review_request__team=review_team, review_request__doc=old_wg_doc, reviewer=rev_role.email, state_id='completed')
447+
448+
review_req=ReviewRequestFactory(team=review_team, doc=new_wg_doc)
449+
450+
assign_url = urlreverse('ietf.doc.views_review.assign_reviewer', kwargs={ "name": new_wg_doc.name, "request_id": review_req.pk })
451+
452+
login_testing_unauthorized(self, "reviewsecretary", assign_url)
453+
r = self.client.get(assign_url)
454+
self.assertEqual(r.status_code, 200)
455+
q = PyQuery(r.content)
456+
reviewer_label = q("option[value=\"{}\"]".format(rev_role.email.address)).text().lower()
457+
self.assertIn("reviewed document before", reviewer_label)
458+
436459
def test_accept_reviewer_assignment(self):
437460

438461
doc = WgDraftFactory(group__acronym='mars',rev='01')

ietf/review/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ def make_assignment_choices(email_queryset, review_req):
826826

827827
# previous review of document
828828
has_reviewed_previous = ReviewRequest.objects.filter(
829-
doc=doc,
829+
doc__name__in=set([doc.name]).union(*extract_complete_replaces_ancestor_mapping_for_docs([doc.name]).values()),
830830
reviewassignment__reviewer__person__in=possible_person_ids,
831831
reviewassignment__state="completed",
832832
team=team,

0 commit comments

Comments
 (0)