From 150106619b9c0c1d1e5f4d6093e1febfd14e0df2 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 27 Aug 2015 21:27:10 +0000 Subject: [PATCH] Handle the new-work message - Legacy-Id: 10066 --- ietf/doc/tests_charter.py | 125 +++++++++++++----- ietf/doc/urls_charter.py | 3 +- ietf/doc/utils_charter.py | 58 +++++--- ietf/doc/views_charter.py | 121 ++++++++++++++--- ietf/doc/views_doc.py | 4 +- .../migrations/0002_auto_20150809_1314.py | 22 ++- ietf/name/fixtures/names.json | 19 +++ ...ext.html => action_announcement_text.html} | 8 +- ietf/templates/doc/charter/approve.html | 2 +- .../doc/charter/review_announcement_text.html | 34 +++++ 10 files changed, 305 insertions(+), 91 deletions(-) rename ietf/templates/doc/charter/{announcement_text.html => action_announcement_text.html} (65%) create mode 100644 ietf/templates/doc/charter/review_announcement_text.html diff --git a/ietf/doc/tests_charter.py b/ietf/doc/tests_charter.py index cfc1dc28c..2ea147f36 100644 --- a/ietf/doc/tests_charter.py +++ b/ietf/doc/tests_charter.py @@ -9,7 +9,7 @@ from django.core.urlresolvers import reverse as urlreverse from ietf.doc.models import ( Document, State, BallotDocEvent, BallotType, NewRevisionDocEvent, TelechatDocEvent, WriteupDocEvent ) -from ietf.doc.utils_charter import next_revision, default_review_text, default_action_text +from ietf.doc.utils_charter import next_revision, default_review_text, default_action_text from ietf.group.models import Group, GroupMilestone from ietf.iesg.models import TelechatDate from ietf.person.models import Person @@ -273,46 +273,101 @@ class EditCharterTests(TestCase): self.assertEqual(f.read(), "Windows line\nMac line\nUnix line\n" + utf_8_snippet) - def test_edit_announcement_text(self): + def test_edit_review_announcement_text(self): draft = make_test_data() charter = draft.group.charter - for ann in ("action", "review"): - url = urlreverse('ietf.doc.views_charter.announcement_text', kwargs=dict(name=charter.name, ann=ann)) - self.client.logout() - login_testing_unauthorized(self, "secretary", url) + url = urlreverse('ietf.doc.views_charter.review_announcement_text', kwargs=dict(name=charter.name)) + self.client.logout() + login_testing_unauthorized(self, "secretary", url) - # normal get - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertEqual(len(q('textarea[name=announcement_text]')), 1) - # as Secretariat, we can send - if ann == "review": - mailbox_before = len(outbox) - by = Person.objects.get(user__username="secretary") - r = self.client.post(url, dict( - announcement_text=default_review_text(draft.group, charter, by).text, - send_text="1")) - self.assertEqual(len(outbox), mailbox_before + 1) - self.assertTrue('WG Review' in outbox[-1]['Subject']) - self.assertTrue('ietf-announce@' in outbox[-1]['To']) - self.assertTrue('mars-wg@' in outbox[-1]['Cc']) + # normal get + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q('textarea[name=announcement_text]')), 1) + self.assertEqual(len(q('textarea[name=new_work_text]')), 1) - # save - r = self.client.post(url, dict( - announcement_text="This is a simple test.", - save_text="1")) - self.assertEqual(r.status_code, 302) - self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_%s_announcement" % ann).text) + by = Person.objects.get(user__username="secretary") - # test regenerate - r = self.client.post(url, dict( - announcement_text="This is a simple test.", - regenerate_text="1")) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertTrue(draft.group.name in charter.latest_event(WriteupDocEvent, type="changed_%s_announcement" % ann).text) + (e1, e2) = default_review_text(draft.group, charter, by) + announcement_text = e1.text + new_work_text = e2.text + + empty_outbox() + r = self.client.post(url, dict( + announcement_text=announcement_text, + new_work_text=new_work_text, + send_both="1")) + self.assertEqual(len(outbox), 2) + self.assertTrue(all(['WG Review' in m['Subject'] for m in outbox])) + self.assertTrue('ietf-announce@' in outbox[0]['To']) + self.assertTrue('mars-wg@' in outbox[0]['Cc']) + self.assertTrue('new-work@' in outbox[1]['To']) + + empty_outbox() + r = self.client.post(url, dict( + announcement_text=announcement_text, + new_work_text=new_work_text, + send_annc_only="1")) + self.assertEqual(len(outbox), 1) + self.assertTrue('ietf-announce@' in outbox[0]['To']) + + empty_outbox() + r = self.client.post(url, dict( + announcement_text=announcement_text, + new_work_text=new_work_text, + send_nw_only="1")) + self.assertEqual(len(outbox), 1) + self.assertTrue('new-work@' in outbox[0]['To']) + + # save + r = self.client.post(url, dict( + announcement_text="This is a simple test.", + new_work_text="New work gets something different.", + save_text="1")) + self.assertEqual(r.status_code, 302) + self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_review_announcement").text) + self.assertTrue("New work gets something different." in charter.latest_event(WriteupDocEvent, type="changed_new_work_text").text) + + # test regenerate + r = self.client.post(url, dict( + announcement_text="This is a simple test.", + new_work_text="Too simple perhaps?", + regenerate_text="1")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(draft.group.name in charter.latest_event(WriteupDocEvent, type="changed_review_announcement").text) + self.assertTrue(draft.group.name in charter.latest_event(WriteupDocEvent, type="changed_new_work_text").text) + + def test_edit_action_announcement_text(self): + draft = make_test_data() + charter = draft.group.charter + + url = urlreverse('ietf.doc.views_charter.action_announcement_text', kwargs=dict(name=charter.name)) + self.client.logout() + login_testing_unauthorized(self, "secretary", url) + + # normal get + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q('textarea[name=announcement_text]')), 1) + + # save + r = self.client.post(url, dict( + announcement_text="This is a simple test.", + save_text="1")) + self.assertEqual(r.status_code, 302) + self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_action_announcement").text) + + # test regenerate + r = self.client.post(url, dict( + announcement_text="This is a simple test.", + regenerate_text="1")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(draft.group.name in charter.latest_event(WriteupDocEvent, type="changed_action_announcement").text) def test_edit_ballot_writeupnotes(self): draft = make_test_data() diff --git a/ietf/doc/urls_charter.py b/ietf/doc/urls_charter.py index 9384e5cbc..5bc52770f 100644 --- a/ietf/doc/urls_charter.py +++ b/ietf/doc/urls_charter.py @@ -9,7 +9,8 @@ urlpatterns = patterns('', url(r'^telechat/$', "ietf.doc.views_doc.telechat_date", name='charter_telechat_date'), url(r'^notify/$', "ietf.doc.views_doc.edit_notify", name='charter_edit_notify'), url(r'^ad/$', "ietf.doc.views_charter.edit_ad", name='charter_edit_ad'), - url(r'^(?Paction|review)/$', "ietf.doc.views_charter.announcement_text", name="charter_edit_announcement"), + url(r'^action/$', "ietf.doc.views_charter.action_announcement_text"), + url(r'^review/$', "ietf.doc.views_charter.review_announcement_text"), url(r'^ballotwriteupnotes/$', "ietf.doc.views_charter.ballot_writeupnotes"), url(r'^approve/$', "ietf.doc.views_charter.approve", name='charter_approve'), url(r'^submit/(?:(?P