From 24d93892e398a2ce939993561e1b3e8c6de05011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20Caux?= <git@jscaux.org> Date: Tue, 6 Dec 2022 09:15:00 +0100 Subject: [PATCH] Improve incoming workflow --- .../_hx_plagiarism_iThenticate_assess.html | 1 + .../_hx_plagiarism_internal_assess.html | 1 + .../_hx_submission_admission_form.html | 1 + .../_hx_submission_details_contents.html | 4 ++- .../edadmin/_hx_submission_incoming.html | 13 +++++---- .../edadmin/_hx_submissions_list.html | 1 - scipost_django/edadmin/views/incoming.py | 14 +++++----- .../submissions/models/submission.py | 28 ++++++++++++++++++- 8 files changed, 48 insertions(+), 15 deletions(-) diff --git a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate_assess.html b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate_assess.html index da9c2b7a6..a5c6afb41 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate_assess.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate_assess.html @@ -4,6 +4,7 @@ class="mt-3" hx-post="{% url 'edadmin:_hx_plagiarism_iThenticate_assess' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" hx-target="#submission-{{ submission.pk }}-plagiarism-iThenticate-assessment" + hx-confirm="Confirm this assessment of iThenticate plagiarism?" > {% crispy form %} </form> diff --git a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal_assess.html b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal_assess.html index 3eab60f15..6b288639b 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal_assess.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal_assess.html @@ -4,6 +4,7 @@ class="mt-3" hx-post="{% url 'edadmin:_hx_plagiarism_internal_assess' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" hx-target="#submission-{{ submission.pk }}-plagiarism-internal-assessment" + hx-confirm="Confirm this assessment of internal plagiarism?" > {% crispy form %} </form> diff --git a/scipost_django/edadmin/templates/edadmin/_hx_submission_admission_form.html b/scipost_django/edadmin/templates/edadmin/_hx_submission_admission_form.html index da5a508ac..8b1f7ea3b 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_submission_admission_form.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_submission_admission_form.html @@ -3,6 +3,7 @@ class="mt-3" hx-post="{% url 'edadmin:_hx_submission_admission' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" hx-target="#submission-{{ submission.pk }}-admission-form" + hx-confirm="Proceed with this Admission decision?" > {% crispy form %} </form> diff --git a/scipost_django/edadmin/templates/edadmin/_hx_submission_details_contents.html b/scipost_django/edadmin/templates/edadmin/_hx_submission_details_contents.html index a28e97f08..968eb6cb2 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_submission_details_contents.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_submission_details_contents.html @@ -1,5 +1,7 @@ <div class="p-4"> - <h1>Summary</h1> + <h1>Status: {{ submission.get_status_display }}</h1> + <hr class="my-2"> + <h1>Submission details summary</h1> {% include 'submissions/_submission_summary.html' with submission=submission hide_title=1 show_abstract=1 %} {% if submission.in_stage_incoming %} diff --git a/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html b/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html index 89bf99d71..e9c90691c 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html @@ -1,4 +1,4 @@ -<hr> +<hr class="my-2"> <h1>Admissibility</h1> <div class="p-2 mb-4" id="submission-{{ submission.pk }}-admissibility"> {% if submission.status == submission.INCOMING %} @@ -16,13 +16,13 @@ </div> {% if submission.status == submission.ADMISSIBLE %} - <hr> + <hr class="my-2"> <h1>Plagiarism</h1> <div class="p-2 mb-4"> <div id="submission-{{ submission.pk }}-plagiarism-internal" class="m-2" hx-get="{% url 'edadmin:_hx_plagiarism_internal' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" - hx-trigger="load, {{ submission.pk }}-plagiarism-internal-updated" + hx-trigger="load" > </div> </div> @@ -30,14 +30,17 @@ <div id="submission-{{ submission.pk }}-plagiarism-iThenticate" class="m-2" hx-get="{% url 'edadmin:_hx_plagiarism_iThenticate' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" - hx-trigger="load, {{ submission.pk }}-plagiarism-iThenticate-updated" + hx-trigger="load" > </div> </div> {% if submission.plagiarism_tests_passed %} + <hr class="my-2"> <h1>Admission decision</h1> - <div class="p-2 mb-4" id="submission-{{ submission.pk }}-admission"> + <div id="submission-{{ submission.pk }}-admission" + class="p-2 mb-4 border border-2 border-warning" + > <div id="submission-{{ submission.pk }}-admission-form" class="m-2" hx-get="{% url 'edadmin:_hx_submission_admission' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" diff --git a/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html b/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html index 534030fe5..ff196e36b 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html @@ -22,7 +22,6 @@ </li> <li class="list-inline-item float-end"> <ul class="list list-unstyled"> - <li class="mb-2"><strong>Status</strong>: {{ submission.get_status_display }}</li> <li class="mb-2"><a href="{% url 'submissions:submission' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" target="_blank">{% include "bi/arrow-right-square-fill.html" %}submission page</a></li> <li class="mb-2"><a href="{% url 'submissions:editorial_page' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" target="_blank" class="text-danger">{% include "bi/arrow-right-square-fill.html" %}editorial page</a></li> </ul> diff --git a/scipost_django/edadmin/views/incoming.py b/scipost_django/edadmin/views/incoming.py index 5aaf139f9..1a0d02393 100644 --- a/scipost_django/edadmin/views/incoming.py +++ b/scipost_django/edadmin/views/incoming.py @@ -4,7 +4,7 @@ __license__ = "AGPL v3" from django.contrib.auth.decorators import login_required, user_passes_test from django.http import HttpResponse -from django.shortcuts import get_object_or_404, render +from django.shortcuts import get_object_or_404, render, redirect from django.urls import reverse from guardian.shortcuts import get_objects_for_user @@ -143,10 +143,10 @@ def _hx_plagiarism_internal_assess(request, identifier_w_vn_nr): request.POST or None, instance=submission.internal_plagiarism_assessment, ) - if form.is_valid(): # just trigger re-rendering of iThenticate div + if form.is_valid(): # trigger re-rendering of details-contents div assessment = form.save() response = HttpResponse() - response["HX-Trigger"] = f"{submission.pk}-plagiarism-internal-updated" + response["HX-Trigger"] = f"submission-{submission.pk}-details-updated" return response context = { "submission": submission, @@ -193,10 +193,10 @@ def _hx_plagiarism_iThenticate_assess(request, identifier_w_vn_nr): request.POST or None, instance=submission.iThenticate_plagiarism_assessment, ) - if form.is_valid(): # just trigger re-rendering of iThenticate div + if form.is_valid(): # trigger re-rendering of details-contents div assessment = form.save() response = HttpResponse() - response["HX-Trigger"] = f"{submission.pk}-plagiarism-iThenticate-updated" + response["HX-Trigger"] = f"submission-{submission.pk}-details-updated" return response context = { "submission": submission, @@ -239,9 +239,9 @@ def _hx_submission_admission(request, identifier_w_vn_nr): ) mail_util.send_mail() submission.refresh_from_db() - # trigger re-rendering of the details-contents div + # redirect to the edadmin page so that all is refreshed response = HttpResponse() - response["HX-Trigger"] = f"submission-{submission.pk}-details-updated" + response["HX-Redirect"] = reverse("edadmin:edadmin") return response context = {"submission": submission, "form": form,} return render(request, "edadmin/_hx_submission_admission_form.html", context) diff --git a/scipost_django/submissions/models/submission.py b/scipost_django/submissions/models/submission.py index 55cdc6674..d5149b383 100644 --- a/scipost_django/submissions/models/submission.py +++ b/scipost_django/submissions/models/submission.py @@ -118,7 +118,7 @@ class Submission(models.Model): ) # Further handy sets - STAGE_INCOMING = (INCOMING, ADMISSIBLE, ADMISSION_FAILED) + STAGE_INCOMING = (INCOMING, ADMISSIBLE) STAGE_PREASSIGNMENT = (PREASSIGNMENT, PREASSIGNMENT_FAILED) STAGE_ASSIGNMENT = (SEEKING_ASSIGNMENT, ASSIGNMENT_FAILED) STAGE_REFEREEING_IN_PREPARATION = (REFEREEING_IN_PREPARATION,) @@ -130,6 +130,9 @@ class Submission(models.Model): ACCEPTED_IN_ALTERNATIVE_AWAITING_PUBOFFER_ACCEPTANCE, ) STAGE_DECIDED = ( + ADMISSION_FAILED, + PREASSIGNMENT_FAILED, + ASSIGNMENT_FAILED, AWAITING_RESUBMISSION, RESUBMITTED, ACCEPTED_IN_TARGET, @@ -459,6 +462,29 @@ class Submission(models.Model): return "in_production" raise StageNotDefinedError + @property + def get_stage_display(self): + if self.in_stage_incoming: + return "Incoming" + elif self.in_stage_preassignment: + return "Preassignment" + elif self.in_stage_assignment: + return "Assignment" + elif self.in_stage_refereeing_in_preparation: + return "Refereeing in preparation" + elif self.in_stage_in_refereeing: + return "In refereeing" + elif self.in_stage_decisionmaking: + return "Decisionmaking" + elif self.in_stage_decided: + return "Decided" + elif self.in_stage_treated: + return "Treated" + elif self.in_stage_in_production: + return "In production" + raise StageNotDefinedError + + ############################################### # End shortucut properties for stage checking # ############################################### -- GitLab