Skip to main content

Django email confirmation for any Model and any Field.

Project description

django-email-confirm-la

Build Badge Coverage Badge Version Badge

Django email confirmation for any Model and any Field.

Requirements

  • Python (2.6, 2.7, 3.3, 3.4)

  • Django (1.4, 1.5, 1.6, 1.7)

Installation

$ pip install django-email-confirm-la

in your settings.py:

INSTALLED_APPS = (
    ...
    'email_confirm_la',
    ...
)

DEFAULT_FROM_EMAIL = 'hello@your-domain.com'
EMAIL_CONFIRM_LA_HTTP_PROTOCOL = 'http'
EMAIL_CONFIRM_LA_DOMAIN = 'your-domain.com'

If you are using the sites framework, then EMAIL_CONFIRM_LA_DOMAIN can be omitted and Site.objects.get_current().domain will be used.

in your urls.py:

urlpatterns = patterns(
    '',
    url(r'^email_confirmation/', include('email_confirm_la.urls')),
    ...
)

then run

$ python manage.py syncdb
$ python manage.py migrate

Models

For User Model

from django.contrib.auth.models import User
from email_confirm_la.models import EmailConfirmation

user = User.objects.get(username='vinta')
unconfirmed_email = 'vinta.chen@gmail.com'

email_confirmation = EmailConfirmation.objects.set_email_for_object(
    email=unconfirmed_email,
    content_object=user,
)

For Any Model And Any Field

assumed you have a model:

from django.db import models

class YourModel(models.Model):
    ...
    customer_support_email = models.EmailField(max_length=255, null=True, blank=True)
    marketing_email = models.EmailField(max_length=255, null=True, blank=True)
    ...

and you want to confirm some emails:

from your_app.models import YourModel
from email_confirm_la.models import EmailConfirmation

some_model_instance = YourModel.objects.get(id=42)

email_confirmation = EmailConfirmation.objects.set_email_for_object(
    email='marvin@therestaurantattheendoftheuniverse.com',
    content_object=some_model_instance,
    email_field_name='customer_support_email'
)

email_confirmation = EmailConfirmation.objects.set_email_for_object(
    email='arthur.dent@therestaurantattheendoftheuniverse.com',
    content_object=some_model_instance,
    email_field_name='marketing_email'
)

Signals

  • post_email_confirmation_send

  • post_email_confirm

  • post_email_save

you can do something like:

from django.dispatch import receiver
from email_confirm_la.signals import post_email_confirm

@receiver(post_email_confirm)
def post_email_confirm_callback(sender, confirmation, **kwargs):
    model_instace = confirmation.content_object
    email = confirmation.email

    do_stuff()

Commands

$ python manage.py clear_expired_email_confirmations

Settings

Default values of app settings:

EMAIL_CONFIRM_LA_HTTP_PROTOCOL = 'http'
EMAIL_CONFIRM_LA_DOMAIN = ''
EMAIL_CONFIRM_LA_CONFIRM_EXPIRE_SEC = 60 * 60 * 24 * 1  # 1 day
EMAIL_CONFIRM_LA_CONFIRM_URL_REVERSE_NAME = 'confirm_email'
EMAIL_CONFIRM_LA_SAVE_EMAIL_TO_INSTANCE = True

Run Tests

$ pip install -r requirements_test.txt
$ python setup.py test

History

0.2.1 (2014-11-09)

  • Django 1.6 compatibility: transaction.atomic

  • Django 1.4 compatibility: update_fields

0.2.0 (2014-11-08)

  • Django 1.7 compatibility: migrations

0.1.0 (2014-10-31)

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-email-confirm-la-0.2.1.tar.gz (14.3 kB view details)

Uploaded Source

File details

Details for the file django-email-confirm-la-0.2.1.tar.gz.

File metadata

File hashes

Hashes for django-email-confirm-la-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5caecf0136c2501cb165f4cb0a72b6e94adbfcfb4bec253ba48a79a23411825d
MD5 e518a3c1120a119fadbf77a309165660
BLAKE2b-256 226454553b29bfc5f99407f2e49e705135cde6f43350cee3e26097b735cfc7a2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page