Merged in [19858] from rjsparks@nostrum.com:

Remove the manual intervention step for account creation.
 - Legacy-Id: 19860
Note: SVN reference [19858] has been migrated to Git commit f7a9e0a1f9
This commit is contained in:
Robert Sparks 2022-01-19 18:21:05 +00:00
commit 4985bb04f4
2 changed files with 40 additions and 20 deletions

View file

@ -27,6 +27,7 @@ from urllib.parse import urlsplit
from django.urls import reverse as urlreverse from django.urls import reverse as urlreverse
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.conf import settings from django.conf import settings
from django.template.loader import render_to_string
import debug # pyflakes:ignore import debug # pyflakes:ignore
@ -138,20 +139,26 @@ class IetfAuthTests(TestCase):
return False 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 # # get
r = self.client.get(url) # r = self.client.get(url)
self.assertEqual(r.status_code, 200) # self.assertEqual(r.status_code, 200)
# register email and verify failure # # register email and verify failure
email = 'new-account@example.com' # email = 'new-account@example.com'
empty_outbox() # empty_outbox()
r = self.client.post(url, { 'email': email }) # r = self.client.post(url, { 'email': email })
self.assertEqual(r.status_code, 200) # self.assertEqual(r.status_code, 200)
self.assertContains(r, "Additional Assistance Required") # 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): def register_and_verify(self, email):
url = urlreverse(ietf.ietfauth.views.create_account) url = urlreverse(ietf.ietfauth.views.create_account)

View file

@ -36,7 +36,9 @@
import importlib 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 from collections import defaultdict
import django.core.signing import django.core.signing
@ -65,7 +67,9 @@ from ietf.ietfauth.forms import ( RegistrationForm, PasswordForm, ResetPasswordF
NewEmailForm, ChangeUsernameForm, PersonPasswordForm) NewEmailForm, ChangeUsernameForm, PersonPasswordForm)
from ietf.ietfauth.htpasswd import update_htpasswd_file from ietf.ietfauth.htpasswd import update_htpasswd_file
from ietf.ietfauth.utils import role_required, has_role 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.name.models import ExtResourceName
from ietf.nomcom.models import NomCom from ietf.nomcom.models import NomCom
from ietf.person.models import Person, Email, Alias, PersonalApiKey, PERSON_API_KEY_VALUES 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.mail import send_mail
from ietf.utils.validators import validate_external_resource_value 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): def index(request):
return render(request, 'registration/index.html') return render(request, 'registration/index.html')
@ -114,13 +121,19 @@ def create_account(request):
form = RegistrationForm(request.POST) form = RegistrationForm(request.POST)
if form.is_valid(): if form.is_valid():
to_email = form.cleaned_data['email'] # This will be lowercase 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() # For the IETF 113 Registration period (at least) we are lowering the barriers for account creation
or existing and (existing.time + TimeDelta(seconds=settings.LIST_ACCOUNT_DELAY)) < DateTime.now() ) # to the simple email round-trip check
if ok_to_create: send_account_creation_email(request, to_email)
send_account_creation_email(request, to_email)
else: # The following is what to revert to should that lowered barrier prove problematic
return render(request, 'registration/manual.html', { 'account_request_email': settings.ACCOUNT_REQUEST_EMAIL }) # 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: else:
form = RegistrationForm() form = RegistrationForm()