From 725fa5cf10f7e3f386ffc2684b292f097c50aeb5 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Sat, 2 Apr 2016 06:24:15 +0200 Subject: [PATCH] Invitations now check if email has already been invited --- .../templates/scipost/registration_invitations.html | 13 ++++++++----- scipost/utils.py | 8 +++++++- scipost/views.py | 13 ++++++++----- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/scipost/templates/scipost/registration_invitations.html b/scipost/templates/scipost/registration_invitations.html index e025d595a..b3ba15a6f 100644 --- a/scipost/templates/scipost/registration_invitations.html +++ b/scipost/templates/scipost/registration_invitations.html @@ -14,11 +14,14 @@ <div class="flex-greybox"> <h2>Send a new invitation:</h2> </div> - <form action="{% url 'scipost:registration_invitations' %}" method="post"> - {% csrf_token %} - {% load crispy_forms_tags %} - {% crispy reg_inv_form %} - </form> + {% if errormessage %} + <h3>{{ errormessage }}</h3> + {% endif %} + <form action="{% url 'scipost:registration_invitations' %}" method="post"> + {% csrf_token %} + {% load crispy_forms_tags %} + {% crispy reg_inv_form %} + </form> </section> <hr class="hr12"/> <section> diff --git a/scipost/utils.py b/scipost/utils.py index 0f26dbfa7..6e7a2d87b 100644 --- a/scipost/utils.py +++ b/scipost/utils.py @@ -9,7 +9,6 @@ from django.utils import timezone from .models import * - class Utils(object): @classmethod @@ -38,6 +37,13 @@ class Utils(object): else: return False + @classmethod + def email_already_invited(cls): + if RegistrationInvitation.objects.filter(email_address=cls.reg_inv_form.cleaned_data['email_address']).exists(): + return True + else: + return False + @classmethod def create_and_save_contributor(cls): user = User.objects.create_user ( diff --git a/scipost/views.py b/scipost/views.py index d06d08850..c51d83819 100644 --- a/scipost/views.py +++ b/scipost/views.py @@ -249,15 +249,18 @@ def vet_registration_request_ack(request, contributor_id): def registration_invitations(request): # List invitations sent; send new ones + errormessage = '' if request.method == 'POST': # Send invitation from form information reg_inv_form = RegistrationInvitationForm(request.POST) - Utils.load({'contributor': request.user.contributor, 'reg_inv_form': reg_inv_form}) if reg_inv_form.is_valid(): - Utils.create_and_save_invitation() - Utils.send_registration_invitation_email() - return HttpResponseRedirect('registration_invitation_sent') + if Utils.email_already_invited(): + errormessage = 'DUPLICATE ERROR: This email address has already been used for an invitation' + else: + Utils.create_and_save_invitation() + Utils.send_registration_invitation_email() + return HttpResponseRedirect('registration_invitation_sent') else: reg_inv_form = RegistrationInvitationForm() sent_reg_inv_fellows = RegistrationInvitation.objects.filter(invitation_type='F', responded=False).order_by('last_name') @@ -268,7 +271,7 @@ def registration_invitations(request): nr_resp_reg_inv_fellows = resp_reg_inv_fellows.count() resp_reg_inv_contrib = RegistrationInvitation.objects.filter(invitation_type='C', responded=True).order_by('last_name') nr_resp_reg_inv_contrib = resp_reg_inv_contrib.count() - context = {'reg_inv_form': reg_inv_form, + context = {'reg_inv_form': reg_inv_form, 'errormessage': errormessage, 'sent_reg_inv_fellows': sent_reg_inv_fellows, 'nr_sent_reg_inv_fellows': nr_sent_reg_inv_fellows, 'sent_reg_inv_contrib': sent_reg_inv_contrib, 'nr_sent_reg_inv_contrib': nr_sent_reg_inv_contrib, 'resp_reg_inv_fellows': resp_reg_inv_fellows, 'nr_resp_reg_inv_fellows': nr_resp_reg_inv_fellows, -- GitLab