aboutsummaryrefslogtreecommitdiffstats
path: root/alphabetlearning/payments/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'alphabetlearning/payments/views.py')
-rw-r--r--alphabetlearning/payments/views.py147
1 files changed, 89 insertions, 58 deletions
diff --git a/alphabetlearning/payments/views.py b/alphabetlearning/payments/views.py
index 4b6f79f..dda7900 100644
--- a/alphabetlearning/payments/views.py
+++ b/alphabetlearning/payments/views.py
@@ -18,7 +18,7 @@ from alphabetlearning.payments.models import EmailSignup
from alphabetlearning.payments.models import EmailVerification
from alphabetlearning.resources.models import Resource
from alphabetlearning.users.models import User
-
+from .forms import EmailVerificationForm
from .models import CartItem
from .models import Price
from .models import ShoppingCart
@@ -56,70 +56,101 @@ class SuccessEmailSignupView(TemplateView):
def email_signup_verification(request):
if request.method == "POST":
- email = request.POST.get("email")
-
- # Create pending verification
- pending_verification = EmailVerification.objects.create(
- email=email,
- )
-
- # Generate verification URL
- verification_url = request.build_absolute_uri(
- reverse('payments:verify_email', args=[str(pending_verification.verification_token)])
- )
-
- # Send verification email
- subject = 'Alphabet Learning - Email Verification'
- html_message = f'''
- <html>
- <body>
- <img src="http://localhost:8000/static/images/AL_long_logo_black_grey.png" alt="Alphabet Learning Logo" style="max-width: 200px; margin-bottom: 20px;">
- <p>Hi!</p>
- <p>You recently requested to sign up to the Alphabet Learning contact list.</p>
- <p>Please click the following link to verify your email address within 24 hours:</p>
- <p><a href="{verification_url}">{verification_url}</a></p>
- <p>If you didn't request this, please ignore this email.</p>
- <p>Best regards,</p>
- <p>The Alphabet Learning Team</p>
- </body>
- </html>
+ form = EmailVerificationForm(request.POST)
+ if form.is_valid():
+ # Create pending verification
+ pending_verification = EmailVerification.objects.create(
+ email=form.cleaned_data.get("email"),
+ )
+ # Generate verification URL
+ verification_url:str = request.build_absolute_uri(
+ reverse('payments:verify_email', args=[str(pending_verification.verification_token)])
+ )
+ email = process_verification_emails(verification_url, form.cleaned_data.get("email"), pending_verification, request)
+ return render(request, 'payments/verification_sent.html', {
+ 'email': email
+ })
+ else:
+ email = process_verification_emails(request.POST.get("email"), warn=True)
+ return render(request, 'payments/verification_sent.html', {
+ 'email': email
+ })
+ else:
+ form = EmailVerificationForm()
+ return render(request, "pages/home.html", {"form": form}) # Adjust as necessary
+
+
+def process_verification_emails(email: str, verification_url: str=False, email_verification_obj: EmailVerification=False, warn=False):
+
+ if warn is False:
+ html_warning_message = f'''
+ <p>Please click the following link to verify your email address within 24 hours:</p>
+ <p><a href="{verification_url}">{verification_url}</a></p>
+ <p>If you didn't request this, please ignore this email.</p>
'''
- message = f'''
- Hi!,
-
- You recently requested to sign up to the Alphabet Learning contact list.
-
+ warning_message = f'''
Please click the following link to verify your email address within 24 hours:
{verification_url}
If you didn't request this, please ignore this email.
-
- Best regards,
- The Alphabet Learning Team
'''
- send_mail(
- subject,
- message,
- settings.DEFAULT_FROM_EMAIL,
- [email],
- fail_silently=False,
- html_message=html_message
- )
- admin_message = f'''
- Joanna/Matthew,
-
- {email} has just signed up to the Alphabet Learning contact list. They are awaiting verification.
-
- I will email again if they follow through with the verification.
-
- Best regards,
- The Alphabet Learning Server
+ admin_warn = "They are not already subscribed."
+ else:
+ html_warning_message = f'''
+ <p>You are already subscribed to our list - no further action is required.</p>
'''
+ warning_message = '''
+ You are already subscribed to our list - no further action is required.
+ '''
+ admin_warn = "They have already subscribed so have been told of this fact in their verification email. No further action required."
+
+ # Send verification email
+ subject = 'Alphabet Learning - Email Verification'
+ html_message = f'''
+ <html>
+ <body>
+ <img src="http://localhost:8000/static/images/AL_long_logo_black_grey.png" alt="Alphabet Learning Logo" style="max-width: 200px; margin-bottom: 20px;">
+ <p>Hi!</p>
+ <p>You recently requested to sign up to the Alphabet Learning contact list.</p>
+ {html_warning_message}
+ <p>Best regards,</p>
+ <p>The Alphabet Learning Team</p>
+ </body>
+ </html>
+ '''
+ message = f'''
+ Hi!,
+
+ You recently requested to sign up to the Alphabet Learning contact list.
+
+ {warning_message}
+
+ Best regards,
+ The Alphabet Learning Team
+ '''
+ send_mail(
+ subject,
+ message,
+ settings.DEFAULT_FROM_EMAIL,
+ [email],
+ fail_silently=False,
+ html_message=html_message
+ )
+ admin_message = f'''
+ Joanna/Matthew,
+
+ {email} has just signed up to the Alphabet Learning contact list. They are awaiting verification.
+
+ {admin_warn}
+
+ I will email again if they follow through with the verification.
+
+ Best regards,
+ The Alphabet Learning Server
+ '''
+ mail_admins(subject, admin_message, fail_silently=False)
+ return email
+
- mail_admins(subject, admin_message, fail_silently=False)
- return render(request, 'payments/verification_sent.html', {
- 'email': email
- })
- return render(request, "pages/home.html") # Adjust as necessary
def verify_email(request, token):
try:
pending = EmailVerification.objects.get(