Added a cancel button to the submission confirmation page. Fixes issue #2379.
- Legacy-Id: 14170
This commit is contained in:
parent
328c6c6ab8
commit
2d817427fc
|
@ -141,9 +141,6 @@ class SubmitTests(TestCase):
|
||||||
self.assertTrue(os.path.exists(os.path.join(self.staging_dir, u"%s-%s.%s" % (name, rev, format))))
|
self.assertTrue(os.path.exists(os.path.join(self.staging_dir, u"%s-%s.%s" % (name, rev, format))))
|
||||||
self.assertEqual(Submission.objects.filter(name=name).count(), 1)
|
self.assertEqual(Submission.objects.filter(name=name).count(), 1)
|
||||||
submission = Submission.objects.get(name=name)
|
submission = Submission.objects.get(name=name)
|
||||||
if len(submission.authors) != 1:
|
|
||||||
debug.show('submission')
|
|
||||||
debug.pprint('submission.__dict__')
|
|
||||||
self.assertEqual(len(submission.authors), 1)
|
self.assertEqual(len(submission.authors), 1)
|
||||||
a = submission.authors[0]
|
a = submission.authors[0]
|
||||||
self.assertEqual(a["name"], author.ascii)
|
self.assertEqual(a["name"], author.ascii)
|
||||||
|
@ -397,7 +394,7 @@ class SubmitTests(TestCase):
|
||||||
|
|
||||||
# confirm
|
# confirm
|
||||||
mailbox_before = len(outbox)
|
mailbox_before = len(outbox)
|
||||||
r = self.client.post(confirm_url)
|
r = self.client.post(confirm_url, {'action':'confirm'})
|
||||||
self.assertEqual(r.status_code, 302)
|
self.assertEqual(r.status_code, 302)
|
||||||
|
|
||||||
# check we have document events
|
# check we have document events
|
||||||
|
@ -526,7 +523,7 @@ class SubmitTests(TestCase):
|
||||||
|
|
||||||
# confirm
|
# confirm
|
||||||
mailbox_before = len(outbox)
|
mailbox_before = len(outbox)
|
||||||
r = self.client.post(confirm_url)
|
r = self.client.post(confirm_url, {'action':'confirm'})
|
||||||
self.assertEqual(r.status_code, 302)
|
self.assertEqual(r.status_code, 302)
|
||||||
|
|
||||||
draft = Document.objects.get(docalias__name=name)
|
draft = Document.objects.get(docalias__name=name)
|
||||||
|
@ -574,12 +571,35 @@ class SubmitTests(TestCase):
|
||||||
confirm_url = self.extract_confirm_url(outbox[-1])
|
confirm_url = self.extract_confirm_url(outbox[-1])
|
||||||
self.assertFalse("chairs have been copied" in unicode(outbox[-1]))
|
self.assertFalse("chairs have been copied" in unicode(outbox[-1]))
|
||||||
mailbox_before = len(outbox)
|
mailbox_before = len(outbox)
|
||||||
r = self.client.post(confirm_url)
|
r = self.client.post(confirm_url, {'action':'confirm'})
|
||||||
self.assertEqual(r.status_code, 302)
|
self.assertEqual(r.status_code, 302)
|
||||||
|
self.assertEqual(len(outbox), mailbox_before+3)
|
||||||
draft = Document.objects.get(docalias__name=name)
|
draft = Document.objects.get(docalias__name=name)
|
||||||
self.assertEqual(draft.rev, rev)
|
self.assertEqual(draft.rev, rev)
|
||||||
self.assertEqual(draft.relateddocument_set.filter(relationship_id='replaces').count(), replaces_count)
|
self.assertEqual(draft.relateddocument_set.filter(relationship_id='replaces').count(), replaces_count)
|
||||||
|
|
||||||
|
def test_submit_cancel_confirmation(self):
|
||||||
|
draft = make_test_data()
|
||||||
|
draft.group = None
|
||||||
|
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="added_comment", by=Person.objects.get(user__username="secretary"), desc="Test")])
|
||||||
|
name = draft.name
|
||||||
|
old_rev = draft.rev
|
||||||
|
rev = '%02d'%(int(draft.rev)+1)
|
||||||
|
status_url, author = self.do_submission(name, rev)
|
||||||
|
mailbox_before = len(outbox)
|
||||||
|
r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces='')
|
||||||
|
self.assertEqual(r.status_code, 302)
|
||||||
|
status_url = r["Location"]
|
||||||
|
r = self.client.get(status_url)
|
||||||
|
self.assertEqual(len(outbox), mailbox_before + 1)
|
||||||
|
confirm_url = self.extract_confirm_url(outbox[-1])
|
||||||
|
mailbox_before = len(outbox)
|
||||||
|
r = self.client.post(confirm_url, {'action':'cancel'})
|
||||||
|
self.assertEqual(r.status_code, 302)
|
||||||
|
self.assertEqual(len(outbox), mailbox_before)
|
||||||
|
draft = Document.objects.get(docalias__name=name)
|
||||||
|
self.assertEqual(draft.rev, old_rev)
|
||||||
|
|
||||||
def test_submit_new_wg_with_dash(self):
|
def test_submit_new_wg_with_dash(self):
|
||||||
make_test_data()
|
make_test_data()
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,6 @@ from ietf.utils.accesstoken import generate_access_token
|
||||||
from ietf.utils.log import log
|
from ietf.utils.log import log
|
||||||
from ietf.utils.mail import send_mail_message
|
from ietf.utils.mail import send_mail_message
|
||||||
|
|
||||||
|
|
||||||
def upload_submission(request):
|
def upload_submission(request):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
try:
|
try:
|
||||||
|
@ -438,20 +437,35 @@ def confirm_submission(request, submission_id, auth_token):
|
||||||
if not key_matched: key_matched = auth_token == submission.auth_key # backwards-compat
|
if not key_matched: key_matched = auth_token == submission.auth_key # backwards-compat
|
||||||
|
|
||||||
if request.method == 'POST' and submission.state_id in ("auth", "aut-appr") and key_matched:
|
if request.method == 'POST' and submission.state_id in ("auth", "aut-appr") and key_matched:
|
||||||
submitter_parsed = submission.submitter_parsed()
|
action = request.POST.get('action')
|
||||||
if submitter_parsed["name"] and submitter_parsed["email"]:
|
if action == 'confirm':
|
||||||
# We know who approved it
|
submitter_parsed = submission.submitter_parsed()
|
||||||
desc = "New version approved"
|
if submitter_parsed["name"] and submitter_parsed["email"]:
|
||||||
elif submission.state_id == "auth":
|
# We know who approved it
|
||||||
desc = "New version approved by author"
|
desc = "New version approved"
|
||||||
|
elif submission.state_id == "auth":
|
||||||
|
desc = "New version approved by author"
|
||||||
|
else:
|
||||||
|
desc = "New version approved by previous author"
|
||||||
|
|
||||||
|
post_submission(request, submission, desc)
|
||||||
|
|
||||||
|
create_submission_event(request, submission, "Confirmed and posted submission")
|
||||||
|
|
||||||
|
return redirect("ietf.doc.views_doc.document_main", name=submission.name)
|
||||||
|
|
||||||
|
elif action == "cancel":
|
||||||
|
if submission.state.next_states.filter(slug="cancel"):
|
||||||
|
cancel_submission(submission)
|
||||||
|
create_submission_event(request, submission, "Cancelled submission")
|
||||||
|
messages.success(request, 'The submission was cancelled.')
|
||||||
|
else:
|
||||||
|
messages.error(request, 'The submission is not in a state where it can be cancelled.')
|
||||||
|
|
||||||
|
return redirect("ietf.submit.views.submission_status", submission_id=submission_id)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
desc = "New version approved by previous author"
|
raise RuntimeError("Unexpected state in confirm_submission()")
|
||||||
|
|
||||||
post_submission(request, submission, desc)
|
|
||||||
|
|
||||||
create_submission_event(request, submission, "Confirmed and posted submission")
|
|
||||||
|
|
||||||
return redirect("ietf.doc.views_doc.document_main", name=submission.name)
|
|
||||||
|
|
||||||
return render(request, 'submit/confirm_submission.html', {
|
return render(request, 'submit/confirm_submission.html', {
|
||||||
'submission': submission,
|
'submission': submission,
|
||||||
|
|
|
@ -35,9 +35,13 @@
|
||||||
<p>Please press the button below to finish posting of
|
<p>Please press the button below to finish posting of
|
||||||
<b>{{ submission.name }}-{{ submission.rev }}</b>.</p>
|
<b>{{ submission.name }}-{{ submission.rev }}</b>.</p>
|
||||||
|
|
||||||
<form class="confirm-submission" method="post">{% csrf_token %}
|
|
||||||
<button class="btn btn-primary" type="submit">Confirm submission & post draft</button>
|
<form id="confirm-submission" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<button class="btn btn-primary" type="submit" name="action" value="confirm">Confirm submission & post draft</button>
|
||||||
|
<button class="btn btn-danger" type="submit" name="action" value="cancel" >Cancel submission</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
Loading…
Reference in a new issue