Send email to AD when an IETF Last Call expires that contains downrefs. Fixes #2472
- Legacy-Id: 18276
This commit is contained in:
parent
249090f767
commit
e0ca07e65d
|
@ -9,7 +9,7 @@ from ietf.doc.models import IESG_SUBSTATE_TAGS
|
|||
from ietf.person.models import Person
|
||||
from ietf.doc.utils import add_state_change_event
|
||||
from ietf.doc.mails import generate_ballot_writeup, generate_approval_mail, generate_last_call_announcement
|
||||
from ietf.doc.mails import send_last_call_request, email_last_call_expired
|
||||
from ietf.doc.mails import send_last_call_request, email_last_call_expired, email_last_call_expired_with_downref
|
||||
|
||||
def request_last_call(request, doc):
|
||||
if not doc.latest_event(type="changed_ballot_writeup_text"):
|
||||
|
@ -65,3 +65,8 @@ def expire_last_call(doc):
|
|||
doc.save_with_history([e])
|
||||
|
||||
email_last_call_expired(doc)
|
||||
|
||||
if doc.type_id == 'draft':
|
||||
lc_text = doc.latest_event(LastCallDocEvent, type="sent_last_call").desc
|
||||
if "document makes the following downward references" in lc_text:
|
||||
email_last_call_expired_with_downref(doc, lc_text)
|
|
@ -504,6 +504,18 @@ def email_last_call_expired(doc):
|
|||
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()),
|
||||
cc = addrs.cc)
|
||||
|
||||
def email_last_call_expired_with_downref(doc, last_call_text):
|
||||
if doc.type_id != 'draft':
|
||||
return
|
||||
send_mail(None,
|
||||
(doc.ad.email().address, ),
|
||||
"DraftTracker Mail System <iesg-secretary@ietf.org>",
|
||||
"Review Downrefs From Expired Last Call: %s" % doc.file_tag(),
|
||||
"doc/mail/downrefs_notice.txt",
|
||||
dict(last_call_text=last_call_text,
|
||||
doc=doc,
|
||||
url=settings.IDTRACKER_BASE_URL + "/downref/add/"))
|
||||
|
||||
def email_intended_status_changed(request, doc, text):
|
||||
(to,cc) = gather_address_lists('doc_intended_status_changed',doc=doc)
|
||||
|
||||
|
|
|
@ -794,6 +794,31 @@ class ExpireLastCallTests(TestCase):
|
|||
self.assertTrue('aread@' in outbox[-1]['To'])
|
||||
self.assertTrue('draft-ietf-mars-test@' in outbox[-1]['To'])
|
||||
|
||||
def test_expire_last_call_with_downref(self):
|
||||
from ietf.doc.lastcall import get_expired_last_calls, expire_last_call
|
||||
|
||||
secretary = Person.objects.get(name="Sec Retary")
|
||||
ad = Person.objects.get(user__username='ad')
|
||||
draft = WgDraftFactory(ad=ad,name='draft-ietf-mars-test')
|
||||
draft.set_state(State.objects.get(used=True, type="draft-iesg", slug="lc"))
|
||||
|
||||
e = LastCallDocEvent(doc=draft, rev=draft.rev, type="sent_last_call", by=secretary)
|
||||
e.text = "Last call sent"
|
||||
e.desc = "Blah, blah, blah.\n\nThis document makes the following downward references (downrefs):\n ** Downref: Normative reference to an Experimental RFC: RFC 4764"
|
||||
e.expires = datetime.datetime.now()
|
||||
e.save()
|
||||
|
||||
drafts = list(get_expired_last_calls())
|
||||
self.assertEqual(len(drafts), 1)
|
||||
|
||||
mailbox_before = len(outbox)
|
||||
expire_last_call(drafts[0])
|
||||
|
||||
d = Document.objects.get(name=draft.name)
|
||||
self.assertEqual(len(outbox), mailbox_before + 2)
|
||||
self.assertTrue("Review Downrefs From Expired Last Call" in outbox[-1]["Subject"])
|
||||
self.assertTrue(d.ad.email().address in outbox[-1]['To'])
|
||||
|
||||
class IndividualInfoFormsTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
|
15
ietf/templates/doc/mail/downrefs_notice.txt
Normal file
15
ietf/templates/doc/mail/downrefs_notice.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% autoescape off %}
|
||||
Please DO NOT reply to this email.
|
||||
|
||||
I-D: {{ doc.file_tag|safe }}
|
||||
|
||||
IETF Last Call recently ended for this Internet-Draft, and the Last Call
|
||||
included downward references (downrefs).
|
||||
|
||||
If the Last Call consensus is that these RFCs are to be added to the
|
||||
downref registry, then please do so by going to {{ url }}.
|
||||
|
||||
The Last Call announcement said...
|
||||
|
||||
{{ last_call_text }}
|
||||
{% endautoescape%}
|
Loading…
Reference in a new issue