From ab2c34894171220bdb941bd62494bcfa6caebfc4 Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Tue, 6 Feb 2018 11:03:50 +0100 Subject: [PATCH] Fix volunteer-as-EIC didn't check for earlier invitation --- submissions/models.py | 3 ++- submissions/utils.py | 23 +++-------------------- submissions/views.py | 24 +++++++++++++++--------- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/submissions/models.py b/submissions/models.py index 8b2f21ef3..99b5b94ce 100644 --- a/submissions/models.py +++ b/submissions/models.py @@ -128,8 +128,9 @@ class Submission(models.Model): version=self.arxiv_vn_nr) self.arxiv_identifier_w_vn_nr = arxiv_w_vn - super().save(*args, **kwargs) + obj = super().save(*args, **kwargs) self._update_cycle() + return obj def __str__(self): header = (self.arxiv_identifier_w_vn_nr + ', ' diff --git a/submissions/utils.py b/submissions/utils.py index aacecf3fe..018678df4 100644 --- a/submissions/utils.py +++ b/submissions/utils.py @@ -262,12 +262,9 @@ class SubmissionUtils(BaseMailUtil): # Import here due to circular import error from .models import EditorialAssignment - assignments_to_deprecate = (EditorialAssignment.objects - .filter(submission=cls.assignment.submission, accepted=None) - .exclude(to=cls.assignment.to)) - for atd in assignments_to_deprecate: - atd.deprecated = True - atd.save() + EditorialAssignment.objects.filter(submission=cls.assignment.submission, accepted=None)\ + .exclude(to=cls.assignment.to)\ + .update(deprecated=True) @classmethod def deprecate_all_assignments(cls): @@ -1368,17 +1365,3 @@ class SubmissionUtils(BaseMailUtil): reply_to=['admin@scipost.org']) emailmessage.attach_alternative(html_version, 'text/html') emailmessage.send(fail_silently=False) - - - @classmethod - def email_Fellow_tasklist(cls): - """ - Email list of current and upcoming tasks to an individual Fellow. - - Requires context to contain: - - `fellow` - """ - cls._send_mail(cls, 'email_fellow_tasklist', -# [cls._context['fellow'].email_address], - ['jscaux@scipost.org'], # temporary, for testing - 'Current and upcoming tasks') diff --git a/submissions/views.py b/submissions/views.py index 2ecd5d295..1e1cc60d5 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -481,7 +481,7 @@ def assignment_request(request, assignment_id): if form.cleaned_data['accept'] == 'True': assignment.accepted = True assignment.to = request.user.contributor - assignment.submission.status = 'EICassigned' + assignment.submission.status = STATUS_EIC_ASSIGNED assignment.submission.editor_in_charge = request.user.contributor assignment.submission.open_for_reporting = True deadline = timezone.now() + datetime.timedelta(days=28) # for papers @@ -546,22 +546,28 @@ def volunteer_as_EIC(request, arxiv_identifier_w_vn_nr): messages.warning(request, errormessage) return redirect(reverse('submissions:pool')) contributor = Contributor.objects.get(user=request.user) - assignment = EditorialAssignment(submission=submission, - to=contributor, - accepted=True, - date_created=timezone.now(), - date_answered=timezone.now()) + + # The Contributor may already have an EditorialAssignment due to an earlier invitation. + assignment, __ = EditorialAssignment.objects.get_or_create( + submission=submission, + to=contributor) + assignment.accepted = True + assignment.date_answered = timezone.now() + assignment.save() + + # Set deadlines deadline = timezone.now() + datetime.timedelta(days=28) # for papers if submission.submitted_to_journal == 'SciPostPhysLectNotes': deadline += datetime.timedelta(days=28) - submission.status = 'EICassigned' + + # Update Submission data + submission.status = STATUS_EIC_ASSIGNED submission.editor_in_charge = contributor submission.open_for_reporting = True submission.reporting_deadline = deadline submission.open_for_commenting = True - submission.latest_activity = timezone.now() - assignment.save() submission.save() + submission.touch() SubmissionUtils.load({'assignment': assignment}) SubmissionUtils.deprecate_other_assignments() -- GitLab