@@ -49,17 +49,21 @@ def do_undefer_ballot(request, doc):
4949 telechat_date = TelechatDate .objects .active ().order_by ("date" )[0 ].date
5050 save_document_in_history (doc )
5151
52- prev_state = doc .friendly_state ()
52+ new_state = doc .get_state ()
53+ prev_tags = new_tags = []
54+
5355 if doc .type_id == 'draft' :
54- doc .set_state (State .objects .get (used = True , type = "draft-iesg" , slug = 'iesg-eva' ))
55- prev_tag = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
56- prev_tag = prev_tag [0 ] if prev_tag else None
57- if prev_tag :
58- doc .tags .remove (prev_tag )
56+ new_state = State .objects .get (used = True , type = "draft-iesg" , slug = 'iesg-eva' )
57+ prev_tags = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
5958 elif doc .type_id == 'conflrev' :
60- doc .set_state (State .objects .get (used = True , type = 'conflrev' ,slug = 'iesgeval' ))
59+ new_state = State .objects .get (used = True , type = 'conflrev' ,slug = 'iesgeval' )
60+
61+ prev_state = doc .get_state (new_state .type_id if new_state else None )
6162
62- e = log_state_changed (request , doc , login , doc .friendly_state (), prev_state )
63+ doc .set_state (new_state )
64+ doc .tags .remove (* prev_tags )
65+
66+ e = add_state_change_event (doc , login , prev_state , new_state , prev_tags = prev_tags , new_tags = new_tags )
6367
6468 doc .time = e .time
6569 doc .save ()
@@ -353,17 +357,21 @@ def defer_ballot(request, name):
353357 if request .method == 'POST' :
354358 save_document_in_history (doc )
355359
356- prev_state = doc .friendly_state ()
360+ new_state = doc .get_state ()
361+ prev_tags = new_tags = []
362+
357363 if doc .type_id == 'draft' :
358- doc .set_state (State .objects .get (used = True , type = "draft-iesg" , slug = 'defer' ))
359- prev_tag = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
360- prev_tag = prev_tag [0 ] if prev_tag else None
361- if prev_tag :
362- doc .tags .remove (prev_tag )
364+ new_state = State .objects .get (used = True , type = "draft-iesg" , slug = 'defer' )
365+ prev_tags = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
363366 elif doc .type_id == 'conflrev' :
364- doc .set_state (State .objects .get (used = True , type = 'conflrev' , slug = 'defer' ))
367+ new_state = State .objects .get (used = True , type = 'conflrev' , slug = 'defer' )
368+
369+ prev_state = doc .get_state (new_state .type_id if new_state else None )
370+
371+ doc .set_state (new_state )
372+ doc .tags .remove (* prev_tags )
365373
366- e = log_state_changed ( request , doc , login , doc . friendly_state (), prev_state )
374+ e = add_state_change_event ( doc , login , prev_state , new_state , prev_tags = prev_tags , new_tags = new_tags )
367375
368376 doc .time = e .time
369377 doc .save ()
@@ -445,16 +453,16 @@ def lastcalltext(request, name):
445453 if "send_last_call_request" in request .POST :
446454 save_document_in_history (doc )
447455
448- prev_state = doc .friendly_state ( )
449- doc . set_state ( State .objects .get (used = True , type = "draft-iesg" , slug = 'lc-req' ) )
456+ prev_state = doc .get_state ( "draft-iesg" )
457+ new_state = State .objects .get (used = True , type = "draft-iesg" , slug = 'lc-req' )
450458
451- prev_tag = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
452- prev_tag = prev_tag [0 ] if prev_tag else None
453- if prev_tag :
454- doc .tags .remove (prev_tag )
459+ prev_tags = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
460+
461+ doc .set_state (new_state )
462+ doc .tags .remove (* prev_tags )
463+
464+ e = add_state_change_event (doc , login , prev_state , new_state , prev_tags = prev_tags , new_tags = [])
455465
456- e = log_state_changed (request , doc , login , doc .friendly_state (), prev_state )
457-
458466 doc .time = e .time
459467 doc .save ()
460468
@@ -664,8 +672,9 @@ def approve_ballot(request, name):
664672 else :
665673 new_state = State .objects .get (used = True , type = "draft-iesg" , slug = "ann" )
666674
667- prev_friendly_state = doc .friendly_state ()
668675 prev_state = doc .get_state ("draft-iesg" )
676+ prev_tags = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
677+
669678 if new_state .slug == "ann" and new_state .slug != prev_state .slug and not request .REQUEST .get ("skiprfceditorpost" ):
670679 # start by notifying the RFC Editor
671680 import ietf .sync .rfceditor
@@ -677,18 +686,14 @@ def approve_ballot(request, name):
677686 error = error ),
678687 context_instance = RequestContext (request ))
679688
680- # fixup document
681- close_open_ballots (doc , login )
682-
683689 save_document_in_history (doc )
684690
685691 doc .set_state (new_state )
686-
687- prev_tag = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
688- prev_tag = prev_tag [0 ] if prev_tag else None
689- if prev_tag :
690- doc .tags .remove (prev_tag )
692+ doc .tags .remove (* prev_tags )
691693
694+ # fixup document
695+ close_open_ballots (doc , login )
696+
692697 e = DocEvent (doc = doc , by = login )
693698 if action == "do_not_publish" :
694699 e .type = "iesg_disapproved"
@@ -701,8 +706,8 @@ def approve_ballot(request, name):
701706
702707 change_description = e .desc + " and state has been changed to %s" % doc .get_state ("draft-iesg" ).name
703708
704- e = log_state_changed ( request , doc , login , doc . friendly_state (), prev_friendly_state )
705-
709+ e = add_state_change_event ( doc , login , prev_state , new_state , prev_tags = prev_tags , new_tags = [] )
710+
706711 doc .time = e .time
707712 doc .save ()
708713
@@ -766,26 +771,27 @@ def make_last_call(request, name):
766771
767772 save_document_in_history (doc )
768773
769- prev_state = doc .get_state ("draft-iesg" )
774+ new_state = doc .get_state ()
775+ prev_tags = new_tags = []
776+
770777 if doc .type .slug == 'draft' :
771- doc .set_state (State .objects .get (used = True , type = "draft-iesg" , slug = 'lc' ))
778+ new_state = State .objects .get (used = True , type = "draft-iesg" , slug = 'lc' )
779+ prev_tags = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
780+ elif doc .type .slug == 'statchg' :
781+ new_state = State .objects .get (used = True , type = "statchg" , slug = 'in-lc' )
772782
773- prev_tag = doc .tags .filter (slug__in = IESG_SUBSTATE_TAGS )
774- prev_tag = prev_tag [0 ] if prev_tag else None
775- if prev_tag :
776- doc .tags .remove (prev_tag )
783+ prev_state = doc .get_state (new_state .type_id )
777784
778- e = log_state_changed (request , doc , login , doc .friendly_state (), prev_state )
779- change_description = "Last call has been made for %s and state has been changed to %s" % (doc .name , doc .get_state ("draft-iesg" ).name )
785+ doc .set_state (new_state )
786+ doc .tags .remove (* prev_tags )
787+
788+ e = add_state_change_event (doc , login , prev_state , new_state , prev_tags = prev_tags , new_tags = new_tags )
780789
781- elif doc .type .slug == 'statchg' :
782- doc .set_state (State .objects .get (used = True , type = "statchg" , slug = 'in-lc' ))
783- e = log_state_changed (request , doc , login , doc .friendly_state (), prev_state )
784- change_description = "Last call has been made for %s and state has been changed to %s" % (doc .name , doc .friendly_state ())
785-
786790 doc .time = e .time
787791 doc .save ()
788792
793+ change_description = "Last call has been made for %s and state has been changed to %s" % (doc .name , new_state .name )
794+
789795 email_state_changed (request , doc , change_description )
790796 email_ad (request , doc , doc .ad , login , change_description )
791797
0 commit comments