Source code for django_opt_out.utils

# coding=utf-8
from email.utils import parseaddr

from django.conf import settings
from django.contrib.auth.hashers import check_password, make_password
from django.shortcuts import resolve_url
from six.moves.urllib.parse import urlencode


[docs]def get_opt_out_url(email, base_url=None, *tags): base_url = base_url or settings.OPT_OUT_BASE_URL or '' return base_url + get_opt_out_path(email=email, *tags)
[docs]def get_opt_out_path(email, *tags): password = get_password(email) name, email = parseaddr(email) query = [('email', email), ('tag', tags)] if settings.OUT_OUT_REQUIRE_CONFIRMATION: query.append(('auth', password)) query = urlencode(query, doseq=True) url = resolve_url("django_opt_out:OptOutConfirm") return "?".join((url, query))
[docs]def get_password(email): password = settings.OPT_OUT_SECRET + email return make_password(password, hasher=settings.OPT_OUT_PASSWORD_HASHER)
[docs]def validate_password(email, encoded): password = settings.OPT_OUT_SECRET + email return check_password(password, encoded)