diff --git a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate.html b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate.html index d64e15803e3376e5f8dfc27039db45ef176fa030..412354c58e4dc270c8f9ad915d8c086ccd39c0a3 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_iThenticate.html @@ -3,9 +3,11 @@ <details class="border border-2"> <summary class="bg-primary bg-opacity-10 p-2"> <h2> - iThenticate checks + iThenticate checks  {% if submission.iThenticate_plagiarism_assessment %} -  {% include "edadmin/plagiarism_assessment_status_span.html" with assessment=submission.iThenticate_plagiarism_assessment %} + {% include "edadmin/plagiarism_assessment_status_span.html" with assessment=submission.iThenticate_plagiarism_assessment %} + {% else %} + <span class="text-danger">[not started]</span> {% endif %} </h2> </summary> diff --git a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal.html b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal.html index 65f30b06c9c9d3e3525dcae4c4975164388a0af9..fd8007b6efc1aa99c7bb05da99de382ee99ea858 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_plagiarism_internal.html @@ -1,9 +1,11 @@ <details class="border border-2"> <summary class="bg-primary bg-opacity-10 p-2"> <h2> - Internal plagiarism checks + Internal plagiarism checks  {% if submission.internal_plagiarism_assessment %} -  {% include "edadmin/plagiarism_assessment_status_span.html" with assessment=submission.internal_plagiarism_assessment %} + {% include "edadmin/plagiarism_assessment_status_span.html" with assessment=submission.internal_plagiarism_assessment %} + {% else %} + <span class="text-danger">[not started]</span> {% endif %} </h2> </summary> diff --git a/scipost_django/edadmin/templates/edadmin/_hx_submission_details_contents.html b/scipost_django/edadmin/templates/edadmin/_hx_submission_details_contents.html new file mode 100644 index 0000000000000000000000000000000000000000..8bbbb962c80dc16f42abcd7747d55c5e3a96d407 --- /dev/null +++ b/scipost_django/edadmin/templates/edadmin/_hx_submission_details_contents.html @@ -0,0 +1,15 @@ +<div class="p-4"> + <h1>Summary</h1> + {% include 'submissions/_submission_summary.html' with submission=submission hide_title=1 show_abstract=1 %} + + {% if submission.in_stage_incoming %} + {% include "edadmin/_hx_submission_incoming.html" with submission=submission %} + {% endif %} + + <h1>Workflow diagram</h1> + <button class="m-2 btn btn-primary workflowDiagram" + id="submission-{{ submission.pk }}-workflow-diagram" + hx-get="{% url 'submissions:_hx_submission_workflow_diagram' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" + hx-swap="outerHTML" + >Load Submission processing workflow graphs</button> +</div> diff --git a/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html b/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html index 7d84756283c87468da609a3a4b8483c7cdd518a2..8f271f21a30e18d94535370dd1a6d0b649fe8bbc 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_submission_incoming.html @@ -3,7 +3,7 @@ <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="revealed, {{ submission.pk }}-plagiarism-internal-updated" + hx-trigger="load, {{ submission.pk }}-plagiarism-internal-updated" > </div> </div> @@ -11,7 +11,7 @@ <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="revealed, {{ submission.pk }}-plagiarism-iThenticate-updated" + hx-trigger="load, {{ submission.pk }}-plagiarism-iThenticate-updated" > </div> </div> diff --git a/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html b/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html index 6524664d3d6e8adfa49400ea77508f1bc10b4333..aecc1c005ba8d08c567c0de2c3d8471ff54fee28 100644 --- a/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html +++ b/scipost_django/edadmin/templates/edadmin/_hx_submissions_list.html @@ -1,6 +1,8 @@ {% for submission in submissions %} - <details class="border border-2 my-2"> + <details id="submission-{{ submission.pk }}-details" + class="border border-2 my-2" + > <summary class="px-4 py-2 bg-primary bg-opacity-10"> <table> <tbody> @@ -16,20 +18,10 @@ </tbody> </table> </summary> - <div class="p-4"> - <h1>Summary</h1> - {% include 'submissions/_submission_summary.html' with submission=submission hide_title=1 show_abstract=1 %} - - {% if phase == "incoming" %} - {% include "edadmin/_hx_submission_incoming.html" with submission=submission %} - {% endif %} - - <h1>Workflow diagram</h1> - <button class="m-2 btn btn-primary workflowDiagram" - id="submission-{{ submission.pk }}-workflow-diagram" - hx-get="{% url 'submissions:_hx_submission_workflow_diagram' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" - hx-swap="outerHTML" - >Load Submission processing workflow graphs</button> + <div id="submission-{{ submission.pk }}-details-contents" + hx-get="{% url 'edadmin:_hx_submission_details_contents' identifier_w_vn_nr=submission.preprint.identifier_w_vn_nr %}" + hx-trigger="toggle once from:#submission-{{ submission.pk }}-details" + > </div> </details> {% endfor %} diff --git a/scipost_django/edadmin/templates/edadmin/edadmin.html b/scipost_django/edadmin/templates/edadmin/edadmin.html index ef28f63b635b2e5796afba42df74fd3efeb3701d..c0c1322820d1f2734bddb240a8aada0c190a65bb 100644 --- a/scipost_django/edadmin/templates/edadmin/edadmin.html +++ b/scipost_django/edadmin/templates/edadmin/edadmin.html @@ -17,21 +17,21 @@ {% block content %} - <details class="border border-2 my-4"> + <details class="border border-2 my-4" + id="incoming-details" + > <summary class="bg-info px-4 py-2"> <h1>Incoming</h1> </summary> - <span class="p-2"> - <button class="m-2 btn btn-primary" - id="incoming" - hx-get="{% url 'edadmin:_hx_incoming_list' %}" - hx-swap="outerHTML" - hx-indicator="#indicator-submissions-incoming" - >Load incoming Submissions</button> - </span> + <span id="incoming" + hx-get="{% url 'edadmin:_hx_incoming_list' %}" + hx-swap="outerHTML" + hx-trigger="toggle once from:#incoming-details" + hx-indicator="#indicator-submissions-incoming" + ></span> <span id="indicator-submissions-incoming" class="htmx-indicator"> - <button class="btn btn-sm btn-warning" type="button" disabled> - <strong>Loading...</strong> + <button class="m-2 btn btn-sm btn-warning" type="button" disabled> + <strong>Loading incoming Submissions...</strong> <div class="spinner-grow spinner-grow-sm ms-2" role="status" aria-hidden="true"></div> </button> </span> diff --git a/scipost_django/edadmin/urls/incoming.py b/scipost_django/edadmin/urls/incoming.py index b3cae05f4a93e5b8752649a9a12b05a308d2c96c..545c11ad24ea88b59a749bfe2b70370df45104bc 100644 --- a/scipost_django/edadmin/urls/incoming.py +++ b/scipost_django/edadmin/urls/incoming.py @@ -16,6 +16,11 @@ urlpatterns = [ path( "<identifier:identifier_w_vn_nr>/", include([ + path( + "_hx_submission_details_contents", + incoming._hx_submission_details_contents, + name="_hx_submission_details_contents", + ), path( "_hx_plagiarism_internal", incoming._hx_plagiarism_internal, diff --git a/scipost_django/edadmin/views/incoming.py b/scipost_django/edadmin/views/incoming.py index a7038c5bb23fdae4eed1b51805b1e21742b566a5..f8fcc02884ab3631d40e3a1666fbd4a501a136b8 100644 --- a/scipost_django/edadmin/views/incoming.py +++ b/scipost_django/edadmin/views/incoming.py @@ -37,6 +37,16 @@ def _hx_incoming_list(request): return render(request, "edadmin/_hx_submissions_list.html", context) +@login_required +@user_passes_test(is_edadmin) +def _hx_submission_details_contents(request, identifier_w_vn_nr): + submission = get_object_or_404( + Submission, preprint__identifier_w_vn_nr=identifier_w_vn_nr + ) + context = {"submission": submission,} + return render(request, "edadmin/_hx_submission_details_contents.html", context) + + ######################## # Plagiarism: internal # ######################## diff --git a/scipost_django/submissions/exceptions.py b/scipost_django/submissions/exceptions.py index 3c2a868570e86c6cac1b136e98b16d61d54dfab0..32524ec9b13fc91cb0e2cbc6d7ad50ea965eb26f 100644 --- a/scipost_django/submissions/exceptions.py +++ b/scipost_django/submissions/exceptions.py @@ -10,6 +10,10 @@ class BaseCustomException(Exception): return self.name +class StageNotDefinedError(BaseCustomException): + pass + + class CycleUpdateDeadlineError(BaseCustomException): pass diff --git a/scipost_django/submissions/models/submission.py b/scipost_django/submissions/models/submission.py index c4933ce75763c7ee8b38b37dfb2cd725731f2dc3..fecc0f626fe75b0582b8021b76a105e29ce4bb07 100644 --- a/scipost_django/submissions/models/submission.py +++ b/scipost_django/submissions/models/submission.py @@ -37,6 +37,7 @@ from ..constants import ( EVENT_FOR_EIC, SUBMISSION_TIERS, ) +from ..exceptions import StageNotDefinedError from ..managers import SubmissionQuerySet, SubmissionEventQuerySet from ..refereeing_cycles import ShortCycle, DirectCycle, RegularCycle @@ -433,6 +434,28 @@ class Submission(models.Model): def in_stage_in_production(self): return self.status in self.STAGE_IN_PRODUCTION + @property + def stage(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 # ###############################################