diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py
index 4799afea2..67a8341a6 100644
--- a/ietf/doc/tests_review.py
+++ b/ietf/doc/tests_review.py
@@ -18,11 +18,11 @@ import debug # pyflakes:ignore
import ietf.review.mailarch
from ietf.doc.factories import NewRevisionDocEventFactory, WgDraftFactory, WgRfcFactory
-from ietf.doc.models import DocumentAuthor, RelatedDocument, DocEvent, ReviewRequestDocEvent, ReviewAssignmentDocEvent
+from ietf.doc.models import DocumentAuthor, RelatedDocument, DocEvent, ReviewAssignmentDocEvent
from ietf.group.factories import RoleFactory, ReviewTeamFactory
from ietf.group.models import Group
from ietf.message.models import Message
-from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewAssignmentStateName, ReviewTypeName
+from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewAssignmentStateName
from ietf.person.models import Email, Person
from ietf.review.factories import ReviewRequestFactory, ReviewAssignmentFactory
from ietf.review.models import (ReviewRequest, ReviewerSettings,
@@ -137,7 +137,7 @@ class ReviewTests(TestCase):
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',name_id='reviewer')
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='assigned',requested_by=rev_role.person,deadline=datetime.datetime.now()+datetime.timedelta(days=20))
- assignment = ReviewAssignmentFactory(review_request=review_req, reviewer=rev_role.person.email_set.first(), state_id='accepted')
+ ReviewAssignmentFactory(review_request=review_req, reviewer=rev_role.person.email_set.first(), state_id='accepted')
# move the review request to a doubly-replaced document to
# check we can fish it out
@@ -160,7 +160,7 @@ class ReviewTests(TestCase):
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',name_id='reviewer')
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='assigned',requested_by=rev_role.person,deadline=datetime.datetime.now()+datetime.timedelta(days=20))
- assignment = ReviewAssignmentFactory(review_request = review_req, reviewer = rev_role.person.email_set.first(), state_id='accepted')
+ ReviewAssignmentFactory(review_request = review_req, reviewer = rev_role.person.email_set.first(), state_id='accepted')
url = urlreverse('ietf.doc.views_review.review_request', kwargs={ "name": doc.name, "request_id": review_req.pk })
@@ -403,7 +403,7 @@ class ReviewTests(TestCase):
self.assertEqual(review_req.reviewassignment_set.count(),1)
assignment = review_req.reviewassignment_set.first()
self.assertEqual(assignment.reviewer, reviewer)
- self.assertEqual(assignment.state_id, "requested")
+ self.assertEqual(assignment.state_id, "assigned")
self.assertEqual(len(outbox), 1)
self.assertTrue("assigned" in outbox[0].get_payload(decode=True).decode("utf-8"))
self.assertEqual(NextReviewerInTeam.objects.get(team=review_req.team).next_reviewer, rotation_list[1])
@@ -812,7 +812,6 @@ class ReviewTests(TestCase):
self.assertTrue(any( len(line) > 80 for line in body.splitlines() ))
first_review = assignment.review
- first_reviewer = assignment.reviewer
# complete
assignment = assignment.review_request.reviewassignment_set.create(state_id="requested", reviewer=assignment.reviewer)
@@ -902,7 +901,7 @@ class ReviewTests(TestCase):
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='assigned',requested_by=rev_role.person,deadline=datetime.datetime.now()+datetime.timedelta(days=20))
- assignment = ReviewAssignmentFactory(review_request = review_req, reviewer = rev_role.person.email_set.first(), state_id='accepted')
+ ReviewAssignmentFactory(review_request = review_req, reviewer = rev_role.person.email_set.first(), state_id='accepted')
url = urlreverse('ietf.doc.views_review.edit_comment', kwargs={ "name": doc.name, "request_id": review_req.pk })
@@ -924,7 +923,7 @@ class ReviewTests(TestCase):
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,deadline=datetime.datetime.now()+datetime.timedelta(days=20))
- assignment = ReviewAssignmentFactory(review_request = review_req, reviewer = rev_role.person.email_set.first(), state_id='accepted')
+ ReviewAssignmentFactory(review_request = review_req, reviewer = rev_role.person.email_set.first(), state_id='accepted')
url = urlreverse('ietf.doc.views_review.edit_deadline', kwargs={ "name": doc.name, "request_id": review_req.pk })
diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py
index d01e20bd1..e9597a506 100644
--- a/ietf/doc/views_doc.py
+++ b/ietf/doc/views_doc.py
@@ -64,8 +64,8 @@ from ietf.doc.mails import email_comment
from ietf.mailtrigger.utils import gather_relevant_expansions
from ietf.meeting.models import Session
from ietf.meeting.utils import group_sessions, get_upcoming_manageable_sessions, sort_sessions
-from ietf.review.models import ReviewRequest, ReviewAssignment
-from ietf.review.utils import can_request_review_of_doc, review_requests_to_list_for_docs, review_assignments_to_list_for_docs
+from ietf.review.models import ReviewAssignment
+from ietf.review.utils import can_request_review_of_doc, review_assignments_to_list_for_docs
from ietf.review.utils import no_review_from_teams_on_doc
from ietf.utils import markup_txt, log
from ietf.utils.text import maybe_split
diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py
index 9f9f9f3a4..706afe5d5 100644
--- a/ietf/doc/views_review.py
+++ b/ietf/doc/views_review.py
@@ -31,7 +31,7 @@ from ietf.person.fields import PersonEmailChoiceField, SearchablePersonField
from ietf.review.utils import (active_review_teams, assign_review_request_to_reviewer,
can_request_review_of_doc, can_manage_review_requests_for_team,
email_review_assignment_change, email_review_request_change,
- make_new_review_request_from_existing, close_review_request_states,
+ close_review_request_states,
close_review_request, setup_reviewer_field)
from ietf.review import mailarch
from ietf.utils.fields import DatepickerDateField
@@ -201,13 +201,13 @@ def review_request(request, name, request_id):
for assignment in assignments:
assignment.is_reviewer = user_is_person(request.user, assignment.reviewer.person)
- assignment.can_accept_reviewer_assignment = (assignment.state_id == "requested"
+ assignment.can_accept_reviewer_assignment = (assignment.state_id == "assigned"
and (assignment.is_reviewer or can_manage_request))
- assignment.can_reject_reviewer_assignment = (assignment.state_id in ["requested", "accepted"]
+ assignment.can_reject_reviewer_assignment = (assignment.state_id in ["assigned", "accepted"]
and (assignment.is_reviewer or can_manage_request))
- assignment.can_complete_review = (assignment.state_id in ["requested", "accepted", "overtaken", "no-response", "part-completed", "completed"]
+ assignment.can_complete_review = (assignment.state_id in ["assigned", "accepted", "overtaken", "no-response", "part-completed", "completed"]
and (assignment.is_reviewer or can_manage_request))
# This implementation means if a reviewer accepts one assignment for a review_request, he accepts all assigned to him (for that request)
diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py
index 7bc6c86ac..564d11d83 100644
--- a/ietf/group/tests_review.py
+++ b/ietf/group/tests_review.py
@@ -9,15 +9,15 @@ from ietf.utils.test_utils import login_testing_unauthorized, TestCase, uniconte
from ietf.doc.models import TelechatDocEvent
from ietf.group.models import Role
from ietf.iesg.models import TelechatDate
-from ietf.person.models import Email, Person
-from ietf.review.models import ReviewRequest, ReviewerSettings, UnavailablePeriod, ReviewSecretarySettings
+from ietf.person.models import Person
+from ietf.review.models import ReviewerSettings, UnavailablePeriod, ReviewSecretarySettings
from ietf.review.utils import (
suggested_review_requests_for_team,
review_assignments_needing_reviewer_reminder, email_reviewer_reminder,
review_assignments_needing_secretary_reminder, email_secretary_reminder,
reviewer_rotation_list,
)
-from ietf.name.models import ReviewTypeName, ReviewResultName, ReviewRequestStateName, ReviewAssignmentStateName
+from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewAssignmentStateName
import ietf.group.views
from ietf.utils.mail import outbox, empty_outbox
from ietf.dbtemplate.factories import DBTemplateFactory
@@ -173,13 +173,12 @@ class ReviewTests(TestCase):
def test_manage_review_requests(self):
group = ReviewTeamFactory()
- reviewer = RoleFactory(name_id='reviewer',group=group,person__user__username='reviewer').person
+ RoleFactory(name_id='reviewer',group=group,person__user__username='reviewer').person
marsperson = RoleFactory(name_id='reviewer',group=group,person=PersonFactory(name=u"Mars Anders Chairman",user__username='marschairman')).person
review_req1 = ReviewRequestFactory(doc__pages=2,doc__shepherd=marsperson.email(),team=group)
review_req2 = ReviewRequestFactory(team=group)
review_req3 = ReviewRequestFactory(team=group)
RoleFactory(name_id='chair',group=review_req1.doc.group,person=marsperson)
- doc = review_req1.doc
unassigned_url = urlreverse(ietf.group.views.manage_review_requests, kwargs={ 'acronym': group.acronym, 'group_type': group.type_id, "assignment_status": "unassigned" })
login_testing_unauthorized(self, "secretary", unassigned_url)
diff --git a/ietf/iesg/agenda.py b/ietf/iesg/agenda.py
index f161ed3c0..46a22adf3 100644
--- a/ietf/iesg/agenda.py
+++ b/ietf/iesg/agenda.py
@@ -12,7 +12,7 @@ import debug # pyflakes:ignore
from ietf.doc.models import Document, LastCallDocEvent, ConsensusDocEvent
from ietf.doc.utils_search import fill_in_telechat_date
from ietf.iesg.models import TelechatDate, TelechatAgendaItem
-from ietf.review.utils import review_requests_to_list_for_docs
+from ietf.review.utils import review_assignments_to_list_for_docs
def get_agenda_date(date=None):
if not date:
diff --git a/ietf/ietfauth/tests.py b/ietf/ietfauth/tests.py
index fbc5831ee..e1ff2ed50 100644
--- a/ietf/ietfauth/tests.py
+++ b/ietf/ietfauth/tests.py
@@ -22,7 +22,7 @@ from ietf.ietfauth.htpasswd import update_htpasswd_file
from ietf.mailinglists.models import Subscribed
from ietf.person.models import Person, Email, PersonalApiKey, PERSON_API_KEY_ENDPOINTS
from ietf.person.factories import PersonFactory, EmailFactory
-from ietf.review.factories import ReviewRequestFactory
+from ietf.review.factories import ReviewRequestFactory, ReviewAssignmentFactory
from ietf.review.models import ReviewWish, UnavailablePeriod
from ietf.utils.decorators import skip_coverage
@@ -358,11 +358,12 @@ class IetfAuthTests(TestCase):
self.assertTrue(self.username_in_htpasswd_file(user.username))
def test_review_overview(self):
- review_req = ReviewRequestFactory(reviewer=EmailFactory(person__user__username='reviewer'))
- RoleFactory(name_id='reviewer',group=review_req.team,person=review_req.reviewer.person)
+ review_req = ReviewRequestFactory()
+ assignment = ReviewAssignmentFactory(review_request=review_req,reviewer=EmailFactory(person__user__username='reviewer'))
+ RoleFactory(name_id='reviewer',group=review_req.team,person=assignment.reviewer.person)
doc = review_req.doc
- reviewer = review_req.reviewer.person
+ reviewer = assignment.reviewer.person
UnavailablePeriod.objects.create(
team=review_req.team,
diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py
index e92b6e438..9a7748396 100644
--- a/ietf/ietfauth/views.py
+++ b/ietf/ietfauth/views.py
@@ -65,7 +65,7 @@ from ietf.ietfauth.htpasswd import update_htpasswd_file
from ietf.ietfauth.utils import role_required
from ietf.mailinglists.models import Subscribed, Whitelisted
from ietf.person.models import Person, Email, Alias, PersonalApiKey
-from ietf.review.models import ReviewRequest, ReviewerSettings, ReviewWish
+from ietf.review.models import ReviewerSettings, ReviewWish, ReviewAssignment
from ietf.review.utils import unavailable_periods_to_list, get_default_filter_re
from ietf.doc.fields import SearchableDocumentField
from ietf.utils.decorators import person_required
@@ -433,18 +433,18 @@ class AddReviewWishForm(forms.Form):
@login_required
def review_overview(request):
- open_review_requests = ReviewRequest.objects.filter(
+ open_review_assignments = ReviewAssignment.objects.filter(
reviewer__person__user=request.user,
- state__in=["requested", "accepted"],
+ state__in=["assigned", "accepted"],
)
today = Date.today()
- for r in open_review_requests:
- r.due = max(0, (today - r.deadline).days)
+ for r in open_review_assignments:
+ r.due = max(0, (today - r.review_request.deadline).days)
- closed_review_requests = ReviewRequest.objects.filter(
+ closed_review_assignments = ReviewAssignment.objects.filter(
reviewer__person__user=request.user,
state__in=["no-response", "part-completed", "completed"],
- ).order_by("-time")[:20]
+ ).order_by("-review_request__time")[:20]
teams = Group.objects.filter(role__name="reviewer", role__person__user=request.user, state="active")
@@ -483,8 +483,8 @@ def review_overview(request):
review_wishes = ReviewWish.objects.filter(person__user=request.user).prefetch_related("team")
return render(request, 'ietfauth/review_overview.html', {
- 'open_review_requests': open_review_requests,
- 'closed_review_requests': closed_review_requests,
+ 'open_review_assignments': open_review_assignments,
+ 'closed_review_assignments': closed_review_assignments,
'teams': teams,
'review_wishes': review_wishes,
'review_wish_form': review_wish_form,
diff --git a/ietf/name/resources.py b/ietf/name/resources.py
index dca6b8d94..83f8d0b6f 100644
--- a/ietf/name/resources.py
+++ b/ietf/name/resources.py
@@ -429,6 +429,20 @@ class ReviewRequestStateNameResource(ModelResource):
}
api.name.register(ReviewRequestStateNameResource())
+class ReviewAssignmentStateNameResource(ModelResource):
+ class Meta:
+ cache = SimpleCache()
+ queryset = ReviewAssignmentStateName.objects.all()
+ #resource_name = 'reviewassignmentstatename'
+ filtering = {
+ "slug": ALL,
+ "name": ALL,
+ "desc": ALL,
+ "used": ALL,
+ "order": ALL,
+ }
+api.name.register(ReviewAssignmentStateNameResource())
+
class ReviewTypeNameResource(ModelResource):
class Meta:
cache = SimpleCache()
@@ -570,17 +584,3 @@ class AgendaTypeNameResource(ModelResource):
api.name.register(AgendaTypeNameResource())
-class ReviewAssignmentStateNameResource(ModelResource):
- class Meta:
- queryset = ReviewAssignmentStateName.objects.all()
- serializer = api.Serializer()
- cache = SimpleCache()
- #resource_name = 'reviewassignmentstatename'
- filtering = {
- "slug": ALL,
- "name": ALL,
- "desc": ALL,
- "used": ALL,
- "order": ALL,
- }
-api.name.register(ReviewAssignmentStateNameResource())
diff --git a/ietf/stats/tests.py b/ietf/stats/tests.py
index 69880ed10..8ad46ab49 100644
--- a/ietf/stats/tests.py
+++ b/ietf/stats/tests.py
@@ -18,7 +18,7 @@ from ietf.meeting.factories import MeetingFactory
from ietf.person.factories import PersonFactory
from ietf.person.models import Person, Email
from ietf.name.models import FormalLanguageName, DocRelationshipName, CountryName
-from ietf.review.factories import ReviewRequestFactory, ReviewerSettingsFactory
+from ietf.review.factories import ReviewRequestFactory, ReviewerSettingsFactory, ReviewAssignmentFactory
from ietf.stats.models import MeetingRegistration, CountryAlias
from ietf.stats.utils import get_meeting_registration_data
@@ -157,7 +157,8 @@ class StatisticsTests(TestCase):
def test_review_stats(self):
reviewer = PersonFactory()
- review_req = ReviewRequestFactory(reviewer=reviewer.email_set.first())
+ review_req = ReviewRequestFactory()
+ ReviewAssignmentFactory(review_request=review_req, reviewer=reviewer.email_set.first())
RoleFactory(group=review_req.team,name_id='reviewer',person=reviewer)
ReviewerSettingsFactory(team=review_req.team, person=reviewer)
PersonFactory(user__username='plain')
diff --git a/ietf/templates/ietfauth/review_overview.html b/ietf/templates/ietfauth/review_overview.html
index 1451f5458..e79259a5b 100644
--- a/ietf/templates/ietfauth/review_overview.html
+++ b/ietf/templates/ietfauth/review_overview.html
@@ -17,7 +17,7 @@
Assigned reviews
- {% if open_review_requests %}
+ {% if open_review_assignments %}
@@ -30,15 +30,15 @@
- {% for r in open_review_requests %}
+ {% for r in open_review_assignments %}
- {{ r.doc.name }} |
- {% if r.requested_rev %}{{ r.requested_rev }}{% else %}Current{% endif %} |
- {{r.doc.rev}} |
- {{ r.team.acronym }} |
- {{ r.type.name }} |
+ {{ r.review_request.doc.name }} |
+ {% if r.review_request.requested_rev %}{{ r.review_request.requested_rev }}{% else %}Current{% endif %} |
+ {{r.review_request.doc.rev}} |
+ {{ r.review_request.team.acronym }} |
+ {{ r.review_request.type.name }} |
- {{ r.deadline|date:"Y-m-d" }}
+ {{ r.review_request.deadline|date:"Y-m-d" }}
{% if r.due %}{{ r.due }} day{{ r.due|pluralize }}{% endif %}
|
@@ -50,9 +50,9 @@
{% endif %}
- Latest closed review requests
+ Latest closed review assignments
- {% if closed_review_requests %}
+ {% if closed_review_assignments %}
@@ -66,14 +66,14 @@
- {% for r in closed_review_requests %}
+ {% for r in closed_review_assignments %}
- {{ r.doc.name }} |
- {{r.reviewed_rev|default:"See review"}}{% if r.requested_rev %}{% if r.requested_rev != r.reviewed_rev %}({{ r.requested_rev }} requested){% endif %}{% endif %} |
- {{ r.team.acronym }} |
- {{ r.type.name }} |
+ {{ r.review_request.doc.name }} |
+ {{r.reviewed_rev|default:"See review"}}{% if r.review_request.requested_rev %}{% if r.review_request.requested_rev != r.reviewed_rev %}({{ r.review_request.requested_rev }} requested){% endif %}{% endif %} |
+ {{ r.review_request.team.acronym }} |
+ {{ r.review_request.type.name }} |
- {{ r.deadline|date:"Y-m-d" }}
+ {{ r.review_request.deadline|date:"Y-m-d" }}
{% if r.due %}{{ r.due }} day{{ r.due|pluralize }}{% endif %}
|
{{ r.state.name }} |