Skip to content

Commit 7d8736d

Browse files
committed
Merged in [15153] from rjsparks@nostrum.com:
Changed how the mail utilities handle lists in their override and extra arguments. Added a test for send_mail_preformatted exercising override and extra. - Legacy-Id: 15157 Note: SVN reference [15153] has been migrated to Git commit 25e9893
2 parents 1420c79 + 25e9893 commit 7d8736d

2 files changed

Lines changed: 69 additions & 3 deletions

File tree

ietf/utils/mail.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,15 +302,21 @@ def parse_preformatted(preformatted, extra={}, override={}):
302302
for k, v in override.iteritems():
303303
if k in msg:
304304
del msg[k]
305-
msg[k] = v
305+
if isinstance(v, list):
306+
msg[k] = ', '.join(v)
307+
else:
308+
msg[k] = v
306309

307310
headers = copy.copy(msg)
308311
for key in ['To', 'From', 'Subject', 'Bcc']:
309312
del headers[key]
310313
for k, v in extra.iteritems():
311314
if k in headers:
312315
del headers[k]
313-
headers[k] = v
316+
if isinstance(v, list):
317+
headers[k] = ', '.join(v)
318+
else:
319+
headers[k] = v
314320

315321
bcc = msg['Bcc']
316322
del msg['Bcc']

ietf/utils/tests.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from ietf.group.models import Group
3030
from ietf.submit.tests import submission_file
3131
from ietf.utils.draft import Draft, getmeta
32-
from ietf.utils.mail import send_mail_text, send_mail_mime, outbox
32+
from ietf.utils.mail import send_mail_preformatted, send_mail_text, send_mail_mime, outbox
3333
from ietf.utils.management.commands import pyflakes
3434
from ietf.utils.test_data import make_test_data
3535
from ietf.utils.test_runner import get_template_paths, set_coverage_checking
@@ -54,6 +54,66 @@ def test_pyflakes(self):
5454
warnings = pyflakes.checkPaths([path], verbosity=0)
5555
self.assertEqual([], [str(w) for w in warnings])
5656

57+
class SendingMail(TestCase):
58+
59+
def test_send_mail_preformatted(self):
60+
msg = """To: to1@example.com, to2@example.com
61+
From: from1@example.com, from2@example.com
62+
Cc: cc1@example.com, cc2@example.com
63+
Bcc: bcc1@example.com, bcc2@example.com
64+
Subject: subject
65+
66+
body
67+
"""
68+
send_mail_preformatted(None, msg, {}, {})
69+
recv = outbox[-1]
70+
self.assertEqual(recv['To'], '<to1@example.com>, <to2@example.com>')
71+
self.assertEqual(recv['From'], 'from1@example.com, from2@example.com')
72+
self.assertEqual(recv['Cc'], 'cc1@example.com, cc2@example.com')
73+
self.assertEqual(recv['Bcc'], None)
74+
self.assertEqual(recv['Subject'], 'subject')
75+
self.assertEqual(recv.get_payload(), 'body\n')
76+
77+
override = {
78+
'To': 'oto1@example.net, oto2@example.net',
79+
'From': 'ofrom1@example.net, ofrom2@example.net',
80+
'Cc': 'occ1@example.net, occ2@example.net',
81+
'Subject': 'osubject',
82+
}
83+
send_mail_preformatted(request=None, preformatted=msg, extra={}, override=override)
84+
recv = outbox[-1]
85+
self.assertEqual(recv['To'], '<oto1@example.net>, <oto2@example.net>')
86+
self.assertEqual(recv['From'], 'ofrom1@example.net, ofrom2@example.net')
87+
self.assertEqual(recv['Cc'], 'occ1@example.net, occ2@example.net')
88+
self.assertEqual(recv['Bcc'], None)
89+
self.assertEqual(recv['Subject'], 'osubject')
90+
self.assertEqual(recv.get_payload(), 'body\n')
91+
92+
override = {
93+
'To': ['<oto1@example.net>', 'oto2@example.net'],
94+
'From': ['<ofrom1@example.net>', 'ofrom2@example.net'],
95+
'Cc': ['<occ1@example.net>', 'occ2@example.net'],
96+
'Subject': 'osubject',
97+
}
98+
send_mail_preformatted(request=None, preformatted=msg, extra={}, override=override)
99+
recv = outbox[-1]
100+
self.assertEqual(recv['To'], '<oto1@example.net>, <oto2@example.net>')
101+
self.assertEqual(recv['From'], '<ofrom1@example.net>, ofrom2@example.net')
102+
self.assertEqual(recv['Cc'], '<occ1@example.net>, occ2@example.net')
103+
self.assertEqual(recv['Bcc'], None)
104+
self.assertEqual(recv['Subject'], 'osubject')
105+
self.assertEqual(recv.get_payload(), 'body\n')
106+
107+
extra = {'Fuzz': 'bucket'}
108+
send_mail_preformatted(request=None, preformatted=msg, extra=extra, override={})
109+
recv = outbox[-1]
110+
self.assertEqual(recv['Fuzz'], 'bucket')
111+
112+
extra = {'Fuzz': ['bucket','monger']}
113+
send_mail_preformatted(request=None, preformatted=msg, extra=extra, override={})
114+
recv = outbox[-1]
115+
self.assertEqual(recv['Fuzz'], 'bucket, monger')
116+
57117
class TestSMTPServer(TestCase):
58118

59119
def test_address_rejected(self):

0 commit comments

Comments
 (0)