diff --git a/submissions/forms.py b/submissions/forms.py index 37f07e08e92e0e2fcd99b559e8313a86055bf6aa..1fd5527db82fa9c742d3dc13888280e6852e2e85 100644 --- a/submissions/forms.py +++ b/submissions/forms.py @@ -71,6 +71,7 @@ class SubmissionChecks: last_submission = None def __init__(self, *args, **kwargs): + self.requested_by = kwargs.pop('requested_by', None) super().__init__(*args, **kwargs) # Prefill `is_resubmission` property if data is coming from initial data if kwargs.get('initial', None): @@ -121,6 +122,11 @@ class SubmissionChecks: self.last_submission = submission if submission.status == STATUS_REVISION_REQUESTED: self.is_resubmission = True + if self.requested_by.contributor not in submission.authors.all(): + error_message = ('There exists a preprint with this arXiv identifier ' + 'but an earlier version number. Resubmission is only possible' + ' if you are a registered author of this manuscript.') + raise forms.ValidationError(error_message) elif submission.status in [STATUS_REJECTED, STATUS_REJECTED_VISIBLE]: error_message = ('This arXiv preprint has previously undergone refereeing ' 'and has been rejected. Resubmission is only possible ' @@ -238,7 +244,6 @@ class RequestSubmissionForm(SubmissionChecks, forms.ModelForm): } def __init__(self, *args, **kwargs): - self.requested_by = kwargs.pop('requested_by', None) super().__init__(*args, **kwargs) if not self.submission_is_resubmission(): diff --git a/submissions/signals.py b/submissions/signals.py index 53461d84cea416478376bd2404f1700834d0aaaf..664ff585d5255a68d32b3ef6c949d79ab58edda3 100644 --- a/submissions/signals.py +++ b/submissions/signals.py @@ -32,8 +32,13 @@ def notify_new_editorial_assignment(sender, instance, created, **kwargs): """ if created: administration = Group.objects.get(name='Editorial Administrators') + if instance.accepted: + # A new assignment is auto-accepted if user assigned himself or on resubmission. + text = ' assigned you Editor-in-charge.' + else: + text = ' invited you to become Editor-in-charge.' notify.send(sender=sender, recipient=instance.to.user, actor=administration, - verb=' invited you to become Editor-in-charge.', target=instance) + verb=text, target=instance) def notify_new_referee_invitation(sender, instance, created, **kwargs): diff --git a/submissions/views.py b/submissions/views.py index 9d9fafc7284e9a05ba05d05eb480d7cd3c1f7e83..b91cff2ff4e21398802ede349c488fa633b13e0f 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -96,10 +96,11 @@ class RequestSubmission(CreateView): @login_required @permission_required('scipost.can_submit_manuscript', raise_exception=True) def prefill_using_arxiv_identifier(request): - query_form = SubmissionIdentifierForm(request.POST or None, initial=request.GET or None) + query_form = SubmissionIdentifierForm(request.POST or None, initial=request.GET or None, + requested_by=request.user) if query_form.is_valid(): prefill_data = query_form.request_arxiv_preprint_form_prefill_data() - form = RequestSubmissionForm(initial=prefill_data) + form = RequestSubmissionForm(initial=prefill_data, requested_by=request.user) # Submit message to user if query_form.submission_is_resubmission():