SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 24d93892 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Improve incoming workflow

parent b5066d51
No related branches found
No related tags found
No related merge requests found
......@@ -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>
......@@ -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>
......@@ -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>
<div class="p-4">
<h1>Summary</h1>
<h1>Status:&emsp;{{ 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 %}
......
<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 %}"
......
......@@ -22,7 +22,6 @@
</li>
<li class="list-inline-item float-end">
<ul class="list list-unstyled">
<li class="mb-2"><strong>Status</strong>:&nbsp;{{ 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>
......
......@@ -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)
......@@ -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 #
###############################################
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment