diff options
| author | SusanTan <onceuponatimeforever@gmail.com> | 2013-08-10 01:13:41 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-08-14 07:46:11 -0400 |
| commit | 71c491972eecae8783cf46e69fac7e5f9f83fc59 (patch) | |
| tree | 25ef048d6b7a3134e6f480dc2484df5b5a052deb | |
| parent | 4eeb8ec147022d3a7360d9fa78d3cd1c76accfb1 (diff) | |
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.
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/contrib/auth/models.py | 4 | ||||
| -rw-r--r-- | django/contrib/auth/tests/test_models.py | 26 | ||||
| -rw-r--r-- | docs/ref/contrib/auth.txt | 7 | ||||
| -rw-r--r-- | docs/releases/1.7.txt | 4 |
5 files changed, 38 insertions, 4 deletions
@@ -575,6 +575,7 @@ answer newbie questions, and generally made Django that much better: Aaron Swartz <http://www.aaronsw.com/> Ville Säävuori <http://www.unessa.net/> Mart Sõmermaa <http://mrts.pri.ee/> + Susan Tan <susan.tan.fleckerl@gmail.com> Christian Tanzer <tanzer@swing.co.at> Tyler Tarabula <tyler.tarabula@gmail.com> Tyson Tate <tyson@fallingbullets.com> diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py index cf3d37e5c3..cf1ca8ca1f 100644 --- a/django/contrib/auth/models.py +++ b/django/contrib/auth/models.py @@ -400,11 +400,11 @@ class AbstractUser(AbstractBaseUser, PermissionsMixin): "Returns the short name for the user." 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. """ - send_mail(subject, message, from_email, [self.email]) + send_mail(subject, message, from_email, [self.email], **kwargs) class User(AbstractUser): diff --git a/django/contrib/auth/tests/test_models.py b/django/contrib/auth/tests/test_models.py index fa20775a8d..1373a3c1c1 100644 --- a/django/contrib/auth/tests/test_models.py +++ b/django/contrib/auth/tests/test_models.py @@ -1,6 +1,7 @@ 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.core import mail from django.db.models.signals import post_save from django.test import TestCase from django.test.utils import override_settings @@ -73,6 +74,29 @@ class UserManagerTestCase(TestCase): 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): """ Tests the behavior of the guaranteed is_active attribute diff --git a/docs/ref/contrib/auth.txt b/docs/ref/contrib/auth.txt index 4fe87e9872..ba4c9425a5 100644 --- a/docs/ref/contrib/auth.txt +++ b/docs/ref/contrib/auth.txt @@ -215,11 +215,16 @@ Methods (the Django app label). If the user is inactive, this method will 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 the :setting:`DEFAULT_FROM_EMAIL`. + .. versionchanged:: 1.7 + + Any ``**kwargs`` are passed to the underlying + :meth:`~django.core.mail.send_mail()` call. + Manager methods --------------- diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt index 9fe8fc89df..f4bbd058d6 100644 --- a/docs/releases/1.7.txt +++ b/docs/releases/1.7.txt @@ -152,6 +152,10 @@ Minor features Each radio button or checkbox includes an ``id_for_label`` attribute to 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 ===================================== |
