Skip to content

Commit 98296cd

Browse files
committed
Port resurrect and add comment views and tests to new schema
- Legacy-Id: 2832
1 parent 0de6066 commit 98296cd

6 files changed

Lines changed: 175 additions & 57 deletions

File tree

ietf/idrfc/mails.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,19 @@ def email_resurrect_requested(request, doc, by):
364364
by=frm,
365365
url=settings.IDTRACKER_BASE_URL + doc.idinternal.get_absolute_url()))
366366

367+
def email_resurrect_requestedREDESIGN(request, doc, by):
368+
to = "I-D Administrator <internet-drafts@ietf.org>"
369+
frm = by.formatted_email()
370+
send_mail(request, to, frm,
371+
"I-D Resurrection Request",
372+
"idrfc/resurrect_request_email.txt",
373+
dict(doc=doc,
374+
by=frm,
375+
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
376+
377+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
378+
email_resurrect_requested = email_resurrect_requestedREDESIGN
379+
367380
def email_resurrection_completed(request, doc):
368381
to = u"%s <%s>" % doc.idinternal.resurrect_requested_by.person.email()
369382
frm = "I-D Administrator <internet-drafts-reply@ietf.org>"
@@ -374,6 +387,19 @@ def email_resurrection_completed(request, doc):
374387
by=frm,
375388
url=settings.IDTRACKER_BASE_URL + doc.idinternal.get_absolute_url()))
376389

