diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index 5e7e9a3d7..5d4c873ea 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -1030,7 +1030,7 @@ class ChangeStreamStateTests(django.test.TestCase): draft.tags = DocTagName.objects.filter(slug="w-expert") draft.group.unused_tags.add("w-refdoc") - url = urlreverse('doc_change_stream_state', kwargs=dict(name=draft.name)) + url = urlreverse('doc_change_stream_state', kwargs=dict(name=draft.name, state_type="draft-stream-ietf")) login_testing_unauthorized(self, "marschairman", url) # get @@ -1068,7 +1068,7 @@ class ChangeStreamStateTests(django.test.TestCase): def test_set_state(self): draft = make_test_data() - url = urlreverse('doc_change_stream_state', kwargs=dict(name=draft.name)) + url = urlreverse('doc_change_stream_state', kwargs=dict(name=draft.name, state_type="draft-stream-ietf")) login_testing_unauthorized(self, "marschairman", url) # get diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index 6453de180..6d46b3017 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -87,7 +87,7 @@ urlpatterns += patterns('', url(r'^(?P[A-Za-z0-9._+-]+)/edit/shepherdwriteup/$', views_draft.edit_shepherd_writeup, name='doc_edit_shepherd_writeup'), url(r'^(?P[A-Za-z0-9._+-]+)/edit/requestpublication/$', views_draft.request_publication, name='doc_request_publication'), url(r'^(?P[A-Za-z0-9._+-]+)/edit/adopt/$', views_draft.adopt_draft, name='doc_adopt_draft'), - url(r'^(?P[A-Za-z0-9._+-]+)/edit/state/stream/$', views_draft.change_stream_state, name='doc_change_stream_state'), + url(r'^(?P[A-Za-z0-9._+-]+)/edit/state/(?Pdraft-stream-[a-z]+)/$', views_draft.change_stream_state, name='doc_change_stream_state'), url(r'^(?P[A-Za-z0-9._+-]+)/edit/clearballot/$', views_ballot.clear_ballot, name='doc_clear_ballot'), url(r'^(?P[A-Za-z0-9._+-]+)/edit/deferballot/$', views_ballot.defer_ballot, name='doc_defer_ballot'), diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index fe5a42214..180a478ff 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -258,9 +258,11 @@ def document_main(request, name, rev=None): resurrected_by = e.by # stream info + stream_state_type_slug = None stream_state = None if doc.stream: - stream_state = doc.get_state("draft-stream-%s" % doc.stream_id) + stream_state_type_slug = "draft-stream-%s" % doc.stream_id + stream_state = doc.get_state(stream_state_type_slug) stream_tags = doc.tags.filter(slug__in=get_tags_for_stream_id(doc.stream_id)) shepherd_writeup = doc.latest_event(WriteupDocEvent, type="changed_protocol_writeup") @@ -356,6 +358,7 @@ def document_main(request, name, rev=None): has_errata=doc.tags.filter(slug="errata"), published=doc.latest_event(type="published_rfc"), file_urls=file_urls, + stream_state_type_slug=stream_state_type_slug, stream_state=stream_state, stream_tags=stream_tags, milestones=doc.groupmilestone_set.filter(state="active"), diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index 7386750e2..5f5b864eb 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -1198,7 +1198,7 @@ def adopt_draft(request, name): context_instance=RequestContext(request)) class ChangeStreamStateForm(forms.Form): - new_state = forms.ModelChoiceField(queryset=State.objects.filter(used=True), label='State') + new_state = forms.ModelChoiceField(queryset=State.objects.filter(used=True), label='State', help_text=u"Only select 'Submitted to IESG for Publication' to correct errors. Use the document's main page to request publication.") weeks = forms.IntegerField(label='Expected weeks in state',required=False) comment = forms.CharField(widget=forms.Textarea, required=False, help_text="Optional comment for the document history") tags = forms.ModelMultipleChoiceField(queryset=DocTagName.objects.filter(used=True), widget=forms.CheckboxSelectMultiple, required=False) @@ -1244,15 +1244,16 @@ def next_states_for_stream_state(doc, state_type, current_state): return next_states @login_required -def change_stream_state(request, name): +def change_stream_state(request, name, state_type): doc = get_object_or_404(Document, type="draft", name=name) if not doc.stream: raise Http404 + state_type = get_object_or_404(StateType, slug=state_type) + if not is_authorized_in_doc_stream(request.user, doc): return HttpResponseForbidden("You don't have permission to access this page") - state_type = StateType.objects.get(slug="draft-stream-%s" % doc.stream_id) prev_state = doc.get_state(state_type.slug) next_states = next_states_for_stream_state(doc, state_type, prev_state) @@ -1308,7 +1309,7 @@ def change_stream_state(request, name): return HttpResponseRedirect(doc.get_absolute_url()) else: - form = ChangeStreamStateForm(initial=dict(new_state=prev_state.pk), + form = ChangeStreamStateForm(initial=dict(new_state=prev_state.pk if prev_state else None), doc=doc, state_type=state_type) milestones = doc.groupmilestone_set.all() diff --git a/ietf/templates/doc/document_draft.html b/ietf/templates/doc/document_draft.html index d5eb3bd1a..9b1883084 100644 --- a/ietf/templates/doc/document_draft.html +++ b/ietf/templates/doc/document_draft.html @@ -95,7 +95,7 @@ {% if doc.stream %} {{ doc.stream }} State: - + {{ stream_state|default:"(None)" }} diff --git a/ietf/templates/doc/draft/change_stream_state.html b/ietf/templates/doc/draft/change_stream_state.html index 172a20b8e..1676aa1aa 100644 --- a/ietf/templates/doc/draft/change_stream_state.html +++ b/ietf/templates/doc/draft/change_stream_state.html @@ -32,7 +32,7 @@ form.change-state ul li label { cursor: pointer; } {% if next_states %}
- Recommended next state{{next_states|pluralize}}: + Recommended next state{{ next_states|pluralize }}: {% for state in next_states %}{{ state.name }} {% if not forloop.last %} or {% endif %}{% endfor %}
{% endif %} @@ -65,7 +65,6 @@ jQuery(document).ready(function () { jQuery(".next-states a").click(function (e) { e.preventDefault(); var s = jQuery(this).data("state"); - console.log(s) jQuery("#id_new_state").val(s); }); });