mirror of https://github.com/django/django.git
Fixed #11400 -- Passed kwargs from AbstractUser.email_user() to send_mail()
Thanks Jug_ for suggestion, john_scott for the initial patch, and Tim Graham for code review.
This commit is contained in:
parent
4eeb8ec147
commit
71c491972e
1
AUTHORS
1
AUTHORS
|
@ -575,6 +575,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Aaron Swartz <http://www.aaronsw.com/>
|
Aaron Swartz <http://www.aaronsw.com/>
|
||||||
Ville Säävuori <http://www.unessa.net/>
|
Ville Säävuori <http://www.unessa.net/>
|
||||||
Mart Sõmermaa <http://mrts.pri.ee/>
|
Mart Sõmermaa <http://mrts.pri.ee/>
|
||||||
|
Susan Tan <susan.tan.fleckerl@gmail.com>
|
||||||
Christian Tanzer <tanzer@swing.co.at>
|
Christian Tanzer <tanzer@swing.co.at>
|
||||||
Tyler Tarabula <tyler.tarabula@gmail.com>
|
Tyler Tarabula <tyler.tarabula@gmail.com>
|
||||||
Tyson Tate <tyson@fallingbullets.com>
|
Tyson Tate <tyson@fallingbullets.com>
|
||||||
|
|
|
@ -400,11 +400,11 @@ class AbstractUser(AbstractBaseUser, PermissionsMixin):
|
||||||
"Returns the short name for the user."
|
"Returns the short name for the user."
|
||||||
return self.first_name
|
return self.first_name
|
||||||
|
|
||||||
def email_user(self, subject, message, from_email=None):
|
def email_user(self, subject, message, from_email=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Sends an email to this User.
|
Sends an email to this User.
|
||||||
"""
|
"""
|
||||||
send_mail(subject, message, from_email, [self.email])
|
send_mail(subject, message, from_email, [self.email], **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class User(AbstractUser):
|
class User(AbstractUser):
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.models import Group, User, UserManager
|
from django.contrib.auth.models import AbstractUser, Group, User, UserManager
|
||||||
from django.contrib.auth.tests.utils import skipIfCustomUser
|
from django.contrib.auth.tests.utils import skipIfCustomUser
|
||||||
|
from django.core import mail
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.test.utils import override_settings
|
from django.test.utils import override_settings
|
||||||
|
@ -73,6 +74,29 @@ class UserManagerTestCase(TestCase):
|
||||||
User.objects.create_user, username='')
|
User.objects.create_user, username='')
|
||||||
|
|
||||||
|
|
||||||
|
class AbstractUserTestCase(TestCase):
|
||||||
|
def test_email_user(self):
|
||||||
|
# valid send_mail parameters
|
||||||
|
kwargs = {
|
||||||
|
"fail_silently": False,
|
||||||
|
"auth_user": None,
|
||||||
|
"auth_password": None,
|
||||||
|
"connection": None,
|
||||||
|
"html_message": None,
|
||||||
|
}
|
||||||
|
abstract_user = AbstractUser(email='foo@bar.com')
|
||||||
|
abstract_user.email_user(subject="Subject here",
|
||||||
|
message="This is a message", from_email="from@domain.com", **kwargs)
|
||||||
|
# Test that one message has been sent.
|
||||||
|
self.assertEqual(len(mail.outbox), 1)
|
||||||
|
# Verify that test email contains the correct attributes:
|
||||||
|
message = mail.outbox[0]
|
||||||
|
self.assertEqual(message.subject, "Subject here")
|
||||||
|
self.assertEqual(message.body, "This is a message")
|
||||||
|
self.assertEqual(message.from_email, "from@domain.com")
|
||||||
|
self.assertEqual(message.to, [abstract_user.email])
|
||||||
|
|
||||||
|
|
||||||
class IsActiveTestCase(TestCase):
|
class IsActiveTestCase(TestCase):
|
||||||
"""
|
"""
|
||||||
Tests the behavior of the guaranteed is_active attribute
|
Tests the behavior of the guaranteed is_active attribute
|
||||||
|
|
|
@ -215,11 +215,16 @@ Methods
|
||||||
(the Django app label). If the user is inactive, this method will
|
(the Django app label). If the user is inactive, this method will
|
||||||
always return ``False``.
|
always return ``False``.
|
||||||
|
|
||||||
.. method:: email_user(subject, message, from_email=None)
|
.. method:: email_user(subject, message, from_email=None, **kwargs)
|
||||||
|
|
||||||
Sends an email to the user. If ``from_email`` is ``None``, Django uses
|
Sends an email to the user. If ``from_email`` is ``None``, Django uses
|
||||||
the :setting:`DEFAULT_FROM_EMAIL`.
|
the :setting:`DEFAULT_FROM_EMAIL`.
|
||||||
|
|
||||||
|
.. versionchanged:: 1.7
|
||||||
|
|
||||||
|
Any ``**kwargs`` are passed to the underlying
|
||||||
|
:meth:`~django.core.mail.send_mail()` call.
|
||||||
|
|
||||||
Manager methods
|
Manager methods
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,10 @@ Minor features
|
||||||
Each radio button or checkbox includes an ``id_for_label`` attribute to
|
Each radio button or checkbox includes an ``id_for_label`` attribute to
|
||||||
output the element's ID.
|
output the element's ID.
|
||||||
|
|
||||||
|
* Any ``**kwargs`` passed to
|
||||||
|
:meth:`~django.contrib.auth.models.User.email_user()` are passed to the
|
||||||
|
underlying :meth:`~django.core.mail.send_mail()` call.
|
||||||
|
|
||||||
Backwards incompatible changes in 1.7
|
Backwards incompatible changes in 1.7
|
||||||
=====================================
|
=====================================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue