A Django app providing simple email confirmation.
This app can be used to support three different ways of organizing your Users their email address(es). Each email address can be in a confirmed/unconfirmed state.
- Users have one email address that is stored on the User
- Users have one primary email address stored on the User model, and have N secondary emails stored in EmailAddress objects
- Users have N email addresses stored in EmailAddress objects.
Create a new User, confirm their email:
email = 'original@here.com'
user = User.objects.create_user(email, email=email)
user.is_confirmed # False
send_email(email, 'Use %s to confirm your email' % user.confirmation_key)
# User gets email, passes the confirmation_key back to your server
user.confirm_email(user.confirmation_key)
user.is_confirmed # True
Add another email to an existing User, confirm it, then set it as their primary.
new_email = 'newaddr@nowhere.com'
confirmation_key = user.add_unconfirmed_email(new_email)
new_email in user.unconfirmed_emails # True
send_email(new_email, 'Use %s to confirm your new email' % confirmation_key)
# User gets email, passes the confirmation_key back to your server
user.confirm_email(confirmation_key)
new_email in user.confirmed_emails # True
user.set_primary_email(new_email)
user.email # newaddr@nowhere.com
-
pip install django-simple-email-confirmation
Add simple_email_confirmation to your settings.INSTALLED_APPS:
INSTALLED_APPS = ( ... simple_email_confirmation, ... )
Add the provided mixin to your django 1.5+ custom user model:
from django.contrib.auth.models import AbstractUser from simple_email_confirmation import SimpleEmailConfirmationUserMixin class User(SimpleEmailConfirmationUserMixin, AbstractUser): pass
Note: you don't strictly have to do this final step. Without this, you won't have the nice helper functions and properties on your User objects but the remainder of the app should function fine.
Using Doug Hellman's virtualenvwrapper:
mktmpenv
pip install django-simple-email-confirmation
export DJANGO_SETTINGS_MODULE=simple_email_confirmation.test_project.settings
django-admin.py test simple_email_confirmation
To file a bug or submit a patch, please head over to django-simple-email-confirmation on github.
Originally adapted from Pinax's django-email-confirmation, which was originally adapted from James Tauber's django-email-confirmation.