From 0c22e982fe2b2510a57f17eb530388407877cb83 Mon Sep 17 00:00:00 2001 From: George Katsikas <giorgakis.katsikas@gmail.com> Date: Wed, 17 Jul 2024 15:01:23 +0300 Subject: [PATCH] add new referee indications submission step fixes #172 --- .../submissions/submission_form.html | 4 +- .../templates/submissions/submit_steps.html | 10 +++- scipost_django/submissions/urls/__init__.py | 5 ++ scipost_django/submissions/views/__init__.py | 48 +++++++++++++++++-- 4 files changed, 61 insertions(+), 6 deletions(-) diff --git a/scipost_django/submissions/templates/submissions/submission_form.html b/scipost_django/submissions/templates/submissions/submission_form.html index d22daeb29..6c78f2e57 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 f87183b37..86f6630ee 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 f04bbfc1e..c29affd26 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 0550f10c2..4364945b2 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): """ -- GitLab