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 da9c2b7a6d835305f9c7f2a8d2c6cbbe87769bda..a5c6afb41feb112218c89bd1d9be3b02990b9d37 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 3eab60f151cac440702061f71dc981f3ff0ae5f3..6b288639bbd7b377282165b74208d31fc26502e0 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 da5a508ac0be3a55fce9e59bdf0df84955eb819e..8b1f7ea3b85f95b555ce3edd1eaf985bc0f8c2e2 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 a28e97f083b67e5764ececc136e4d6cee5b4d020..968eb6cb275effec29d2e5da2a99f93a7293eaa1 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 89bf99d71e85c66199dc9de4b4ffc795ca04e4bb..e9c90691c21f2e41cdd6a203cc27139ddb365cd9 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 534030fe57c30aa3e4fa125c91243b673cd926b7..ff196e36bacdb73a8803d5f5b06029692baa5b50 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 5aaf139f9747d243aaa6aaf79142df55700fc83f..1a0d023939a651cf1401004aad4d581c287161e4 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 55cdc6674f68e973366d45a7f8e67a9231b86337..d5149b38385518e547dacb2ddec899b9cbb1057a 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 # ###############################################