From 55d36e284da67e949775cb37da69f770b99cb446 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Jun 2017 22:40:11 +0000 Subject: [PATCH] Changed the '%s <%s>'%(name,email) idiom in several places to use email.utils.formataddr() instead, to avoid future problems with names that would need quotes. Added comments in 2 places where this change would not be appropriate. - Legacy-Id: 13536 --- ietf/group/models.py | 7 ++++++- ietf/mailtrigger/models.py | 2 +- ietf/person/models.py | 6 +++++- ietf/submit/tests.py | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ietf/group/models.py b/ietf/group/models.py index c49abc37a..5d3814491 100644 --- a/ietf/group/models.py +++ b/ietf/group/models.py @@ -278,7 +278,12 @@ class Role(models.Model): return u"%s is %s in %s" % (self.person.plain_name(), self.name.name, self.group.acronym or self.group.name) def name_and_email(self): - "Returns name and email, e.g.: u'Ano Nymous ' " + """ + Returns name and email, e.g.: u'Ano Nymous ' + Is intended for display use, not in email context. + Use self.formatted_email() for that. + """ + unreachable() if self.person: return u"%s <%s>" % (self.person.plain_name(), self.email.address) else: diff --git a/ietf/mailtrigger/models.py b/ietf/mailtrigger/models.py index 16952064f..3526d4ab4 100644 --- a/ietf/mailtrigger/models.py +++ b/ietf/mailtrigger/models.py @@ -181,7 +181,7 @@ class Recipient(models.Model): addrs = [] if 'submission' in kwargs: submission = kwargs['submission'] - addrs.extend(["%s <%s>" % (author["name"], author["email"]) for author in submission.authors if author.get("email")]) + addrs.extend([ email.utils.formataddr((author["name"], author["email"])) for author in submission.authors if author.get("email")]) return addrs def gather_submission_group_chairs(self, **kwargs): diff --git a/ietf/person/models.py b/ietf/person/models.py index c2c0d8e2e..e29e07826 100644 --- a/ietf/person/models.py +++ b/ietf/person/models.py @@ -243,7 +243,11 @@ class Email(models.Model): return self.address def name_and_email(self): - "Returns name and email, e.g.: u'Ano Nymous ' " + """ + Returns name and email, e.g.: u'Ano Nymous ' + Is intended for display use, not in email context. + Use self.formatted_email() for that. + """ if self.person: return u"%s <%s>" % (self.person.plain_name(), self.address) else: diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index f960c97c4..ce93184bb 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -153,7 +153,7 @@ class SubmitTests(TestCase): if r.status_code == 302: submission = Submission.objects.get(name=name) - self.assertEqual(submission.submitter, u"%s <%s>" % (submitter_name, submitter_email)) + self.assertEqual(submission.submitter, email.utils.formataddr((submitter_name, submitter_email))) self.assertEqual(submission.replaces, ",".join(d.name for d in DocAlias.objects.filter(pk__in=replaces.split(",") if replaces else []))) return r @@ -1464,6 +1464,6 @@ Subject: test if r.status_code == 302: submission = Submission.objects.get(name=name) - self.assertEqual(submission.submitter, u"%s <%s>" % (submitter_name, submitter_email)) + self.assertEqual(submission.submitter, email.utils.formataddr((submitter_name, submitter_email))) return r