Allow setting the stream state of a document that has not yet had any stream state set. Fixes #1859. Commit ready for merge. Candidate for patch.
- Legacy-Id: 10503
This commit is contained in:
parent
7e08303c33
commit
5a591bb263
|
@ -1189,6 +1189,40 @@ class ChangeStreamStateTests(TestCase):
|
||||||
self.assertTrue("marsdelegate@ietf.org" in unicode(outbox[-1]))
|
self.assertTrue("marsdelegate@ietf.org" in unicode(outbox[-1]))
|
||||||
self.assertTrue("plain@example.com" in unicode(outbox[-1]))
|
self.assertTrue("plain@example.com" in unicode(outbox[-1]))
|
||||||
|
|
||||||
|
def test_set_initial_state(self):
|
||||||
|
draft = make_test_data()
|
||||||
|
draft.unset_state("draft-stream-%s"%draft.stream_id)
|
||||||
|
|
||||||
|
url = urlreverse('doc_change_stream_state', kwargs=dict(name=draft.name, state_type="draft-stream-ietf"))
|
||||||
|
login_testing_unauthorized(self, "marschairman", url)
|
||||||
|
|
||||||
|
# set a state when no state exists
|
||||||
|
old_state = draft.get_state("draft-stream-%s" % draft.stream_id )
|
||||||
|
self.assertEqual(old_state,None)
|
||||||
|
new_state = State.objects.get(used=True, type="draft-stream-%s" % draft.stream_id, slug="parked")
|
||||||
|
empty_outbox()
|
||||||
|
events_before = draft.docevent_set.count()
|
||||||
|
|
||||||
|
r = self.client.post(url,
|
||||||
|
dict(new_state=new_state.pk,
|
||||||
|
comment="some comment",
|
||||||
|
weeks="10",
|
||||||
|
tags=[t.pk for t in draft.tags.filter(slug__in=get_tags_for_stream_id(draft.stream_id))],
|
||||||
|
))
|
||||||
|
self.assertEqual(r.status_code, 302)
|
||||||
|
|
||||||
|
draft = Document.objects.get(pk=draft.pk)
|
||||||
|
self.assertEqual(draft.get_state("draft-stream-%s" % draft.stream_id), new_state)
|
||||||
|
self.assertEqual(draft.docevent_set.count() - events_before, 2)
|
||||||
|
reminder = DocReminder.objects.filter(event__doc=draft, type="stream-s")
|
||||||
|
self.assertEqual(len(reminder), 1)
|
||||||
|
due = datetime.datetime.now() + datetime.timedelta(weeks=10)
|
||||||
|
self.assertTrue(due - datetime.timedelta(days=1) <= reminder[0].due <= due + datetime.timedelta(days=1))
|
||||||
|
self.assertEqual(len(outbox), 1)
|
||||||
|
self.assertTrue("state changed" in outbox[0]["Subject"].lower())
|
||||||
|
self.assertTrue("mars-chairs@ietf.org" in unicode(outbox[0]))
|
||||||
|
self.assertTrue("marsdelegate@ietf.org" in unicode(outbox[0]))
|
||||||
|
|
||||||
def test_set_state(self):
|
def test_set_state(self):
|
||||||
draft = make_test_data()
|
draft = make_test_data()
|
||||||
|
|
||||||
|
|
|
@ -1393,7 +1393,7 @@ def change_stream_state(request, name, state_type):
|
||||||
prev_state = doc.get_state(state_type.slug)
|
prev_state = doc.get_state(state_type.slug)
|
||||||
next_states = next_states_for_stream_state(doc, state_type, prev_state)
|
next_states = next_states_for_stream_state(doc, state_type, prev_state)
|
||||||
|
|
||||||
can_set_sub_pub = has_role(request.user,('Secretariat','Area Director')) or prev_state.slug=='sub-pub'
|
can_set_sub_pub = has_role(request.user,('Secretariat','Area Director')) or (prev_state and prev_state.slug=='sub-pub')
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = ChangeStreamStateForm(request.POST, doc=doc, state_type=state_type,can_set_sub_pub=can_set_sub_pub,stream=doc.stream)
|
form = ChangeStreamStateForm(request.POST, doc=doc, state_type=state_type,can_set_sub_pub=can_set_sub_pub,stream=doc.stream)
|
||||||
|
|
Loading…
Reference in a new issue