390+
def email_resurrection_completedREDESIGN(request, doc, requester):
391+
to = requester.formatted_email()
392+
frm = "I-D Administrator <internet-drafts-reply@ietf.org>"
393+
send_mail(request, to, frm,
394+
"I-D Resurrection Completed - %s" % doc.file_tag(),
395+
"idrfc/resurrect_completed_email.txt",
396+
dict(doc=doc,
397+
by=frm,
398+
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
399+
400+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
401+
email_resurrection_completed = email_resurrection_completedREDESIGN
402+
377403
def email_ballot_deferred(request, doc, by, telechat_date):
378404
to = "iesg@ietf.org"
379405
frm = "DraftTracker Mail System <iesg-secretary@ietf.org>"

ietf/idrfc/testsREDESIGN.py

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ def test_edit_info(self):
324324
self.assertEquals(draft.ad, prev_ad)
325325

326326
# edit info
327-
events_before = draft.event_set.all().count()
327+
events_before = draft.event_set.count()
328328
mailbox_before = len(mail_outbox)
329329

330330
new_ad = Email.objects.get(address="ano@ietf.org")
@@ -443,14 +443,13 @@ class ResurrectTestCase(django.test.TestCase):
443443
fixtures = ['names']
444444

445445
def test_request_resurrect(self):
446-
draft = InternetDraft.objects.get(filename="draft-ietf-mip6-cn-ipsec")
447-
self.assertEquals(draft.status.status, "Expired")
448-
self.assertTrue(not draft.idinternal.resurrect_requested_by)
449-
450-
url = urlreverse('doc_request_resurrect', kwargs=dict(name=draft.filename))
451-
login_as = "rhousley"
446+
draft = make_test_data()
447+
draft.state_id = "expired"
448+
draft.save()
449+
450+
url = urlreverse('doc_request_resurrect', kwargs=dict(name=draft.name))
452451

453-
login_testing_unauthorized(self, login_as, url)
452+
login_testing_unauthorized(self, "ad", url)
454453

455454
# normal get
456455
r = self.client.get(url)
@@ -460,26 +459,30 @@ def test_request_resurrect(self):
460459

461460

462461
# request resurrect
463-
events_before = draft.idinternal.comments().count()
462+
events_before = draft.event_set.count()
464463
mailbox_before = len(mail_outbox)
465464

466465
r = self.client.post(url, dict())
467466
self.assertEquals(r.status_code, 302)
468467

469-
draft = InternetDraft.objects.get(filename="draft-ietf-mip6-cn-ipsec")
470-
self.assertEquals(draft.idinternal.resurrect_requested_by, IESGLogin.objects.get(login_name=login_as))
471-
self.assertEquals(draft.idinternal.comments().count(), events_before + 1)
472-
self.assertTrue("Resurrection" in draft.idinternal.comments()[0].comment_text)
468+
draft = Document.objects.get(name=draft.name)
469+
self.assertEquals(draft.event_set.count(), events_before + 1)
470+
e = draft.latest_event(type="requested_resurrect")
471+
self.assertTrue(e)
472+
self.assertEquals(e.by, Email.objects.get(address="aread@ietf.org"))
473+
self.assertTrue("Resurrection" in e.desc)
473474
self.assertEquals(len(mail_outbox), mailbox_before + 1)
474475
self.assertTrue("Resurrection" in mail_outbox[-1]['Subject'])
475476

476477
def test_resurrect(self):
477-
draft = InternetDraft.objects.get(filename="draft-ietf-mip6-cn-ipsec")
478-
self.assertEquals(draft.status.status, "Expired")
479-
draft.idinternal.resurrect_requested_by = IESGLogin.objects.get(login_name="rhousley")
480-
draft.idinternal.save()
481-
482-
url = urlreverse('doc_resurrect', kwargs=dict(name=draft.filename))
478+
draft = make_test_data()
479+
draft.state_id = "expired"
480+
draft.save()
481+
Event.objects.create(doc=draft,
482+
type="requested_resurrect",
483+
by=Email.objects.get(address="aread@ietf.org"))
484+
485+
url = urlreverse('doc_resurrect', kwargs=dict(name=draft.name))
483486

484487
login_testing_unauthorized(self, "secretary", url)
485488

@@ -490,25 +493,24 @@ def test_resurrect(self):
490493
self.assertEquals(len(q('form input[type=submit]')), 1)
491494

492495
# request resurrect
493-
events_before = draft.idinternal.comments().count()
496+
events_before = draft.event_set.count()
494497
mailbox_before = len(mail_outbox)
495498

496499
r = self.client.post(url, dict())
497500
self.assertEquals(r.status_code, 302)
498501

499-
draft = InternetDraft.objects.get(filename="draft-ietf-mip6-cn-ipsec")
500-
self.assertEquals(draft.idinternal.resurrect_requested_by, None)
501-
self.assertEquals(draft.idinternal.comments().count(), events_before + 1)
502-
self.assertTrue("completed" in draft.idinternal.comments()[0].comment_text)
503-
self.assertEquals(draft.status.status, "Active")
502+
draft = Document.objects.get(name=draft.name)
503+
self.assertEquals(draft.event_set.count(), events_before + 1)
504+
self.assertEquals(draft.latest_event().type, "completed_resurrect")
505+
self.assertEquals(draft.state_id, "active")
504506
self.assertEquals(len(mail_outbox), mailbox_before + 1)
505507

506508
class AddCommentTestCase(django.test.TestCase):
507509
fixtures = ['names']
508510

509511
def test_add_comment(self):
510-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
511-
url = urlreverse('doc_add_comment', kwargs=dict(name=draft.filename))
512+
draft = make_test_data()
513+
url = urlreverse('doc_add_comment', kwargs=dict(name=draft.name))
512514
login_testing_unauthorized(self, "secretary", url)
513515

514516
# normal get
@@ -518,17 +520,18 @@ def test_add_comment(self):
518520
self.assertEquals(len(q('form textarea[name=comment]')), 1)
519521

520522
# request resurrect
521-
events_before = draft.idinternal.comments().count()
523+
events_before = draft.event_set.count()
522524
mailbox_before = len(mail_outbox)
523525

524526
r = self.client.post(url, dict(comment="This is a test."))
525527
self.assertEquals(r.status_code, 302)
526528

527-
self.assertEquals(draft.idinternal.comments().count(), events_before + 1)
528-
self.assertTrue("This is a test." in draft.idinternal.comments()[0].comment_text)
529+
self.assertEquals(draft.event_set.count(), events_before + 1)
530+
self.assertEquals("This is a test.", draft.latest_event().desc)
531+
self.assertEquals("added_comment", draft.latest_event().type)
529532
self.assertEquals(len(mail_outbox), mailbox_before + 1)
530533
self.assertTrue("updated" in mail_outbox[-1]['Subject'])
531-
self.assertTrue(draft.filename in mail_outbox[-1]['Subject'])
534+
self.assertTrue(draft.name in mail_outbox[-1]['Subject'])
532535

533536
class EditPositionTestCase(django.test.TestCase):
534537
fixtures = ['base', 'draft', 'ballot']
@@ -546,7 +549,7 @@ def test_edit_position(self):
546549
self.assertEquals(len(q('form textarea[name=comment_text]')), 1)
547550

548551
# vote
549-
events_before = draft.idinternal.comments().count()
552+
events_before = draft.event_set.count()
550553
self.assertTrue(not Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley"))
551554

552555
r = self.client.post(url, dict(position="discuss",
@@ -560,29 +563,29 @@ def test_edit_position(self):
560563
self.assertTrue(pos.discuss)
561564
self.assertTrue(not (pos.yes or pos.noobj or pos.abstain or pos.recuse))
562565

563-
self.assertEquals(draft.idinternal.comments().count(), events_before + 3)
566+
self.assertEquals(draft.event_set.count(), events_before + 3)
564567
self.assertTrue("New position" in draft.idinternal.comments()[2].comment_text)
565568

566569
# recast vote
567-
events_before = draft.idinternal.comments().count()
570+
events_before = draft.event_set.count()
568571
r = self.client.post(url, dict(position="noobj"))
569572
self.assertEquals(r.status_code, 302)
570573

571574
pos = Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley")[0]
572575
self.assertTrue(pos.noobj)
573576
self.assertTrue(not (pos.yes or pos.abstain or pos.recuse))
574577
self.assertTrue(pos.discuss == -1)
575-
self.assertEquals(draft.idinternal.comments().count(), events_before + 1)
578+
self.assertEquals(draft.event_set.count(), events_before + 1)
576579
self.assertTrue("Position" in draft.idinternal.comments()[0].comment_text)
577580

578581
# clear vote
579-
events_before = draft.idinternal.comments().count()
582+
events_before = draft.event_set.count()
580583
r = self.client.post(url, dict(position=""))
581584
self.assertEquals(r.status_code, 302)
582585

583586
pos = Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley")
584587
self.assertEquals(len(pos), 0)
585-
self.assertEquals(draft.idinternal.comments().count(), events_before + 1)
588+
self.assertEquals(draft.event_set.count(), events_before + 1)
586589
self.assertTrue("Position" in draft.idinternal.comments()[0].comment_text)
587590
def test_edit_position_as_secretary(self):
588591
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
@@ -597,7 +600,7 @@ def test_edit_position_as_secretary(self):
597600
self.assertTrue(len(q('form input[name=position]')) > 0)
598601

599602
# vote for rhousley
600-
events_before = draft.idinternal.comments().count()
603+
events_before = draft.event_set.count()
601604
self.assertTrue(not Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley"))
602605

603606
r = self.client.post(url, dict(position="discuss"))
@@ -1092,13 +1095,13 @@ def test_expire_last_call(self):
10921095
self.assertEquals(len(drafts), 1)
10931096

10941097
mailbox_before = len(mail_outbox)
1095-
events_before = draft.idinternal.comments().count()
1098+
events_before = draft.event_set.count()
10961099

10971100
expire_last_call(drafts[0])
10981101

10991102
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
11001103
self.assertEquals(draft.idinternal.cur_state.document_state_id, IDState.WAITING_FOR_WRITEUP)
1101-
self.assertEquals(draft.idinternal.comments().count(), events_before + 1)
1104+
self.assertEquals(draft.event_set.count(), events_before + 1)
11021105
self.assertEquals(len(mail_outbox), mailbox_before + 1)
11031106
self.assertTrue("Last Call Expired" in mail_outbox[-1]["Subject"])
11041107

0 commit comments

Comments
 (0)