55from __future__ import absolute_import , print_function , unicode_literals
66
77import io
8+ import itertools
89import json
910import os
1011import datetime
1112import requests
1213import email .utils
1314
1415from django .utils .http import is_safe_url
16+ from simple_history .utils import update_change_reason
1517
1618import debug # pyflakes:ignore
1719
@@ -135,12 +137,15 @@ def request_review(request, name):
135137 review_req .team = team
136138 review_req .save ()
137139
140+ descr = "Requested {} review by {}" .format (review_req .type .name ,
141+ review_req .team .acronym .upper ())
142+ update_change_reason (review_req , descr )
138143 ReviewRequestDocEvent .objects .create (
139144 type = "requested_review" ,
140145 doc = doc ,
141146 rev = doc .rev ,
142147 by = request .user .person ,
143- desc = "Requested {} review by {}" . format ( review_req . type . name , review_req . team . acronym . upper ()) ,
148+ desc = descr ,
144149 time = review_req .time ,
145150 review_request = review_req ,
146151 state = None ,
@@ -226,12 +231,17 @@ def review_request(request, name, request_id):
226231 if assignment .can_accept_reviewer_assignment :
227232 assignment .state = ReviewAssignmentStateName .objects .get (slug = "accepted" )
228233 assignment .save ()
234+ update_change_reason (assignment , 'Assignment for {} accepted' .format (assignment .reviewer .person ))
229235 return redirect (review_request , name = review_req .doc .name , request_id = review_req .pk )
230236
231237 wg_chairs = None
232238 if review_req .doc .group :
233239 wg_chairs = [role .person for role in review_req .doc .group .role_set .filter (name__slug = 'chair' )]
234240
241+ history = list (review_req .history .all ())
242+ history += itertools .chain (* [list (r .history .all ()) for r in review_req .reviewassignment_set .all ()])
243+ history .sort (key = lambda h : h .history_date , reverse = True )
244+
235245 return render (request , 'doc/review/review_request.html' , {
236246 'doc' : doc ,
237247 'review_req' : review_req ,
@@ -241,6 +251,7 @@ def review_request(request, name, request_id):
241251 'can_edit_deadline' : can_edit_deadline ,
242252 'assignments' : assignments ,
243253 'wg_chairs' : wg_chairs ,
254+ 'history' : history ,
244255 })
245256
246257
@@ -348,16 +359,18 @@ def reject_reviewer_assignment(request, name, assignment_id):
348359 review_assignment .state = ReviewAssignmentStateName .objects .get (slug = "rejected" )
349360 review_assignment .save ()
350361
362+ descr = "Assignment of request for {} review by {} to {} was rejected" .format (
363+ review_assignment .review_request .type .name ,
364+ review_assignment .review_request .team .acronym .upper (),
365+ review_assignment .reviewer .person
366+ )
367+ update_change_reason (review_assignment , descr )
351368 ReviewAssignmentDocEvent .objects .create (
352369 type = "closed_review_assignment" ,
353370 doc = review_assignment .review_request .doc ,
354371 rev = review_assignment .review_request .doc .rev ,
355372 by = request .user .person ,
356- desc = "Assignment of request for {} review by {} to {} was rejected" .format (
357- review_assignment .review_request .type .name ,
358- review_assignment .review_request .team .acronym .upper (),
359- review_assignment .reviewer .person ,
360- ),
373+ desc = descr ,
361374 review_assignment = review_assignment ,
362375 state = review_assignment .state ,
363376 )
@@ -393,17 +406,17 @@ def withdraw_reviewer_assignment(request, name, assignment_id):
393406 if request .method == "POST" and request .POST .get ("action" ) == "withdraw" :
394407 review_assignment .state_id = 'withdrawn'
395408 review_assignment .save ()
396-
409+ descr = "Assignment of request for {} review by {} to {} was withdrawn" .format (
410+ review_assignment .review_request .type .name ,
411+ review_assignment .review_request .team .acronym .upper (),
412+ review_assignment .reviewer .person , )
413+ update_change_reason (review_assignment , descr )
397414 ReviewAssignmentDocEvent .objects .create (
398415 type = "closed_review_assignment" ,
399416 doc = review_assignment .review_request .doc ,
400417 rev = review_assignment .review_request .doc .rev ,
401418 by = request .user .person ,
402- desc = "Assignment of request for {} review by {} to {} was withdrawn" .format (
403- review_assignment .review_request .type .name ,
404- review_assignment .review_request .team .acronym .upper (),
405- review_assignment .reviewer .person ,
406- ),
419+ desc = descr ,
407420 review_assignment = review_assignment ,
408421 state = review_assignment .state ,
409422 )
@@ -431,16 +444,17 @@ def mark_reviewer_assignment_no_response(request, name, assignment_id):
431444 review_assignment .state_id = 'no-response'
432445 review_assignment .save ()
433446
447+ descr = "Assignment of request for {} review by {} to {} was marked no-response" .format (
448+ review_assignment .review_request .type .name ,
449+ review_assignment .review_request .team .acronym .upper (),
450+ review_assignment .reviewer .person )
451+ update_change_reason (review_assignment , descr )
434452 ReviewAssignmentDocEvent .objects .create (
435453 type = "closed_review_assignment" ,
436454 doc = review_assignment .review_request .doc ,
437455 rev = review_assignment .review_request .doc .rev ,
438456 by = request .user .person ,
439- desc = "Assignment of request for {} review by {} to {} was marked no-response" .format (
440- review_assignment .review_request .type .name ,
441- review_assignment .review_request .team .acronym .upper (),
442- review_assignment .reviewer .person ,
443- ),
457+ desc = descr ,
444458 review_assignment = review_assignment ,
445459 state = review_assignment .state ,
446460 )
@@ -737,7 +751,7 @@ def complete_review(request, name, assignment_id=None, acronym=None):
737751 assignment .review = review
738752 assignment .completed_on = completion_datetime
739753 assignment .save ()
740-
754+
741755 need_to_email_review = review_submission != "link" and assignment .review_request .team .list_email and not revising_review
742756
743757 submitted_on_different_date = completion_datetime .date () != datetime .date .today ()
@@ -748,6 +762,7 @@ def complete_review(request, name, assignment_id=None, acronym=None):
748762 assignment .result .name ,
749763 assignment .reviewer .person ,
750764 )
765+ update_change_reason (assignment , desc )
751766 if need_to_email_review :
752767 desc += " " + "Sent review to list."
753768 if revising_review :
0 commit comments