diff --git a/scipost/urls.py b/scipost/urls.py index 5b8809d94c62da572e14e96c9f00ed5d6e11769a..ac5f3ab49fd370739874923df4f9d863bb3268a0 100644 --- a/scipost/urls.py +++ b/scipost/urls.py @@ -8,6 +8,7 @@ from .feeds import LatestNewsFeedRSS, LatestNewsFeedAtom, LatestCommentsFeedRSS, from journals import views as journals_views from journals.constants import REGEX_CHOICES +from submissions import views as submission_views JOURNAL_REGEX = '(?P<doi_label>%s)' % REGEX_CHOICES @@ -209,4 +210,8 @@ urlpatterns = [ TemplateView.as_view(template_name='scipost/howto_production.html'), name='howto_production'), + # Temporary fix, due to mails sent with wrong urls + url(r'^decline_ref_invitation/(?P<invitation_key>.+)$', + submission_views.decline_ref_invitation), + ] diff --git a/submissions/utils.py b/submissions/utils.py index 302496959f2b8ee166e16745553014af1323b828..908f7f35c9a12bfd2a592b2a712b31952f468bce 100644 --- a/submissions/utils.py +++ b/submissions/utils.py @@ -747,7 +747,7 @@ class SubmissionUtils(BaseMailUtil): 'we would appreciate a quick accept/decline response from you, ' 'ideally within the next 2 days.\n\n' 'If you are not able to provide a Report, you can quickly let us know by simply ' - 'navigating to \n\nhttps://scipost.org/decline_ref_invitation/' + 'navigating to \n\nhttps://scipost.org/submissions/decline_ref_invitation/' + cls.invitation.invitation_key + '\n\n' 'If you are able to provide a Report, you can confirm this after registering ' 'and logging in (you will automatically be prompted for a confirmation). ' @@ -778,7 +778,7 @@ class SubmissionUtils(BaseMailUtil): 'ideally within the next 2 days.</p>' '<p>If you are <strong>not</strong> able to provide a Report, ' 'you can quickly let us know by simply ' - '<a href="https://scipost.org/decline_ref_invitation/{{ invitation_key }}">' + '<a href="https://scipost.org/submissions/decline_ref_invitation/{{ invitation_key }}">' 'clicking here</a>.</p>' '<p>If you are able to provide a Report, you can confirm this after registering ' 'and logging in (you will automatically be prompted for a confirmation). ' diff --git a/submissions/views.py b/submissions/views.py index 72495253d1315392388c4f78cf25d399a56c4a6f..87ac66b3cb6e9d324795101379f796076482d3c7 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -764,19 +764,18 @@ def accept_or_decline_ref_invitation_ack(request, invitation_id): def decline_ref_invitation(request, invitation_key): - invitation = get_object_or_404(RefereeInvitation, invitation_key=invitation_key) - if request.method == 'POST': - form = ConsiderRefereeInvitationForm(request.POST) - if form.is_valid(): - invitation.accepted = False - invitation.refusal_reason = form.cleaned_data['refusal_reason'] - invitation.save() - SubmissionUtils.load({'invitation': invitation}, request) - SubmissionUtils.email_referee_response_to_EIC() - messages.success(request, 'Thank you for informing us that you will not provide a Report.') - return redirect(reverse('scipost:index')) - else: - form = ConsiderRefereeInvitationForm(initial={'accept': False}) + invitation = get_object_or_404(RefereeInvitation, invitation_key=invitation_key, + accepted__isnull=True) + + form = ConsiderRefereeInvitationForm(request.POST or None, initial={'accept': False}) + if form.is_valid(): + invitation.accepted = False + invitation.refusal_reason = form.cleaned_data['refusal_reason'] + invitation.save() + SubmissionUtils.load({'invitation': invitation}, request) + SubmissionUtils.email_referee_response_to_EIC() + messages.success(request, 'Thank you for informing us that you will not provide a Report.') + return redirect(reverse('scipost:index')) context = {'invitation': invitation, 'form': form} return render(request, 'submissions/decline_ref_invitation.html', context)