def reset_password(self, request, queryset, template="password_reset"): domain_override = request.META.get("HTTP_HOST") use_https = request.environ.get("wsgi.url_scheme", "https").lower() == "https" users = [] body = f"registration/{template}_email.html" subject = f"registration/{template}_subject.txt" for user in queryset: form = PasswordResetForm({'email': user.email}) form.full_clean() form.save( domain_override=domain_override, use_https=use_https, email_template_name=body, subject_template_name=subject, ) users.append(user.username) if len(users) > 10: self.message_user(request, _("Email sent to %d users for password reset") % len(users), level=messages.SUCCESS) else: self.message_user(request, _("Email sent to %s for password reset") % ", ".join(users), level=messages.SUCCESS)
def obj_create(self, bundle, **kwargs): """Custom user creation that sends a password reset email.""" value = super(UserResource, self).obj_create(bundle, **kwargs) # Send the password reset email so the user can set its own password. from django.contrib.auth.forms import PasswordResetForm from django.conf import settings form = PasswordResetForm({'email': bundle.obj.email}) form.full_clean() tpl = "account/password_reset_email_for_api_user_creation.html" form.save(email_template_name=tpl, from_email=settings.DEFAULT_FROM_EMAIL) return value
def obj_create(self, bundle, **kwargs): password_form = PasswordResetForm(data=bundle.data) password_form.full_clean() password_form.save()