From 213b704796cd5dc48766f7e21caba7957a137453 Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Sun, 21 May 2017 08:28:28 +0200 Subject: [PATCH] Add permissions and EdCol assignments --- submissions/forms.py | 23 ++++++++++++++++++++++- submissions/views.py | 12 ++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/submissions/forms.py b/submissions/forms.py index b0ccceb4a..266b66824 100644 --- a/submissions/forms.py +++ b/submissions/forms.py @@ -1,11 +1,14 @@ from django import forms +from django.contrib.auth.models import Group from django.core.validators import RegexValidator from django.db import models, transaction +from guardian.shortcuts import assign_perm + from .constants import ASSIGNMENT_BOOL, ASSIGNMENT_REFUSAL_REASONS, STATUS_RESUBMITTED,\ REPORT_ACTION_CHOICES, REPORT_REFUSAL_CHOICES, STATUS_REVISION_REQUESTED,\ STATUS_REJECTED, STATUS_REJECTED_VISIBLE, STATUS_RESUBMISSION_INCOMING -from .models import Submission, RefereeInvitation, Report, EICRecommendation +from .models import Submission, RefereeInvitation, Report, EICRecommendation, EditorialAssignment from scipost.constants import SCIPOST_SUBJECT_AREAS from scipost.services import ArxivCaller @@ -260,6 +263,23 @@ class RequestSubmissionForm(SubmissionChecks, forms.ModelForm): submission.save() return submission + @transaction.atomic + def reassign_eic_and_admins(self, submission): + # Assign permissions + assign_perm('can_take_editorial_actions', submission.editor_in_charge.user, submission) + ed_admins = Group.objects.get(name='Editorial Administrators') + assign_perm('can_take_editorial_actions', ed_admins, submission) + + # Assign editor + assignment = EditorialAssignment( + submission=submission, + to=submission.editor_in_charge, + accepted=True + ) + assignment.save() + submission.save() + return submission + @transaction.atomic def save(self): """ @@ -284,6 +304,7 @@ class RequestSubmissionForm(SubmissionChecks, forms.ModelForm): submission.save() if self.submission_is_resubmission(): submission = self.copy_and_save_data_from_resubmission(submission) + submission = self.reassign_eic_and_admins(submission) submission.authors.add(self.requested_by.contributor) return submission diff --git a/submissions/views.py b/submissions/views.py index 15451982b..ba4a51f9e 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -59,10 +59,22 @@ class RequestSubmission(CreateView): kwargs['requested_by'] = self.request.user return kwargs + @transaction.atomic def form_valid(self, form): + submission = form.save() text = ('<h3>Thank you for your Submission to SciPost</h3>' 'Your Submission will soon be handled by an Editor.') messages.success(self.request, text) + + if form.submission_is_resubmission(): + # Send emails + SubmissionUtils.load({'submission': submission}, self.request) + SubmissionUtils.send_authors_resubmission_ack_email() + SubmissionUtils.send_EIC_reappointment_email() + else: + # Send emails + SubmissionUtils.load({'submission': submission}) + SubmissionUtils.send_authors_submission_ack_email() return super().form_valid(form) -- GitLab