2323from ietf .idrfc .lastcall import request_last_call
2424
2525from doc .models import Document , Event , BallotPosition , save_document_in_history
26- from name .models import BallotPositionName
26+ from name .models import BallotPositionName , IesgDocStateName
2727
2828BALLOT_CHOICES = (("yes" , "Yes" ),
2929 ("noobj" , "No Objection" ),
@@ -488,9 +488,46 @@ def defer_ballot(request, name):
488488
489489 return render_to_response ('idrfc/defer_ballot.html' ,
490490 dict (doc = doc ,
491- telechat_date = telechat_date ),
491+ telechat_date = telechat_date ,
492+ back_url = doc .idinternal .get_absolute_url ()),
492493 context_instance = RequestContext (request ))
493494
495+ @group_required ('Area_Director' ,'Secretariat' )
496+ def defer_ballotREDESIGN (request , name ):
497+ """Signal post-pone of Internet Draft ballot, notifying relevant parties."""
498+ doc = get_object_or_404 (Document , docalias__name = name )
499+ if not doc .iesg_state :
500+ raise Http404 ()
501+
502+ login = request .user .get_profile ().email ()
503+ telechat_date = TelechatDates .objects .all ()[0 ].date2
504+
505+ if request .method == 'POST' :
506+ save_document_in_history (doc )
507+
508+ prev = doc .iesg_state
509+ doc .iesg_state = IesgDocStateName .objects .get (slug = 'defer' )
510+ e = log_state_changed (request , doc , login , prev )
511+
512+ doc .time = e .time
513+ doc .save ()
514+
515+ email_state_changed (request , doc , e .desc )
516+
517+ update_telechat (request , doc , login , telechat_date )
518+ email_ballot_deferred (request , doc , login .get_name (), telechat_date )
519+
520+ return HttpResponseRedirect (doc .get_absolute_url ())
521+
522+ return render_to_response ('idrfc/defer_ballot.html' ,
523+ dict (doc = doc ,
524+ telechat_date = telechat_date ,
525+ back_url = doc .get_absolute_url ()),
526+ context_instance = RequestContext (request ))
527+
528+ if settings .USE_DB_REDESIGN_PROXY_CLASSES :
529+ defer_ballot = defer_ballotREDESIGN
530+
494531@group_required ('Area_Director' ,'Secretariat' )
495532def undefer_ballot (request , name ):
496533 """Delete deferral of Internet Draft ballot."""
@@ -513,9 +550,42 @@ def undefer_ballot(request, name):
513550 return HttpResponseRedirect (doc .idinternal .get_absolute_url ())
514551
515552 return render_to_response ('idrfc/undefer_ballot.html' ,
516- dict (doc = doc ),
553+ dict (doc = doc ,
554+ back_url = doc .idinternal .get_absolute_url ()),
517555 context_instance = RequestContext (request ))
518556
557+ @group_required ('Area_Director' ,'Secretariat' )
558+ def undefer_ballotREDESIGN (request , name ):
559+ """Delete deferral of Internet Draft ballot."""
560+ doc = get_object_or_404 (Document , docalias__name = name )
561+ if not doc .iesg_state :
562+ raise Http404 ()
563+
564+ login = request .user .get_profile ().email ()
565+
566+ if request .method == 'POST' :
567+ save_document_in_history (doc )
568+
569+ prev = doc .iesg_state
570+ doc .iesg_state = IesgDocStateName .objects .get (slug = 'iesg-eva' )
571+ e = log_state_changed (request , doc , login , prev )
572+
573+ doc .time = e .time
574+ doc .save ()
575+
576+ email_state_changed (request , doc , e .desc )
577+
578+ return HttpResponseRedirect (doc .get_absolute_url ())
579+
580+ return render_to_response ('idrfc/undefer_ballot.html' ,
581+ dict (doc = doc ,
582+ back_url = doc .get_absolute_url ()),
583+ context_instance = RequestContext (request ))
584+
585+ if settings .USE_DB_REDESIGN_PROXY_CLASSES :
586+ undefer_ballot = undefer_ballotREDESIGN
587+
588+
519589class LastCallTextForm (forms .ModelForm ):
520590 def clean_last_call_text (self ):
521591 lines = self .cleaned_data ["last_call_text" ].split ("\r \n " )
0 commit comments