From 6437457d586f255993bcfa1401a7cc0b82001e55 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Tue, 15 Jan 2019 12:08:40 +0100 Subject: [PATCH] Withdrawal button (partial work) --- submissions/urls.py | 5 +++++ submissions/views.py | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/submissions/urls.py b/submissions/urls.py index a4316aab0..fd984cad9 100644 --- a/submissions/urls.py +++ b/submissions/urls.py @@ -68,6 +68,7 @@ urlpatterns = [ url(r'^admin/reports/(?P<report_id>[0-9]+)/compile$', views.report_pdf_compile, name='report_pdf_compile'), + # Submission, resubmission, withdrawal url(r'^resubmit_manuscript$', views.resubmit_manuscript, name='resubmit_manuscript'), url(r'^submit_manuscript$', views.prefill_using_arxiv_identifier, name='submit_manuscript'), url(r'^submit_manuscript/scipost$', @@ -76,6 +77,10 @@ urlpatterns = [ views.RequestSubmissionUsingArXivView.as_view(), name='submit_manuscript_arxiv'), url(r'^submit_manuscript/prefill$', views.prefill_using_arxiv_identifier, name='prefill_using_identifier'), + url(r'^withdraw_manuscript/{regex}/$'.format(regex=SUBMISSIONS_COMPLETE_REGEX), + views.withdraw_manuscript, name='withdraw_manuscript'), + + # Pool url(r'^pool/$', views.pool, name='pool'), url(r'^pool/{regex}/$'.format(regex=SUBMISSIONS_COMPLETE_REGEX), views.pool, name='pool'), url(r'^add_remark/{regex}$'.format(regex=SUBMISSIONS_COMPLETE_REGEX), diff --git a/submissions/views.py b/submissions/views.py index f9a02b268..d79e49f47 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -58,7 +58,7 @@ from profiles.models import Profile from profiles.forms import SimpleProfileForm, ProfileEmailForm from scipost.constants import INVITATION_REFEREEING from scipost.decorators import is_contributor_user -from scipost.forms import RemarkForm +from scipost.forms import RemarkForm, ConfirmationForm from scipost.mixins import PaginationMixin from scipost.models import Contributor, Remark @@ -222,6 +222,40 @@ def prefill_using_arxiv_identifier(request): return render(request, 'submissions/submission_prefill_form.html', context) +@login_required +def withdraw_manuscript(request, identifier_w_vn_nr): + """ + Withdrawal of the submission by one of the submitting authors. + + This method performs the following actions: + - makes the Submission and its previous versions publicly invisible + - marks any Editorial Assignment as completed, emailing the EIC + - deprecates all outstanding refereeing requests (emailing referees) + - adds an event for the authors + + GET shows the info/confirm page + POST performs the action and returns to the personal page. + """ + submission = get_object_or_404(Submission, + preprint__identifier_w_vn_nr=identifier_w_vn_nr) + is_author = check_verified_author(submission, request.user) + + if not is_author: + errormessage = ('You are not marked as an author of this Submission, ' + 'and thus are not allowed to withdraw it.') + return render(request, 'scipost/error.html', {'errormessage': errormessage}) + + form = ConfirmationForm(request.POST or None) + if form.is_valid(): + if form.cleaned_data['confirm'] == 'True': + messages.success(request, 'Your manuscript has been withdrawn.') + else: + messages.error(request, 'Withdrawal procedure aborted') + return redirect(reverse('scipost:personal_page')) + context = {'submission': submission, 'form': form} + return render(request, 'submissions/withdraw_manuscript.html') + + class SubmissionListView(PaginationMixin, ListView): """List all publicly available Submissions.""" -- GitLab