diff --git a/scipost_django/submissions/templates/submissions/submission_form.html b/scipost_django/submissions/templates/submissions/submission_form.html index d22daeb29ad0326efb1f156b75c974429da7ac7f..6c78f2e57f788e26bd63f80eb2343cd09d8d92d0 100644 --- a/scipost_django/submissions/templates/submissions/submission_form.html +++ b/scipost_django/submissions/templates/submissions/submission_form.html @@ -22,8 +22,8 @@ <div class="row"> <div class="col-md-6"> - <h2 class=highlight>Step 4</h2> - <h3>Final step: complete and submit the form</h3> + <h2 class="highlight">Step 4</h2> + <h3>Fill in the submission details form</h3> <p>We prefilled the form as much as we could, please complete it and then submit.</p> </div> diff --git a/scipost_django/submissions/templates/submissions/submit_steps.html b/scipost_django/submissions/templates/submissions/submit_steps.html index f87183b371f51353e88667c9e9003e590eefbd74..86f6630eefcef2d03e4c17cc14a895a73d4f1c93 100644 --- a/scipost_django/submissions/templates/submissions/submit_steps.html +++ b/scipost_django/submissions/templates/submissions/submit_steps.html @@ -31,7 +31,15 @@ {% if step == 4 %}<span class="text-warning">{% include 'bi/arrow-right-square-fill.html' %}</span>{% endif %} {% if step > 4 %}<span class="text-success">{% include 'bi/check-square-fill.html' %}</span>{% endif %} </td> - <td>Complete and submit the form</td> + <td>Fill in the submission details form</td> + </tr> + <tr> + <td>Step 5</td> + <td class="text-center"> + {% if step == 5 %}<span class="text-warning">{% include 'bi/arrow-right-square-fill.html' %}</span>{% endif %} + {% if step > 5 %}<span class="text-success">{% include 'bi/check-square-fill.html' %}</span>{% endif %} + </td> + <td>Indicate potential referees</td> </tr> </table> </div> diff --git a/scipost_django/submissions/urls/__init__.py b/scipost_django/submissions/urls/__init__.py index f04bbfc1ead3bf6a98beaf9acb290cf843c7e111..c29affd26001a6990f81921e4f673d307a7ac524 100644 --- a/scipost_django/submissions/urls/__init__.py +++ b/scipost_django/submissions/urls/__init__.py @@ -338,6 +338,11 @@ urlpatterns = [ views.RequestSubmissionUsingOSFPreprintsView.as_view(), name="submit_manuscript_osfpreprints", ), + path( + "submit_manuscript/<identifier:identifier_w_vn_nr>/indicate_referees", + views.submit_indicate_referees, + name="submit_indicate_referees", + ), path( "withdraw_manuscript/<identifier:identifier_w_vn_nr>/", views.withdraw_manuscript, diff --git a/scipost_django/submissions/views/__init__.py b/scipost_django/submissions/views/__init__.py index 0550f10c27ae4c1714cd694bd72e91a4bfa054cd..4364945b2fcafcd0b57592738bb02ddc66934017 100644 --- a/scipost_django/submissions/views/__init__.py +++ b/scipost_django/submissions/views/__init__.py @@ -319,7 +319,6 @@ class RequestSubmissionView(LoginRequiredMixin, PermissionRequiredMixin, CreateV """Formview to submit a new manuscript (Submission).""" permission_required = "scipost.can_submit_manuscript" - success_url = reverse_lazy("scipost:personal_page") form_class = SubmissionForm template_name = "submissions/submission_form.html" @@ -383,10 +382,11 @@ class RequestSubmissionView(LoginRequiredMixin, PermissionRequiredMixin, CreateV kwargs["initial"] = getattr(self, "initial_data", {}) return kwargs - @transaction.atomic + # @transaction.atomic def form_valid(self, form): """Redirect and send out mails if all data is valid.""" submission = form.save() + self.submission = submission submission.add_general_event("Submitted to %s." % str(submission.submitted_to)) @@ -412,7 +412,8 @@ class RequestSubmissionView(LoginRequiredMixin, PermissionRequiredMixin, CreateV "authors/acknowledge_submission", submission=submission ) mail_util.send_mail() - return HttpResponseRedirect(self.success_url) + + return HttpResponseRedirect(self.get_success_url()) def form_invalid(self, form): """Add warnings as messages to make those more explicit.""" @@ -420,6 +421,13 @@ class RequestSubmissionView(LoginRequiredMixin, PermissionRequiredMixin, CreateV messages.warning(self.request, *error_messages) return super().form_invalid(form) + def get_success_url(self): + """Redirect to the indicate referees step.""" + return reverse( + "submissions:submit_indicate_referees", + kwargs={"identifier_w_vn_nr": self.submission.preprint.identifier_w_vn_nr}, + ) + class RequestSubmissionUsingSciPostView(RequestSubmissionView): """Formview to submit a new Submission using SciPost's preprint server.""" @@ -491,6 +499,40 @@ class RequestSubmissionUsingOSFPreprintsView(RequestSubmissionView): return super().get(request, journal_doi_label) +@login_required +@permission_required("scipost.can_submit_manuscript", raise_exception=True) +def submit_indicate_referees(request, identifier_w_vn_nr): + """ + Inform users of SciPost's unique refereeing process and ask them to indicate referees. + + This page should only be accessible to the submitting author and only before the submission has passed preassignment. + Afterwards, visitors should be redirected to the main `indicate_referees` page. + """ + + submission = get_object_or_404( + Submission, preprint__identifier_w_vn_nr=identifier_w_vn_nr + ) + + if (request.user.contributor != submission.submitted_by) and not is_edadmin( + request.user + ): + raise PermissionDenied("You are not the submitting author of this Submission.") + + if submission.status != Submission.INCOMING: + return redirect( + reverse( + "submissions:referee_indications", + kwargs={"identifier_w_vn_nr": identifier_w_vn_nr}, + ) + ) + + context = { + "submission": submission, + } + + return render(request, "submissions/submit_indicate_referees.html", context) + + @login_required def withdraw_manuscript(request, identifier_w_vn_nr): """