Django email confirmation for any Model and any Field.
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size django-email-confirm-la-0.2.1.tar.gz (14.3 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for django-email-confirm-la-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5caecf0136c2501cb165f4cb0a72b6e94adbfcfb4bec253ba48a79a23411825d |
|
MD5 | e518a3c1120a119fadbf77a309165660 |
|
BLAKE2-256 | 226454553b29bfc5f99407f2e49e705135cde6f43350cee3e26097b735cfc7a2 |