summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/patchwork/models.py9
-rw-r--r--apps/patchwork/tests/mboxviews.py30
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)