Skip to content

Commit 280080e

Browse files
committed
Ported defer/undefer ballot views and tests to new schema
- Legacy-Id: 2854
1 parent 6c096cb commit 280080e

7 files changed

Lines changed: 112 additions & 34 deletions

File tree

ietf/idrfc/mails.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def email_state_changed(request, doc, text):
2222

2323
def email_state_changedREDESIGN(request, doc, text):
2424
to = [x.strip() for x in doc.notify.replace(';', ',').split(',')]
25+
text = strip_tags(text)
2526
send_mail(request, to, None,
2627
"ID Tracker State Update Notice: %s" % doc.file_tag(),
2728
"idrfc/state_changed_email.txt",

ietf/idrfc/testsREDESIGN.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -655,53 +655,51 @@ def test_send_ballot_comment(self):
655655

656656

657657
class DeferBallotTestCase(django.test.TestCase):
658-
fixtures = ['base', 'draft', 'ballot']
658+
fixtures = ['names']
659659

660660
def test_defer_ballot(self):
661-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
661+
draft = make_test_data()
662+
draft.iesg_state_id = "iesg-eva"
663+
draft.save()
664+
662665
url = urlreverse('doc_defer_ballot', kwargs=dict(name=draft.name))
663-
login_testing_unauthorized(self, "rhousley", url)
666+
login_testing_unauthorized(self, "ad", url)
664667

665668
# normal get
666669
r = self.client.get(url)
667670
self.assertEquals(r.status_code, 200)
668671

669672
# defer
670-
self.assertTrue(not draft.idinternal.ballot.defer)
671673
mailbox_before = len(mail_outbox)
672674

673675
r = self.client.post(url, dict())
674676
self.assertEquals(r.status_code, 302)
675677

676-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
677-
self.assertTrue(draft.idinternal.ballot.defer)
678-
self.assertTrue(draft.idinternal.cur_state_id == IDState.IESG_EVALUATION_DEFER)
678+
draft = Document.objects.get(name=draft.name)
679+
self.assertEquals(draft.iesg_state_id, "defer")
679680

680681
self.assertEquals(len(mail_outbox), mailbox_before + 2)
681682
self.assertTrue("Deferred" in mail_outbox[-2]['Subject'])
682683
self.assertTrue(draft.file_tag() in mail_outbox[-2]['Subject'])
683684

684685
def test_undefer_ballot(self):
685-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
686+
draft = make_test_data()
687+
draft.iesg_state_id = "defer"
688+
draft.save()
689+
686690
url = urlreverse('doc_undefer_ballot', kwargs=dict(name=draft.name))
687-
login_testing_unauthorized(self, "rhousley", url)
691+
login_testing_unauthorized(self, "ad", url)
688692

689-
draft.idinternal.ballot.defer = True
690-
draft.idinternal.ballot.save()
691-
692693
# normal get
693694
r = self.client.get(url)
694695
self.assertEquals(r.status_code, 200)
695696

696697
# undefer
697-
self.assertTrue(draft.idinternal.ballot.defer)
698-
699698
r = self.client.post(url, dict())
700699
self.assertEquals(r.status_code, 302)
701700

702-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
703-
self.assertTrue(not draft.idinternal.ballot.defer)
704-
self.assertEquals(draft.idinternal.cur_state_id, IDState.IESG_EVALUATION)
701+
draft = Document.objects.get(name=draft.name)
702+
self.assertEquals(draft.iesg_state_id, "iesg-eva")
705703

706704
class BallotWriteupsTestCase(django.test.TestCase):
707705
fixtures = ['base', 'draft', 'ballot']
@@ -783,7 +781,7 @@ def test_edit_ballot_writeup(self):
783781
def test_issue_ballot(self):
784782
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
785783
url = urlreverse('doc_ballot_writeupnotes', kwargs=dict(name=draft.name))
786-
login_testing_unauthorized(self, "rhousley", url)
784+
login_testing_unauthorized(self, "ad", url)
787785

788786
draft.idinternal.ballot.ballot_issued = False
789787
draft.idinternal.ballot.save()

ietf/idrfc/utils.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from ietf.idtracker.models import InternetDraft, DocumentComment, BallotInfo, IESGLogin
44
from ietf.idrfc.mails import *
55

6+
from doc.models import Telechat, Event
7+
68
def add_document_comment(request, doc, text, include_by=True, ballot=None):
79
if request:
810
login = IESGLogin.objects.get(login_name=request.user.username)
@@ -59,6 +61,20 @@ def log_state_changed(request, doc, by, email_watch_list=True):
5961

6062
return change
6163

64+
def log_state_changedREDESIGN(request, doc, by, prev_iesg_state):
65+
e = Event(doc=doc, by=by)
66+
e.type = "changed_document"
67+
e.desc = u"State changed to <b>%s</b> from <b>%s</b> by %s" % (
68+
doc.iesg_state.name,
69+
prev_iesg_state.name if prev_iesg_state else "None",
70+
by.get_name())
71+
e.save()
72+
return e
73+
74+
75+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
76+
log_state_changed = log_state_changedREDESIGN
77+
6278

6379
def update_telechat(request, idinternal, new_telechat_date, new_returning_item=None):
6480
on_agenda = bool(new_telechat_date)
@@ -98,7 +114,6 @@ def update_telechat(request, idinternal, new_telechat_date, new_returning_item=N
98114
def update_telechatREDESIGN(request, doc, by, new_telechat_date, new_returning_item=None):
99115
on_agenda = bool(new_telechat_date)
100116

101-
from doc.models import Telechat
102117
prev = doc.latest_event(Telechat, type="scheduled_for_telechat")
103118
prev_returning = bool(prev and prev.returning_item)
104119
prev_telechat = prev.telechat_date if prev else None

ietf/idrfc/views_ballot.py

Lines changed: 73 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from ietf.idrfc.lastcall import request_last_call
2424

2525
from doc.models import Document, Event, BallotPosition, save_document_in_history
26-
from name.models import BallotPositionName
26+
from name.models import BallotPositionName, IesgDocStateName
2727

2828
BALLOT_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')
495532
def 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+
519589
class LastCallTextForm(forms.ModelForm):
520590
def clean_last_call_text(self):
521591
lines = self.cleaned_data["last_call_text"].split("\r\n")

ietf/idrfc/views_edit.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,21 +102,15 @@ def change_stateREDESIGN(request, name):
102102
if state != doc.iesg_state:
103103
save_document_in_history(doc)
104104

105-
prev_state = doc.iesg_state
105+
prev = doc.iesg_state
106106
doc.iesg_state = state
107-
108-
e = Event(doc=doc, by=login)
109-
e.type = "changed_document"
110-
e.desc = u"State changed to <b>%s</b> from <b>%s</b> by %s" % (
111-
doc.iesg_state.name,
112-
prev_state.name if prev_state else "None",
113-
login.get_name())
114-
e.save()
107+
108+
e = log_state_changed(request, doc, login, prev)
115109

116110
doc.time = e.time
117111
doc.save()
118112

119-
email_state_changed(request, doc, strip_tags(e.desc))
113+
email_state_changed(request, doc, e.desc)
120114
email_owner(request, doc, doc.ad, login, e.desc)
121115

122116
if doc.iesg_state_id == "lc-req":

ietf/templates/idrfc/defer_ballot.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1>Defer ballot for {{ doc }}</h1>
1111
<p>The ballot will then be on the IESG agenda of {{ telechat_date }}.</p>
1212

1313
<div class="actions">
14-
<a href="{{ doc.idinternal.get_absolute_url }}">Back</a>
14+
<a href="{{ back_url }}">Back</a>
1515
<input type="submit" value="Defer ballot"/>
1616
</div>
1717
</form>

ietf/templates/idrfc/undefer_ballot.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ <h1>Undefer ballot for {{ doc }}</h1>
99
<p>Undefer the ballot for {{ doc.file_tag }}?</p>
1010

1111
<div class="actions">
12-
<a href="{{ doc.idinternal.get_absolute_url }}">Back</a>
12+
<a href="{{ back_url }}">Back</a>
1313
<input type="submit" value="Undefer ballot"/>
1414
</div>
1515
</form>

0 commit comments

Comments
 (0)