Skip to main content

Allow everybody to unsubscribe your messages, user accounts are not required.

Project description

https://img.shields.io/pypi/v/django-opt-out.svg https://img.shields.io/travis/wooyek/django-opt-out.svg Documentation Status Coveralls.io coverage CodeCov coverage Maintainability License Tweet about this project https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg

Allow everybody to unsubscribe your messages, user accounts are not required.

Features

  • A single page form for opt-out feedback submission

  • Feedback options text controlled from django admin

  • Predefined feedback defaults available from django manage command

  • Feedback translations done in django admin

  • Feedback options selection based on tags supplied to the opt-out url

  • Ability to preselect a feedback option

  • Ability to change selected feedback options after submission

  • Ability to set tag:value pair on opt-out url and store them on submission with user feedback

  • Signal to modify opt-out form before rendering

  • Signal on opt-out feedback submission

  • Easily overridable thank you / goodbye view

  • Opt-out form with a easily overridable base template

Demo

To run an example project for this django reusable app, click the button below and start a demo serwer on Heroku

Deploy Django Opt-out example project to Heroku Deploy Django Opt-out example project to Heroku

Quickstart

Install Django Opt-out application:

pip install django-opt-out

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'django_opt_out.apps.DjangoOptOutConfig',
    ...
)

Add Django Opt-out application’s URL patterns:

from django_opt_out import urls as django_opt_out_urls


urlpatterns = [
    ...
    url(r'^', include(django_opt_out_urls)),
    ...
]

Add unsubscribe links to your emails:

from django_opt_out.utils import get_opt_out_path
email='Django Opt-out <django-opt-out@niepodam.pl>'
unsubscribe = get_opt_out_path(email, 'some', 'tags', 'controlling', 'questionnaire')

# unsubscribe link will not have a domain name and scheme
# you can build prefix from request, but I prefer to set it in settings
from django.conf import settings
unsubscribe = settings.BASE_URL + unsubscribe
body = 'Hello, Regards\n\nUnsubscribe: ' + unsubscribe

from django.core import mail
message = mail.EmailMultiAlternatives(body=body, to=[email])
message.extra_headers['List-Unsubscribe'] = "<{}>".format(unsubscribe)
message.send()

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox

Credits

This package was created with Cookiecutter and the wooyek/cookiecutter-django-app project template.

History

0.1.0 (2017-11-03)

  • First release on PyPI.

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-opt-out-0.9.4.tar.gz (197.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_opt_out-0.9.4-py2.py3-none-any.whl (33.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django-opt-out-0.9.4.tar.gz.

File metadata

  • Download URL: django-opt-out-0.9.4.tar.gz
  • Upload date:
  • Size: 197.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for django-opt-out-0.9.4.tar.gz
Algorithm Hash digest
SHA256 99d64a74de03eab0408cc4779b18b81386d1e785bf9e32d0ee633ad868ce78d7
MD5 7a75cde8b67fad88ebe6a2d63ccd2a6c
BLAKE2b-256 3de4431353adad31257a39ced88bcb5576d588e542c47cd019d25b4f69d7f617

See more details on using hashes here.

File details

Details for the file django_opt_out-0.9.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_opt_out-0.9.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a911ab78e01b3b65c13eb1e616adf14b78887ecd05e4a20f7c6e55cd4ded4c1f
MD5 64df3232a2a23a2b9493540284ded303
BLAKE2b-256 84000c9431d70c536633c48316ab7d53b9adb996d411277a186defc3a233c53c

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