From f7a9e0a1f9140d97d1e888332d719d36532ee340 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 19 Jan 2022 18:10:30 +0000 Subject: [PATCH] Remove the manual intervention step for account creation. Commit ready for merge. - Legacy-Id: 19858 --- ietf/ietfauth/tests.py | 29 ++++++++++++++++++----------- ietf/ietfauth/views.py | 31 ++++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/ietf/ietfauth/tests.py b/ietf/ietfauth/tests.py index 53524b786..bcd1d45a0 100644 --- a/ietf/ietfauth/tests.py +++ b/ietf/ietfauth/tests.py @@ -27,6 +27,7 @@ from urllib.parse import urlsplit from django.urls import reverse as urlreverse from django.contrib.auth.models import User from django.conf import settings +from django.template.loader import render_to_string import debug # pyflakes:ignore @@ -138,20 +139,26 @@ class IetfAuthTests(TestCase): return False - def test_create_account_failure(self): +# For the lowered barrier to account creation period, we are disabling this kind of failure + # def test_create_account_failure(self): - url = urlreverse(ietf.ietfauth.views.create_account) + # url = urlreverse(ietf.ietfauth.views.create_account) - # get - r = self.client.get(url) - self.assertEqual(r.status_code, 200) + # # get + # r = self.client.get(url) + # self.assertEqual(r.status_code, 200) - # register email and verify failure - email = 'new-account@example.com' - empty_outbox() - r = self.client.post(url, { 'email': email }) - self.assertEqual(r.status_code, 200) - self.assertContains(r, "Additional Assistance Required") + # # register email and verify failure + # email = 'new-account@example.com' + # empty_outbox() + # r = self.client.post(url, { 'email': email }) + # self.assertEqual(r.status_code, 200) + # self.assertContains(r, "Additional Assistance Required") + +# Rather than delete the failure template just yet, here's a test to make sure it still renders should we need to revert to it. + def test_create_account_failure_template(self): + r = render_to_string('registration/manual.html', { 'account_request_email': settings.ACCOUNT_REQUEST_EMAIL }) + self.assertTrue("Additional Assistance Required" in r) def register_and_verify(self, email): url = urlreverse(ietf.ietfauth.views.create_account) diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py index 3cfa9f8bc..d03bcd595 100644 --- a/ietf/ietfauth/views.py +++ b/ietf/ietfauth/views.py @@ -36,7 +36,9 @@ import importlib -from datetime import datetime as DateTime, timedelta as TimeDelta, date as Date +from datetime import date as Date +# needed if we revert to higher barrier for account creation +#from datetime import datetime as DateTime, timedelta as TimeDelta, date as Date from collections import defaultdict import django.core.signing @@ -65,7 +67,9 @@ from ietf.ietfauth.forms import ( RegistrationForm, PasswordForm, ResetPasswordF NewEmailForm, ChangeUsernameForm, PersonPasswordForm) from ietf.ietfauth.htpasswd import update_htpasswd_file from ietf.ietfauth.utils import role_required, has_role -from ietf.mailinglists.models import Subscribed, Whitelisted +from ietf.mailinglists.models import Whitelisted +# needed if we revert to higher barrier for account creation +#from ietf.mailinglists.models import Subscribed, Whitelisted from ietf.name.models import ExtResourceName from ietf.nomcom.models import NomCom from ietf.person.models import Person, Email, Alias, PersonalApiKey, PERSON_API_KEY_VALUES @@ -76,6 +80,9 @@ from ietf.utils.decorators import person_required from ietf.utils.mail import send_mail from ietf.utils.validators import validate_external_resource_value +# These are needed if we revert to the higher bar for account creation + + def index(request): return render(request, 'registration/index.html') @@ -114,13 +121,19 @@ def create_account(request): form = RegistrationForm(request.POST) if form.is_valid(): to_email = form.cleaned_data['email'] # This will be lowercase if form.is_valid() - existing = Subscribed.objects.filter(email=to_email).first() - ok_to_create = ( Whitelisted.objects.filter(email=to_email).exists() - or existing and (existing.time + TimeDelta(seconds=settings.LIST_ACCOUNT_DELAY)) < DateTime.now() ) - if ok_to_create: - send_account_creation_email(request, to_email) - else: - return render(request, 'registration/manual.html', { 'account_request_email': settings.ACCOUNT_REQUEST_EMAIL }) + + # For the IETF 113 Registration period (at least) we are lowering the barriers for account creation + # to the simple email round-trip check + send_account_creation_email(request, to_email) + + # The following is what to revert to should that lowered barrier prove problematic + # existing = Subscribed.objects.filter(email=to_email).first() + # ok_to_create = ( Whitelisted.objects.filter(email=to_email).exists() + # or existing and (existing.time + TimeDelta(seconds=settings.LIST_ACCOUNT_DELAY)) < DateTime.now() ) + # if ok_to_create: + # send_account_creation_email(request, to_email) + # else: + # return render(request, 'registration/manual.html', { 'account_request_email': settings.ACCOUNT_REQUEST_EMAIL }) else: form = RegistrationForm()