in src/olympia/devhub/views.py [0:0]
def email_verification(request):
data = {'state': None}
email_verification = request.user.email_verification
suppressed_email = request.user.suppressed_email
if not waffle.switch_is_active('suppressed-email'):
return redirect('devhub.addons')
if request.method == 'POST':
if email_verification:
email_verification.delete()
if suppressed_email:
email_verification = SuppressedEmailVerification.objects.create(
suppressed_email=suppressed_email
)
send_suppressed_email_confirmation.delay(email_verification.id)
return redirect('devhub.email_verification')
if email_verification:
data['render_table'] = True
data['found_emails'] = check_suppressed_email_confirmation(email_verification)
if email_verification.is_expired:
data['state'] = VERIFY_EMAIL_STATE['verification_expired']
elif code := request.GET.get('code'):
if code == email_verification.confirmation_code:
suppressed_email.delete()
send_mail_jinja(
gettext('Your email has been verified'),
'devhub/emails/verify-email-completed.ltxt',
{},
recipient_list=[request.user.email],
)
return redirect('devhub.email_verification')
else:
data['state'] = VERIFY_EMAIL_STATE['confirmation_invalid']
elif email_verification.is_timedout:
data['state'] = VERIFY_EMAIL_STATE['verification_timedout']
else:
if (
email_verification.reload().status
== SuppressedEmailVerification.STATUS_CHOICES.Delivered
):
data['state'] = VERIFY_EMAIL_STATE['confirmation_pending']
data['render_table'] = False
else:
data['state'] = VERIFY_EMAIL_STATE['verification_pending']
elif suppressed_email:
data['state'] = VERIFY_EMAIL_STATE['email_suppressed']
else:
data['state'] = VERIFY_EMAIL_STATE['email_verified']
if data['state'] is None:
raise Exception('Invalid view must result in assigned state')
if data['state'] in RENDER_BUTTON_STATES:
data['render_button'] = True
data['button_text'] = get_button_text(data['state'])
return TemplateResponse(request, 'devhub/verify_email.html', context=data)