diff options
-rw-r--r-- | apps/patchwork/models.py | 9 | ||||
-rw-r--r-- | apps/patchwork/tests/mboxviews.py | 30 |
2 files changed, 38 insertions, 1 deletions
diff --git a/apps/patchwork/models.py b/apps/patchwork/models.py index 75dc041..70003e0 100644 --- a/apps/patchwork/models.py +++ b/apps/patchwork/models.py @@ -32,6 +32,7 @@ import random try: from email.mime.nonmultipart import MIMENonMultipart from email.encoders import encode_7or8bit + from email.parser import HeaderParser import email.utils except ImportError: # Python 2.4 compatibility @@ -269,8 +270,14 @@ class Patch(models.Model): mail['Message-Id'] = self.msgid mail.set_unixfrom('From patchwork ' + self.date.ctime()) - return mail + copied_headers = ['To', 'Cc'] + orig_headers = HeaderParser().parsestr(str(self.headers)) + for header in copied_headers: + if header in orig_headers: + mail[header] = orig_headers[header] + + return mail @models.permalink def get_absolute_url(self): diff --git a/apps/patchwork/tests/mboxviews.py b/apps/patchwork/tests/mboxviews.py index a7729d8..a3c10cf 100644 --- a/apps/patchwork/tests/mboxviews.py +++ b/apps/patchwork/tests/mboxviews.py @@ -77,3 +77,33 @@ class MboxPatchSplitResponseTest(TestCase): response = self.client.get('/patch/%d/mbox/' % self.patch.id) self.assertContains(response, 'Acked-by: 1\nAcked-by: 2\n') + +class MboxPassThroughHeaderTest(TestCase): + """ Test that we see 'Cc' and 'To' headers passed through from original + message to mbox view """ + + def setUp(self): + defaults.project.save() + self.person = defaults.patch_author_person + self.person.save() + + self.cc_header = 'Cc: CC Person <cc@example.com>' + self.to_header = 'To: To Person <to@example.com>' + + self.patch = Patch(project = defaults.project, + msgid = 'p1', name = 'testpatch', + submitter = self.person, content = '') + + def testCCHeader(self): + self.patch.headers = self.cc_header + '\n' + self.patch.save() + + response = self.client.get('/patch/%d/mbox/' % self.patch.id) + self.assertContains(response, self.cc_header) + + def testToHeader(self): + self.patch.headers = self.to_header + '\n' + self.patch.save() + + response = self.client.get('/patch/%d/mbox/' % self.patch.id) + self.assertContains(response, self.to_header) |