]> git.ozlabs.org Git - patchwork/commitdiff
views/mbox: Use Date: header from original message
authorJeremy Kerr <jk@ozlabs.org>
Mon, 10 Jun 2013 03:50:21 +0000 (11:50 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Mon, 10 Jun 2013 04:00:45 +0000 (12:00 +0800)
Since we use UTC for internal date storage, we lose the timestamp info
from the original patch submissions. This means that the mbox views
(which are typically passed through to SCM commit logs) lose the
timezone information.

This change uses the Date header from the original message, if possible.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
apps/patchwork/tests/mboxviews.py
apps/patchwork/views/__init__.py

index e619e7b35b2014410f80615980fe9a1fc7edef2e..8c469a1ae76787c50b0a52be7dbed4449dff0056 100644 (file)
@@ -93,6 +93,7 @@ class MboxPassThroughHeaderTest(TestCase):
 
         self.cc_header = 'Cc: CC Person <cc@example.com>'
         self.to_header = 'To: To Person <to@example.com>'
+        self.date_header = 'Date: Fri, 7 Jun 2013 15:42:54 +1000'
 
         self.patch = Patch(project = defaults.project,
                            msgid = 'p1', name = 'testpatch',
@@ -112,6 +113,13 @@ class MboxPassThroughHeaderTest(TestCase):
         response = self.client.get('/patch/%d/mbox/' % self.patch.id)
         self.assertContains(response, self.to_header)
 
+    def testDateHeader(self):
+        self.patch.headers = self.date_header + '\n'
+        self.patch.save()
+
+        response = self.client.get('/patch/%d/mbox/' % self.patch.id)
+        self.assertContains(response, self.date_header)
+
 class MboxBrokenFromHeaderTest(TestCase):
     """ Test that a person with characters outside ASCII in his name do
         produce correct From header. As RFC 2822 state we must retain the
index cb35c1fda7f145e3c6854e7ad6916d265117b527..681532a5cfaeb26a86c0f8e1c6211e11cd931f2d 100644 (file)
@@ -195,7 +195,6 @@ def patch_to_mbox(patch):
 
     mail = PatchMbox(body)
     mail['Subject'] = patch.name
-    mail['Date'] = email.utils.formatdate(utc_timestamp)
     mail['From'] = email.utils.formataddr((
                     str(Header(patch.submitter.name, mail.patch_charset)),
                     patch.submitter.email))
@@ -204,10 +203,13 @@ def patch_to_mbox(patch):
     mail.set_unixfrom('From patchwork ' + patch.date.ctime())
 
 
-    copied_headers = ['To', 'Cc']
+    copied_headers = ['To', 'Cc', 'Date']
     orig_headers = HeaderParser().parsestr(str(patch.headers))
     for header in copied_headers:
         if header in orig_headers:
             mail[header] = orig_headers[header]
 
+    if 'Date' not in mail:
+        mail['Date'] = email.utils.formatdate(utc_timestamp)
+
     return mail