SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 13b3a0c3 authored by Jorran de Wit's avatar Jorran de Wit
Browse files

5.

parent 864a5f96
No related branches found
No related tags found
No related merge requests found
...@@ -448,6 +448,22 @@ class SubmissionReportsForm(forms.ModelForm): ...@@ -448,6 +448,22 @@ class SubmissionReportsForm(forms.ModelForm):
fields = ['pdf_refereeing_pack'] fields = ['pdf_refereeing_pack']
class BasePreassignEditorsFormSet(forms.BaseModelFormSet):
"""Preassign editors for incoming Submission."""
def save(self, *args, **kwargs):
objects = super().save(*args, **kwargs)
for form in self.ordered_forms:
form.instance.invitation_order = form.cleaned_data['ORDER']
form.instance.save()
return objects
PreassignEditorsFormSet = forms.modelformset_factory(
EditorialAssignment, fields=(), can_order=True, extra=0,
formset=BasePreassignEditorsFormSet)
class SubmissionPrescreeningForm(forms.ModelForm): class SubmissionPrescreeningForm(forms.ModelForm):
"""Processing decision for pre-screening of Submission.""" """Processing decision for pre-screening of Submission."""
......
...@@ -234,7 +234,7 @@ class EditorialAssignmentQuerySet(models.QuerySet): ...@@ -234,7 +234,7 @@ class EditorialAssignmentQuerySet(models.QuerySet):
def preassigned(self): def preassigned(self):
return self.filter(status=constants.STATUS_PREASSIGNED) return self.filter(status=constants.STATUS_PREASSIGNED)
def open(self): def invited(self):
return self.filter(status=constants.STATUS_INVITED) return self.filter(status=constants.STATUS_INVITED)
def ongoing(self): def ongoing(self):
......
{% extends 'submissions/admin/base.html' %}
{% load bootstrap %}
{% block pagetitle %}: Submission Editors{% endblock pagetitle %}
{% block breadcrumb_items %}
{{block.super}}
<a href="{% url 'submissions:do_prescreening' submission.arxiv_identifier_w_vn_nr %}" class="breadcrumb-item">Pre-screening {{ submission.arxiv_identifier_w_vn_nr }}</a>
<span class="breadcrumb-item">Pre-assign editors</span>
{% endblock %}
{% block content %}
<h1 class="highlight">Submission Editor pre-assignment</h1>
<h3 class="highlight">Ordering</h3>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ formset.management_form }}
<ul class="fa-ul sortable-list d-inline-block">
{% for form in formset %}
<li>
<i class="fa fa-sort"></i>
{{ form.instance.first_name }} {{ form.instance.last_name }}
<div class="d-none">{{ form }}</div>
</li>
{% endfor %}
</ul>
<br>
<input type="submit" class="btn btn-primary" value="Save ordering">
</form>
{% endblock %}
...@@ -37,6 +37,8 @@ urlpatterns = [ ...@@ -37,6 +37,8 @@ urlpatterns = [
url(r'^admin/treated$', views.treated_submissions_list, name='treated_submissions_list'), url(r'^admin/treated$', views.treated_submissions_list, name='treated_submissions_list'),
url(r'^admin/{regex}/prescreening$'.format(regex=SUBMISSIONS_COMPLETE_REGEX), url(r'^admin/{regex}/prescreening$'.format(regex=SUBMISSIONS_COMPLETE_REGEX),
views.PreScreeningView.as_view(), name='do_prescreening'), views.PreScreeningView.as_view(), name='do_prescreening'),
url(r'^admin/{regex}/preassign_editors$'.format(regex=SUBMISSIONS_COMPLETE_REGEX),
views.preassign_editors, name='preassign_editors'),
url(r'^admin/{regex}/reports/compile$'.format(regex=SUBMISSIONS_COMPLETE_REGEX), url(r'^admin/{regex}/reports/compile$'.format(regex=SUBMISSIONS_COMPLETE_REGEX),
views.treated_submission_pdf_compile, name='treated_submission_pdf_compile'), views.treated_submission_pdf_compile, name='treated_submission_pdf_compile'),
url(r'^admin/{regex}/plagiarism$'.format(regex=SUBMISSIONS_COMPLETE_REGEX), url(r'^admin/{regex}/plagiarism$'.format(regex=SUBMISSIONS_COMPLETE_REGEX),
......
...@@ -34,7 +34,8 @@ from .forms import ( ...@@ -34,7 +34,8 @@ from .forms import (
SetRefereeingDeadlineForm, RefereeSelectForm, iThenticateReportForm, VotingEligibilityForm, SetRefereeingDeadlineForm, RefereeSelectForm, iThenticateReportForm, VotingEligibilityForm,
RefereeRecruitmentForm, ConsiderRefereeInvitationForm, EditorialCommunicationForm, ReportForm, RefereeRecruitmentForm, ConsiderRefereeInvitationForm, EditorialCommunicationForm, ReportForm,
SubmissionCycleChoiceForm, ReportPDFForm, SubmissionReportsForm, EICRecommendationForm, SubmissionCycleChoiceForm, ReportPDFForm, SubmissionReportsForm, EICRecommendationForm,
SubmissionPoolFilterForm, FixCollegeDecisionForm, SubmissionPrescreeningForm) SubmissionPoolFilterForm, FixCollegeDecisionForm, SubmissionPrescreeningForm,
PreassignEditorsFormSet)
from .utils import SubmissionUtils from .utils import SubmissionUtils
from colleges.permissions import fellowship_required, fellowship_or_admin_required from colleges.permissions import fellowship_required, fellowship_or_admin_required
...@@ -1564,6 +1565,26 @@ def remind_Fellows_to_vote(request): ...@@ -1564,6 +1565,26 @@ def remind_Fellows_to_vote(request):
return render(request, 'scipost/acknowledgement.html', context) return render(request, 'scipost/acknowledgement.html', context)
@permission_required('scipost.can_run_pre_screening', raise_exception=True)
def preassign_editors(request, arxiv_identifier_w_vn_nr):
"""Preassign editors for incoming Submission."""
submission = get_object_or_404(
Submission.objects.prescreening(), arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr)
formset = PreassignEditorsFormSet(
request.POST or None,
queryset=submission.editorial_assignments.order_by('-invitation_order'))
if formset.is_valid():
formset.save()
messages.success(request, 'Editors assigned for invitation.')
return redirect('submissoins:do_prescreening')
context = {
'formset': formset,
'submission': submission,
}
return render(request, 'submissions/admin/submission_presassign_editors.html', context)
class PreScreeningView(SubmissionAdminViewMixin, UpdateView): class PreScreeningView(SubmissionAdminViewMixin, UpdateView):
"""Do pre-screening of new incoming Submissions.""" """Do pre-screening of new incoming Submissions."""
......
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