diff --git a/scipost_django/submissions/forms/__init__.py b/scipost_django/submissions/forms/__init__.py index a1c42de8ce0c03d6190860e775371d62f7de45bd..1eac64e0f26688fc5d9c6a875e0be8e77915698e 100644 --- a/scipost_django/submissions/forms/__init__.py +++ b/scipost_django/submissions/forms/__init__.py @@ -2431,6 +2431,7 @@ class InviteRefereeSearchFrom(forms.Form): RefereeInvitation.objects.filter( profile=OuterRef("id"), submission=self.submission, + cancelled=False, ) ) ) diff --git a/scipost_django/submissions/views/__init__.py b/scipost_django/submissions/views/__init__.py index 756e1055dc50ea6a5af9432c9e76ea3c15b62b31..509206b253cf72d78743a56b777cf65cf442cf93 100644 --- a/scipost_django/submissions/views/__init__.py +++ b/scipost_django/submissions/views/__init__.py @@ -618,7 +618,9 @@ def submission_detail(request, identifier_w_vn_nr): # Check if Contributor is author of the Submission is_author = check_verified_author(submission, request.user) is_author_unchecked = check_unverified_author(submission, request.user) - is_submission_fellow = submission.fellows.filter(contributor__user=request.user.id).exists() + is_submission_fellow = submission.fellows.filter( + contributor__user=request.user.id + ).exists() if not submission.visible_public and not is_author: if not request.user.is_authenticated: @@ -1372,9 +1374,13 @@ def invite_referee( ) # Guard against already invited referees - if RefereeInvitation.objects.filter( - profile=profile, submission=submission - ).exists(): + if ( + RefereeInvitation.objects.filter( + profile=profile, submission=submission, cancelled=False + ) + .exclude(email_address=profile_email) + .exists() + ): messages.error( request, "This referee has already been invited.", @@ -1430,6 +1436,9 @@ def invite_referee( key = get_new_secrets_key() referee_invitation.invitation_key = key referee_invitation.save() + elif referee_invitation.cancelled: + referee_invitation.cancelled = False + referee_invitation.save() registration_invitation = None has_agreed_to_previous_invitation = RefereeInvitation.objects.filter( @@ -1518,7 +1527,7 @@ def _hx_quick_invite_referee(request, identifier_w_vn_nr, profile_id): # Guard against already invited referees if RefereeInvitation.objects.filter( - profile=profile, submission=submission + profile=profile, submission=submission, cancelled=False ).exists(): return HTMXResponse( "This referee has already been invited.", @@ -1558,6 +1567,9 @@ def _hx_quick_invite_referee(request, identifier_w_vn_nr, profile_id): key = get_new_secrets_key() referee_invitation.invitation_key = key referee_invitation.save() + elif referee_invitation.cancelled: + referee_invitation.cancelled = False + referee_invitation.save() registration_invitation = None has_agreed_to_previous_invitation = RefereeInvitation.objects.filter(