from django.contrib.auth.tokens import default_token_generator from django.contrib.sites.models import Site from django.core.mail import send_mail from django.template import loader from django.template.context import Context from django.utils.http import int_to_base36 from django.utils.translation import ugettext_lazy as _ def reset(user, domain_override=None, email_template_name='registration/password_reset_email.html', use_https=False, token_generator=default_token_generator): """Reset users password""" if not user.email: raise ValueError('Email address is required to send an email') if not domain_override: current_site = Site.objects.get_current() site_name = current_site.name domain = current_site.domain else: site_name = domain = domain_override t = loader.get_template(email_template_name) c = { 'email': user.email, 'domain': domain, 'site_name': site_name, 'uid': int_to_base36(user.id), 'user': user, 'token': token_generator.make_token(user), 'protocol': use_https and 'https' or 'http', } send_mail(_("Your account for %s") % site_name, t.render(Context(c)), None, [user.email])