99from django .template .loader import render_to_string
1010from django .core .urlresolvers import reverse as urlreverse
1111
12- from ietf .doc .models import Document , NewRevisionDocEvent , DocEvent , State , DocAlias , LastCallDocEvent
12+ from ietf .doc .models import (Document , NewRevisionDocEvent , State , DocAlias ,
13+ LastCallDocEvent , ReviewRequestDocEvent )
1314from ietf .name .models import ReviewRequestStateName , ReviewResultName , DocTypeName
1415from ietf .review .models import ReviewRequest
1516from ietf .group .models import Group
@@ -103,12 +104,14 @@ def request_review(request, name):
103104 review_req .team = team
104105 review_req .save ()
105106
106- DocEvent .objects .create (
107+ ReviewRequestDocEvent .objects .create (
107108 type = "requested_review" ,
108109 doc = doc ,
109110 by = request .user .person ,
110111 desc = "Requested {} review by {}" .format (review_req .type .name , review_req .team .acronym .upper ()),
111112 time = review_req .time ,
113+ review_request = review_req ,
114+ state = None ,
112115 )
113116
114117 return redirect ('doc_view' , name = doc .name )
@@ -272,22 +275,24 @@ def reject_reviewer_assignment(request, name, request_id):
272275 review_req .state = ReviewRequestStateName .objects .get (slug = "rejected" )
273276 review_req .save ()
274277
275- DocEvent .objects .create (
276- type = "changed_review_request " ,
278+ ReviewRequestDocEvent .objects .create (
279+ type = "closed_review_request " ,
277280 doc = review_req .doc ,
278281 by = request .user .person ,
279282 desc = "Assignment of request for {} review by {} to {} was rejected" .format (
280283 review_req .type .name ,
281284 review_req .team .acronym .upper (),
282285 review_req .reviewer .person ,
283286 ),
287+ review_request = review_req ,
288+ state = review_req .state ,
284289 )
285290
286291 # make a new unassigned review request
287292 new_review_req = make_new_review_request_from_existing (review_req )
288293 new_review_req .save ()
289294
290- msg = render_to_string ("doc/mail /reviewer_assignment_rejected.txt" , {
295+ msg = render_to_string ("review /reviewer_assignment_rejected.txt" , {
291296 "by" : request .user .person ,
292297 "message_to_secretary" : form .cleaned_data .get ("message_to_secretary" )
293298 })
@@ -393,7 +398,7 @@ def complete_review(request, name, request_id):
393398 strip_prefix (review_req .doc .name , "draft-" ),
394399 form .cleaned_data ["reviewed_rev" ],
395400 review_req .team .acronym ,
396- review_req .type .slug if review_req . type . slug != "unknown" else "" ,
401+ review_req .type .slug ,
397402 review_req .reviewer .person .ascii_parts ()[3 ],
398403 datetime .date .today ().isoformat (),
399404 ]
@@ -403,8 +408,16 @@ def complete_review(request, name, request_id):
403408 name = "-" .join (c for c in name_components if c ).lower ()
404409 if not Document .objects .filter (name = name ).exists ():
405410 review = Document .objects .create (name = name )
411+ DocAlias .objects .create (document = review , name = review .name )
406412 break
407413
414+ review .type = DocTypeName .objects .get (slug = "review" )
415+ review .rev = "00"
416+ review .title = "{} Review of {}-{}" .format (review_req .type .name , review_req .doc .name , form .cleaned_data ["reviewed_rev" ])
417+ review .group = review_req .team
418+ if review_submission == "link" :
419+ review .external_url = form .cleaned_data ['review_url' ]
420+
408421 e = NewRevisionDocEvent .objects .create (
409422 type = "new_revision" ,
410423 doc = review ,
@@ -414,15 +427,9 @@ def complete_review(request, name, request_id):
414427 time = review .time ,
415428 )
416429
417- review .type = DocTypeName .objects .get (slug = "review" )
418- review .rev = "00"
419- review .title = "{} Review of {}-{}" .format (review_req .type .name , review_req .doc .name , form .cleaned_data ["reviewed_rev" ])
420- review .group = review_req .team
421- if review_submission == "link" :
422- review .external_url = form .cleaned_data ['review_url' ]
423- review .save_with_history ([e ])
424430 review .set_state (State .objects .get (type = "review" , slug = "active" ))
425- DocAlias .objects .create (document = review , name = review .name )
431+
432+ review .save_with_history ([e ])
426433
427434 # save file on disk
428435 if review_submission == "upload" :
@@ -441,17 +448,25 @@ def complete_review(request, name, request_id):
441448 review_req .review = review
442449 review_req .save ()
443450
444- DocEvent .objects .create (
445- type = "changed_review_request" ,
451+ need_to_email_review = review_submission != "link" and review_req .team .list_email
452+
453+ desc = "Request for {} review by {} {}: {}. Reviewer: {}." .format (
454+ review_req .type .name ,
455+ review_req .team .acronym .upper (),
456+ review_req .state .name ,
457+ review_req .result .name ,
458+ review_req .reviewer .person ,
459+ )
460+ if need_to_email_review :
461+ desc += " " + "Sent review to list."
462+
463+ close_event = ReviewRequestDocEvent .objects .create (
464+ type = "closed_review_request" ,
446465 doc = review_req .doc ,
447466 by = request .user .person ,
448- desc = "Request for {} review by {} {}: {}. Reviewer: {}" .format (
449- review_req .type .name ,
450- review_req .team .acronym .upper (),
451- review_req .state .name ,
452- review_req .result .name ,
453- review_req .reviewer ,
454- ),
467+ desc = desc ,
468+ review_request = review_req ,
469+ state = review_req .state ,
455470 )
456471
457472 if review_req .state_id == "part-completed" :
@@ -463,36 +478,29 @@ def complete_review(request, name, request_id):
463478 url = urlreverse ("ietf.doc.views_review.review_request" , kwargs = { "name" : new_review_req .doc .name , "request_id" : new_review_req .pk })
464479 url = request .build_absolute_uri (url )
465480
466- msg = render_to_string ("doc/mail /partially_completed_review.txt" , {
481+ msg = render_to_string ("review /partially_completed_review.txt" , {
467482 'new_review_req_url' : url ,
468483 "by" : request .user .person ,
469484 "new_review_req" : new_review_req ,
470485 })
471486
472487 email_review_request_change (request , review_req , subject , msg , request .user .person , notify_secretary = True , notify_reviewer = False , notify_requested_by = False )
473488
474- if review_submission != "link" and review_req . team . list_email :
489+ if need_to_email_review :
475490 # email the review
476491 subject = "{} of {}-{}" .format ("Partial review" if review_req .state_id == "part-completed" else "Review" , review_req .doc .name , review_req .reviewed_rev )
477492 msg = send_mail (request , [(review_req .team .name , review_req .team .list_email )], None ,
478493 subject ,
479- "doc/mail /completed_review.txt" , {
494+ "review /completed_review.txt" , {
480495 "review_req" : review_req ,
481496 "content" : encoded_content .decode ("utf-8" ),
482497 },
483498 cc = form .cleaned_data ["cc" ])
484499
485- e = DocEvent .objects .create (
486- type = "changed_review_request" ,
487- doc = review_req .doc ,
488- by = request .user .person ,
489- desc = "Sent review to list." ,
490- )
491-
492500 list_name = mailarch .list_name_from_email (review_req .team .list_email )
493501 if list_name :
494502 review .external_url = mailarch .construct_message_url (list_name , email .utils .unquote (msg ["Message-ID" ]))
495- review .save_with_history ([e ])
503+ review .save_with_history ([close_event ])
496504
497505 return redirect ("doc_view" , name = review_req .review .name )
498506 else :
0 commit comments