Skip to content

Commit 2d81742

Browse files
committed
Added a cancel button to the submission confirmation page. Fixes issue ietf-tools#2379.
- Legacy-Id: 14170
1 parent 328c6c6 commit 2d81742

3 files changed

Lines changed: 58 additions & 20 deletions

File tree

ietf/submit/tests.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,6 @@ def do_submission(self, name, rev, group=None, formats=["txt",], author=None):
141141
self.assertTrue(os.path.exists(os.path.join(self.staging_dir, u"%s-%s.%s" % (name, rev, format))))
142142
self.assertEqual(Submission.objects.filter(name=name).count(), 1)
143143
submission = Submission.objects.get(name=name)
144-
if len(submission.authors) != 1:
145-
debug.show('submission')
146-
debug.pprint('submission.__dict__')
147144
self.assertEqual(len(submission.authors), 1)
148145
a = submission.authors[0]
149146
self.assertEqual(a["name"], author.ascii)
@@ -397,7 +394,7 @@ def submit_existing(self, formats, change_authors=True, group_type='wg', stream_
397394

398395
# confirm
399396
mailbox_before = len(outbox)
400-
r = self.client.post(confirm_url)
397+
r = self.client.post(confirm_url, {'action':'confirm'})
401398
self.assertEqual(r.status_code, 302)
402399

403400
# check we have document events
@@ -526,7 +523,7 @@ def submit_new_individual(self, formats):
526523

527524
# confirm
528525
mailbox_before = len(outbox)
529-
r = self.client.post(confirm_url)
526+
r = self.client.post(confirm_url, {'action':'confirm'})
530527
self.assertEqual(r.status_code, 302)
531528

532529
draft = Document.objects.get(docalias__name=name)
@@ -574,12 +571,35 @@ def test_submit_update_individual(self):
574571
confirm_url = self.extract_confirm_url(outbox[-1])
575572
self.assertFalse("chairs have been copied" in unicode(outbox[-1]))
576573
mailbox_before = len(outbox)
577-
r = self.client.post(confirm_url)
574+
r = self.client.post(confirm_url, {'action':'confirm'})
578575
self.assertEqual(r.status_code, 302)
576+
self.assertEqual(len(outbox), mailbox_before+3)
579577
draft = Document.objects.get(docalias__name=name)
580578
self.assertEqual(draft.rev, rev)
581579
self.assertEqual(draft.relateddocument_set.filter(relationship_id='replaces').count(), replaces_count)
582580

581+
def test_submit_cancel_confirmation(self):
582+
draft = make_test_data()
583+
draft.group = None
584+
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="added_comment", by=Person.objects.get(user__username="secretary"), desc="Test")])
585+
name = draft.name
586+
old_rev = draft.rev
587+
rev = '%02d'%(int(draft.rev)+1)
588+
status_url, author = self.do_submission(name, rev)
589+
mailbox_before = len(outbox)
590+
r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces='')
591+
self.assertEqual(r.status_code, 302)
592+
status_url = r["Location"]
593+
r = self.client.get(status_url)
594+
self.assertEqual(len(outbox), mailbox_before + 1)
595+
confirm_url = self.extract_confirm_url(outbox[-1])
596+
mailbox_before = len(outbox)
597+
r = self.client.post(confirm_url, {'action':'cancel'})
598+
self.assertEqual(r.status_code, 302)
599+
self.assertEqual(len(outbox), mailbox_before)
600+
draft = Document.objects.get(docalias__name=name)
601+
self.assertEqual(draft.rev, old_rev)
602+
583603
def test_submit_new_wg_with_dash(self):
584604
make_test_data()
585605

ietf/submit/views.py

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
from ietf.utils.log import log
3434
from ietf.utils.mail import send_mail_message
3535

36-
3736
def upload_submission(request):
3837
if request.method == 'POST':
3938
try:
@@ -438,20 +437,35 @@ def confirm_submission(request, submission_id, auth_token):
438437
if not key_matched: key_matched = auth_token == submission.auth_key # backwards-compat
439438

440439
if request.method == 'POST' and submission.state_id in ("auth", "aut-appr") and key_matched:
441-
submitter_parsed = submission.submitter_parsed()
442-
if submitter_parsed["name"] and submitter_parsed["email"]:
443-
# We know who approved it
444-
desc = "New version approved"
445-
elif submission.state_id == "auth":
446-
desc = "New version approved by author"
447-
else:
448-
desc = "New version approved by previous author"
440+
action = request.POST.get('action')
441+
if action == 'confirm':
442+
submitter_parsed = submission.submitter_parsed()
443+
if submitter_parsed["name"] and submitter_parsed["email"]:
444+
# We know who approved it
445+
desc = "New version approved"
446+
elif submission.state_id == "auth":
447+
desc = "New version approved by author"
448+
else:
449+
desc = "New version approved by previous author"
450+
451+
post_submission(request, submission, desc)
449452

450-
post_submission(request, submission, desc)
453+
create_submission_event(request, submission, "Confirmed and posted submission")
451454

452-
create_submission_event(request, submission, "Confirmed and posted submission")
455+
return redirect("ietf.doc.views_doc.document_main", name=submission.name)
456+
457+
elif action == "cancel":
458+
if submission.state.next_states.filter(slug="cancel"):
459+
cancel_submission(submission)
460+
create_submission_event(request, submission, "Cancelled submission")
461+
messages.success(request, 'The submission was cancelled.')
462+
else:
463+
messages.error(request, 'The submission is not in a state where it can be cancelled.')
453464

454-
return redirect("ietf.doc.views_doc.document_main", name=submission.name)
465+
return redirect("ietf.submit.views.submission_status", submission_id=submission_id)
466+
467+
else:
468+
raise RuntimeError("Unexpected state in confirm_submission()")
455469

456470
return render(request, 'submit/confirm_submission.html', {
457471
'submission': submission,

ietf/templates/submit/confirm_submission.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,13 @@ <h2>Confirm submission of {{ submission.name }}</h2>
3535
<p>Please press the button below to finish posting of
3636
<b>{{ submission.name }}-{{ submission.rev }}</b>.</p>
3737

38-
<form class="confirm-submission" method="post">{% csrf_token %}
39-
<button class="btn btn-primary" type="submit">Confirm submission & post draft</button>
38+
39+
<form id="confirm-submission" method="post">
40+
{% csrf_token %}
41+
<button class="btn btn-primary" type="submit" name="action" value="confirm">Confirm submission & post draft</button>
42+
<button class="btn btn-danger" type="submit" name="action" value="cancel" >Cancel submission</button>
4043
</form>
44+
4145
{% endif %}
4246

4347
{% endif %}

0 commit comments

Comments
 (0)