diff --git a/ietf/doc/tests_status_change.py b/ietf/doc/tests_status_change.py
index 571d9ed1d..4064b5252 100644
--- a/ietf/doc/tests_status_change.py
+++ b/ietf/doc/tests_status_change.py
@@ -14,7 +14,7 @@ from textwrap import wrap
from django.conf import settings
from django.urls import reverse as urlreverse
-from ietf.doc.factories import DocumentFactory, IndividualRfcFactory, WgRfcFactory
+from ietf.doc.factories import DocumentFactory, IndividualRfcFactory, WgRfcFactory, DocEventFactory
from ietf.doc.models import ( Document, DocAlias, State, DocEvent,
BallotPositionDocEvent, NewRevisionDocEvent, TelechatDocEvent, WriteupDocEvent )
from ietf.doc.utils import create_ballot_if_not_open
@@ -86,6 +86,16 @@ class StatusChangeTests(TestCase):
status_change = Document.objects.get(name='status-change-imaginary-new2')
self.assertIsNone(status_change.ad)
+ # Verify that the right thing happens if a control along the way uppercases RFC
+ r = self.client.post(url,dict(
+ document_name="imaginary-new3",title="A new imaginary status change",
+ create_in_state=state_strpk,notify='ipu@ietf.org',new_relation_row_blah="RFC9999",
+ statchg_relation_row_blah="tois")
+ )
+ self.assertEqual(r.status_code, 302)
+ status_change = Document.objects.get(name='status-change-imaginary-new3')
+ self.assertTrue(status_change.relateddocument_set.filter(relationship__slug='tois',target__name='rfc9999'))
+
def test_change_state(self):
@@ -289,7 +299,19 @@ class StatusChangeTests(TestCase):
self.assertEqual(r.status_code,200)
self.assertContains(r, 'RFC9999 from Proposed Standard to Internet Standard')
self.assertContains(r, 'RFC9998 from Informational to Historic')
-
+ q = PyQuery(r.content)
+ self.assertEqual(len(q("button[name='send_last_call_request']")), 1)
+
+ # Make sure request LC isn't offered with no responsible AD.
+ doc.ad = None
+ doc.save_with_history([DocEventFactory(doc=doc)])
+ r = self.client.get(url)
+ self.assertEqual(r.status_code,200)
+ q = PyQuery(r.content)
+ self.assertEqual(len(q("button[name='send_last_call_request']")), 0)
+ doc.ad = Person.objects.get(name='Ad No2')
+ doc.save_with_history([DocEventFactory(doc=doc)])
+
# request last call
messages_before = len(outbox)
r = self.client.post(url,dict(last_call_text='stuff',send_last_call_request='Save+and+Request+Last+Call'))
diff --git a/ietf/doc/views_status_change.py b/ietf/doc/views_status_change.py
index ec914eebe..5f9b6090f 100644
--- a/ietf/doc/views_status_change.py
+++ b/ietf/doc/views_status_change.py
@@ -418,7 +418,7 @@ def clean_helper(form, formtype):
rfc_fields = {}
status_fields={}
for k in sorted(form.data.keys()):
- v = form.data[k]
+ v = form.data[k].lower()
if k.startswith('new_relation_row'):
if re.match(r'\d{1,4}',v):
v = 'rfc'+v
@@ -685,7 +685,7 @@ def last_call(request, name):
form = LastCallTextForm(initial=dict(last_call_text=escape(last_call_event.text)))
if request.method == 'POST':
- if "save_last_call_text" in request.POST or "send_last_call_request" in request.POST:
+ if "save_last_call_text" in request.POST or ("send_last_call_request" in request.POST and status_change.ad is not None):
form = LastCallTextForm(request.POST)
if form.is_valid():
events = []
diff --git a/ietf/templates/doc/status_change/last_call.html b/ietf/templates/doc/status_change/last_call.html
index c81792e82..2f1f9666a 100644
--- a/ietf/templates/doc/status_change/last_call.html
+++ b/ietf/templates/doc/status_change/last_call.html
@@ -11,6 +11,11 @@
{{ doc }}
+ {% if doc.ad is None %}
+