Merged in [16981] from rjsparks@nostrum.com:

Look at the tree of replaces-relationships when determining if some reviewer has reviewed this (or perhaps an ancestor) of this document. Fixes #2821.
 - Legacy-Id: 16992
Note: SVN reference [16981] has been migrated to Git commit f740adcfc1
This commit is contained in:
Henrik Levkowetz 2019-11-11 16:57:40 +00:00
commit 4049804920
3 changed files with 29 additions and 3 deletions

View file

@ -6,6 +6,7 @@ from __future__ import absolute_import, print_function, unicode_literals
import debug # pyflakes:ignore
import factory
import factory.fuzzy
import datetime
import six
if six.PY3:
@ -36,6 +37,8 @@ class BaseDocumentFactory(factory.DjangoModelFactory):
intended_std_level_id = None
time = datetime.datetime.now()
expires = factory.LazyAttribute(lambda o: o.time+datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE))
pages = factory.fuzzy.FuzzyInteger(2,400)
@factory.lazy_attribute_sequence
def name(self, n):

View file

@ -22,8 +22,8 @@ from pyquery import PyQuery
import debug # pyflakes:ignore
import ietf.review.mailarch
from ietf.doc.factories import NewRevisionDocEventFactory, WgDraftFactory, WgRfcFactory, \
ReviewFactory, DocumentFactory
from ietf.doc.factories import ( NewRevisionDocEventFactory, IndividualDraftFactory, WgDraftFactory,
WgRfcFactory, ReviewFactory, DocumentFactory)
from ietf.doc.models import DocumentAuthor, RelatedDocument, DocEvent, ReviewRequestDocEvent, ReviewAssignmentDocEvent
from ietf.group.factories import RoleFactory, ReviewTeamFactory
from ietf.group.models import Group
@ -434,6 +434,29 @@ class ReviewTests(TestCase):
self.assertIn("This team has completed other reviews", message)
self.assertIn("{} -01 Serious Issues".format(reviewer_email.person.ascii), message)
def test_previously_reviewed_replaced_doc(self):
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="review", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',person__name='Some Reviewer',name_id='reviewer')
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
ind_doc = IndividualDraftFactory()
old_wg_doc = WgDraftFactory(relations=[('replaces',ind_doc)])
middle_wg_doc = WgDraftFactory(relations=[('replaces',old_wg_doc)])
new_wg_doc = WgDraftFactory(relations=[('replaces',middle_wg_doc)])
ReviewAssignmentFactory(review_request__team=review_team, review_request__doc=old_wg_doc, reviewer=rev_role.email, state_id='completed')
review_req=ReviewRequestFactory(team=review_team, doc=new_wg_doc)
assign_url = urlreverse('ietf.doc.views_review.assign_reviewer', kwargs={ "name": new_wg_doc.name, "request_id": review_req.pk })
login_testing_unauthorized(self, "reviewsecretary", assign_url)
r = self.client.get(assign_url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
reviewer_label = q("option[value=\"{}\"]".format(rev_role.email.address)).text().lower()
self.assertIn("reviewed document before", reviewer_label)
def test_accept_reviewer_assignment(self):
doc = WgDraftFactory(group__acronym='mars',rev='01')

View file

@ -826,7 +826,7 @@ def make_assignment_choices(email_queryset, review_req):
# previous review of document
has_reviewed_previous = ReviewRequest.objects.filter(
doc=doc,
doc__name__in=set([doc.name]).union(*extract_complete_replaces_ancestor_mapping_for_docs([doc.name]).values()),
reviewassignment__reviewer__person__in=possible_person_ids,
reviewassignment__state="completed",
team=team,