|
32 | 32 |
|
33 | 33 | # Copyright The IETF Trust 2007, All Rights Reserved |
34 | 34 |
|
| 35 | +from datetime import datetime as DateTime, timedelta as TimeDelta |
| 36 | + |
35 | 37 | from django.conf import settings |
36 | 38 | from django.http import Http404 #, HttpResponse, HttpResponseRedirect |
37 | 39 | from django.shortcuts import render, redirect, get_object_or_404 |
|
42 | 44 | from django.contrib.sites.models import Site |
43 | 45 | from django.contrib.auth.models import User |
44 | 46 |
|
| 47 | +import debug # pyflakes:ignore |
| 48 | + |
45 | 49 | from ietf.group.models import Role |
46 | | -from ietf.ietfauth.forms import RegistrationForm, PasswordForm, ResetPasswordForm, TestEmailForm |
| 50 | +from ietf.ietfauth.forms import RegistrationForm, PasswordForm, ResetPasswordForm, TestEmailForm, WhitelistForm |
47 | 51 | from ietf.ietfauth.forms import get_person_form, RoleEmailForm, NewEmailForm |
48 | 52 | from ietf.ietfauth.htpasswd import update_htpasswd_file |
| 53 | +from ietf.ietfauth.utils import role_required |
| 54 | +from ietf.mailinglists.models import Subscribed, Whitelisted |
49 | 55 | from ietf.person.models import Person, Email, Alias |
50 | 56 | from ietf.utils.mail import send_mail |
51 | 57 |
|
@@ -85,20 +91,25 @@ def create_account(request): |
85 | 91 | if request.method == 'POST': |
86 | 92 | form = RegistrationForm(request.POST) |
87 | 93 | if form.is_valid(): |
88 | | - to_email = form.cleaned_data['email'] |
| 94 | + to_email = form.cleaned_data['email'] # This will be lowercase if form.is_valid() |
| 95 | + existing = Subscribed.objects.filter(address=to_email).first() |
| 96 | + ok_to_create = ( Whitelisted.objects.filter(address=to_email).exists() |
| 97 | + or existing and (existing.time + TimeDelta(seconds=settings.LIST_ACCOUNT_DELAY)) < DateTime.now() ) |
| 98 | + if ok_to_create: |
| 99 | + auth = django.core.signing.dumps(to_email, salt="create_account") |
89 | 100 |
|
90 | | - auth = django.core.signing.dumps(to_email, salt="create_account") |
91 | | - |
92 | | - domain = Site.objects.get_current().domain |
93 | | - subject = 'Confirm registration at %s' % domain |
94 | | - from_email = settings.DEFAULT_FROM_EMAIL |
| 101 | + domain = Site.objects.get_current().domain |
| 102 | + subject = 'Confirm registration at %s' % domain |
| 103 | + from_email = settings.DEFAULT_FROM_EMAIL |
95 | 104 |
|
96 | | - send_mail(request, to_email, from_email, subject, 'registration/creation_email.txt', { |
97 | | - 'domain': domain, |
98 | | - 'auth': auth, |
99 | | - 'username': to_email, |
100 | | - 'expire': settings.DAYS_TO_EXPIRE_REGISTRATION_LINK, |
101 | | - }) |
| 105 | + send_mail(request, to_email, from_email, subject, 'registration/creation_email.txt', { |
| 106 | + 'domain': domain, |
| 107 | + 'auth': auth, |
| 108 | + 'username': to_email, |
| 109 | + 'expire': settings.DAYS_TO_EXPIRE_REGISTRATION_LINK, |
| 110 | + }) |
| 111 | + else: |
| 112 | + return render(request, 'registration/manual.html', { 'account_request_email': settings.ACCOUNT_REQUEST_EMAIL }) |
102 | 113 | else: |
103 | 114 | form = RegistrationForm() |
104 | 115 |
|
@@ -359,3 +370,22 @@ def test_email(request): |
359 | 370 | r.set_cookie("testmailcc", cookie) |
360 | 371 |
|
361 | 372 | return r |
| 373 | + |
| 374 | +@role_required('Secretariat') |
| 375 | +def add_account_whitelist(request): |
| 376 | + success = False |
| 377 | + if request.method == 'POST': |
| 378 | + form = WhitelistForm(request.POST) |
| 379 | + if form.is_valid(): |
| 380 | + address = form.cleaned_data['address'] |
| 381 | + entry = Whitelisted(address=address, by=request.user.person) |
| 382 | + entry.save() |
| 383 | + success = True |
| 384 | + else: |
| 385 | + form = WhitelistForm() |
| 386 | + |
| 387 | + return render(request, 'ietfauth/whitelist_form.html', { |
| 388 | + 'form': form, |
| 389 | + 'success': success, |
| 390 | + }) |
| 391 | + |
0 commit comments