Call out downreferences in autogenerated last call text. Fixes #1982. Commit ready for merge.

- Legacy-Id: 11654
This commit is contained in:
Robert Sparks 2016-07-14 18:09:22 +00:00
parent b0880b3499
commit 992aba1aec
4 changed files with 53 additions and 3 deletions

View file

@ -120,6 +120,7 @@ def generate_last_call_announcement(request, doc):
else:
ipr_links = None
downrefs = [rel for rel in doc.relateddocument_set.all() if rel.is_downref()]
addrs = gather_address_lists('last_call_issued',doc=doc).as_strings()
mail = render_to_string("doc/mail/last_call_announcement.txt",
@ -132,6 +133,7 @@ def generate_last_call_announcement(request, doc):
docs=[ doc ],
urls=[ settings.IDTRACKER_BASE_URL + doc.get_absolute_url() ],
ipr_links=ipr_links,
downrefs=downrefs,
)
)

View file

@ -8,6 +8,8 @@ from django.core.urlresolvers import reverse as urlreverse
from ietf.doc.models import ( Document, State, DocEvent, BallotDocEvent,
BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, TelechatDocEvent )
from ietf.doc.factories import DocumentFactory
from ietf.group.factories import GroupFactory
from ietf.group.models import Group, Role
from ietf.name.models import BallotPositionName
from ietf.iesg.models import TelechatDate
@ -713,3 +715,44 @@ class DeferUndeferTestCase(TestCase):
def setUp(self):
make_test_data()
class RegenerateLastCallTestCase(TestCase):
def test_regenerate_last_call(self):
group = GroupFactory(type_id='individ')
draft = DocumentFactory.create(stream_id='ietf',group=group)
draft.docalias_set.create(name=draft.name) # factory should do this
draft.set_state(State.objects.get(type='draft',slug='active'))
draft.set_state(State.objects.get(type='draft-iesg',slug='pub-req'))
draft.intended_std_level_id='ps'
draft.save()
url = urlreverse('doc_ballot_lastcall', kwargs=dict(name=draft.name))
login_testing_unauthorized(self, "secretary", url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
r = self.client.post(url, dict(regenerate_last_call_text="1"))
self.assertEqual(r.status_code, 200)
draft = Document.objects.get(name=draft.name)
lc_text = draft.latest_event(WriteupDocEvent, type="changed_last_call_text").text
self.assertTrue("Subject: Last Call" in lc_text)
self.assertFalse("contains normative down" in lc_text)
rfc = DocumentFactory.create(stream_id='ise')
rfc.docalias_set.create(name=rfc.name)
rfc_alias = rfc.docalias_set.create(name='rfc6666')
rfc.set_state(State.objects.get(type='draft',slug='rfc'))
rfc.set_state(State.objects.get(type='draft-iesg',slug='pub'))
rfc.std_level_id='inf'
rfc.save()
draft.relateddocument_set.create(target=rfc_alias,relationship_id='refnorm')
r = self.client.post(url, dict(regenerate_last_call_text="1"))
self.assertEqual(r.status_code, 200)
draft = Document.objects.get(name=draft.name)
lc_text = draft.latest_event(WriteupDocEvent, type="changed_last_call_text").text
self.assertTrue('contains these normative down' in lc_text)
self.assertTrue('rfc6666' in lc_text)
self.assertTrue('Independent Submission Editor stream' in lc_text)

View file

@ -26,7 +26,7 @@
{% if can_request_last_call and not need_intended_status %}
<button type="submit" class="btn btn-primary" name="send_last_call_request" value="Save and Request Last Call">Save text &amp; request last call</button>
{% endif %}
<button type="submit" class="btn btn-warning" name="regenerate_last_call_text" value="Gegenerate Last Call Text">Regenerate text</button>
<button type="submit" class="btn btn-warning" name="regenerate_last_call_text" value="Regenerate Last Call Text">Regenerate text</button>
{% if user|has_role:"Secretariat" and can_make_last_call %}
<a class="btn btn-primary" href="{% url "doc_make_last_call" name=doc.name %}">Issue last call</a>
{% endif %}

View file

@ -25,12 +25,17 @@ The file{{ urls|pluralize }} can be obtained via
IESG discussion can be tracked via
{{ doc_url }}
{% if ipr_links %}
The following IPR Declarations may be related to this I-D:
{% if ipr_links %}The following IPR Declarations may be related to this I-D:
{% for link in ipr_links %} {{ link }}
{% endfor %}
{% else %}
No IPR declarations have been submitted directly on this I-D.
{% endif %}
{% if downrefs %}
The document contains these normative downward references.
See RFC 3967 for additional information:
{% for ref in downrefs %} {{ref.target.document.canonical_name}}: {{ref.target.document.title}} ({{ref.target.document.std_level}} - {{ref.target.document.stream.desc}})
{% endfor %}Note that some of these references may already be listed in the acceptable Downref Registry.{%endif%}
{% endautoescape %}