From 684488cfe3dab653d8993b787456dc07a12607c6 Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Fri, 25 Aug 2017 14:11:32 +0200 Subject: [PATCH] Hotfix: error if deadline form not valid --- SciPost_v1/settings/base.py | 10 +++++ submissions/forms.py | 5 +++ .../templates/submissions/editorial_page.html | 3 +- submissions/views.py | 39 +++++++++---------- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/SciPost_v1/settings/base.py b/SciPost_v1/settings/base.py index 28b54d4d4..a1a017193 100644 --- a/SciPost_v1/settings/base.py +++ b/SciPost_v1/settings/base.py @@ -18,6 +18,7 @@ import json from django.utils.translation import ugettext_lazy as _ from django.core.exceptions import ImproperlyConfigured +from django.contrib.messages import constants as message_constants # Build paths inside the project BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) @@ -169,6 +170,15 @@ TEMPLATES = [ WSGI_APPLICATION = 'SciPost_v1.wsgi.application' +# Messages +MESSAGE_TAGS = { + message_constants.DEBUG: 'debug', + message_constants.INFO: 'info', + message_constants.SUCCESS: 'success', + message_constants.WARNING: 'warning', + message_constants.ERROR: 'danger', +} + # Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases diff --git a/submissions/forms.py b/submissions/forms.py index e6b3cd433..1cb063484 100644 --- a/submissions/forms.py +++ b/submissions/forms.py @@ -396,6 +396,11 @@ class ConsiderRefereeInvitationForm(forms.Form): class SetRefereeingDeadlineForm(forms.Form): deadline = forms.DateField(required=False, label='', widget=forms.SelectDateWidget) + def clean_deadline(self): + if not self.cleaned_data.get('deadline'): + self.add_error('deadline', 'Please use a valid date.') + return self.cleaned_data.get('deadline') + class VotingEligibilityForm(forms.Form): diff --git a/submissions/templates/submissions/editorial_page.html b/submissions/templates/submissions/editorial_page.html index 65a024d1e..1afd0a553 100644 --- a/submissions/templates/submissions/editorial_page.html +++ b/submissions/templates/submissions/editorial_page.html @@ -162,7 +162,8 @@ <li> Set refereeing deadline: <form class="form-inline" action="{% url 'submissions:set_refereeing_deadline' arxiv_identifier_w_vn_nr=submission.arxiv_identifier_w_vn_nr %}" method="post"> - {% csrf_token %}{{ set_deadline_form|bootstrap_inline:'0,12' }} + {% csrf_token %} + {{ set_deadline_form|bootstrap_inline:'0,12' }} <div class="ml-2 form-group row"> <div class="col-12"> <input class="btn btn-secondary" type="submit" value="Set deadline"/> diff --git a/submissions/views.py b/submissions/views.py index f6addc6e6..1488164f3 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -939,26 +939,25 @@ def extend_refereeing_deadline(request, arxiv_identifier_w_vn_nr, days): def set_refereeing_deadline(request, arxiv_identifier_w_vn_nr): submission = get_object_or_404(Submission.objects.get_pool(request.user), arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) - if request.method == 'POST': - form = SetRefereeingDeadlineForm(request.POST) - if form.is_valid(): - submission.reporting_deadline = form.cleaned_data['deadline'] - if form.cleaned_data['deadline'] > timezone.now().date(): - submission.open_for_reporting = True - submission.open_for_commenting = True - submission.status = 'EICassigned' - submission.latest_activity = timezone.now() - submission.save() - submission.add_general_event('A new refereeing deadline is set.') - context = {'ack_header': 'New reporting deadline set.', - 'followup_message': 'Return to the ', - 'followup_link': reverse('submissions:editorial_page', - kwargs={'arxiv_identifier_w_vn_nr': submission.arxiv_identifier_w_vn_nr}), - 'followup_link_label': 'Submission\'s Editorial Page'} - return render(request, 'scipost/acknowledgement.html', context) - else: - errormessage = 'The set reporting deadline form was improperly filled' - return render(request, 'scipost/error.html', {'errormessage': errormessage}) + + form = SetRefereeingDeadlineForm(request.POST or None) + if form.is_valid(): + submission.reporting_deadline = form.cleaned_data['deadline'] + if form.cleaned_data['deadline'] > timezone.now().date(): + submission.open_for_reporting = True + submission.open_for_commenting = True + submission.status = 'EICassigned' + submission.latest_activity = timezone.now() + submission.save() + submission.add_general_event('A new refereeing deadline is set.') + context = {'ack_header': 'New reporting deadline set.', + 'followup_message': 'Return to the ', + 'followup_link': reverse('submissions:editorial_page', + kwargs={'arxiv_identifier_w_vn_nr': submission.arxiv_identifier_w_vn_nr}), + 'followup_link_label': 'Submission\'s Editorial Page'} + return render(request, 'scipost/acknowledgement.html', context) + else: + messages.error(request, 'The deadline has not been set. Please try again.') return redirect(reverse('submissions:editorial_page', kwargs={'arxiv_identifier_w_vn_nr': arxiv_identifier_w_vn_nr})) -- GitLab