From 4d654c66af16d0b737669865758faf24b9e77378 Mon Sep 17 00:00:00 2001 From: Duda Dornelles Date: Mon, 8 Sep 2014 11:39:14 -0300 Subject: Adding date to PixelatedMail#from_dict --- service/pixelated/adapter/pixelated_mail.py | 3 +++ service/pixelated/support/date.py | 21 +++++++++++++++++++++ service/test/adapter/pixelated_mail_test.py | 13 +++++++++++-- 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 service/pixelated/support/date.py diff --git a/service/pixelated/adapter/pixelated_mail.py b/service/pixelated/adapter/pixelated_mail.py index 2b9ccd35..e8aab1eb 100644 --- a/service/pixelated/adapter/pixelated_mail.py +++ b/service/pixelated/adapter/pixelated_mail.py @@ -14,6 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . from pixelated.adapter.status import Status +import pixelated.support.date import dateutil.parser as dateparser from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText @@ -107,6 +108,7 @@ class PixelatedMail: mime_multipart['Cc'] = ", ".join(self.headers['cc']) mime_multipart['Bcc'] = ", ".join(self.headers['bcc']) mime_multipart['Subject'] = self.headers['subject'] + mime_multipart['Date'] = self.headers['date'] mime_multipart.attach(MIMEText(self.body, 'plain')) return mime_multipart @@ -130,6 +132,7 @@ class PixelatedMail: def from_dict(mail_dict): mail = PixelatedMail() mail.headers = mail_dict.get('header', {}) + mail.headers['date'] = pixelated.support.date.iso_now() mail.body = mail_dict.get('body', '') mail.ident = mail_dict.get('ident', None) mail.tags = mail_dict.get('tags', []) diff --git a/service/pixelated/support/date.py b/service/pixelated/support/date.py new file mode 100644 index 00000000..1593022c --- /dev/null +++ b/service/pixelated/support/date.py @@ -0,0 +1,21 @@ +# +# Copyright (c) 2014 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . +import datetime +from dateutil.tz import tzlocal + + +def iso_now(): + return datetime.datetime.now(tzlocal()).isoformat() diff --git a/service/test/adapter/pixelated_mail_test.py b/service/test/adapter/pixelated_mail_test.py index 557c3f6a..67922893 100644 --- a/service/test/adapter/pixelated_mail_test.py +++ b/service/test/adapter/pixelated_mail_test.py @@ -15,6 +15,7 @@ # along with Pixelated. If not, see . import unittest +import pixelated.support.date from pixelated.adapter.pixelated_mail import PixelatedMail import test_helper @@ -64,6 +65,13 @@ class TestPixelatedMail(unittest.TestCase): self.assertEqual(mail.tags, ['sent']) self.assertEqual(mail.body, 'Este \xe9 o corpo') + def test_from_dict_adds_current_date(self): + pixelated.support.date.iso_now = lambda: 'date now' + + mail = PixelatedMail.from_dict(self.mail_dict) + + self.assertEqual('date now', mail.headers['date']) + def test_update_tags_return_a_set_for_added_tags_and_a_set_for_removed_ones(self): pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(extra_headers={'X-tags': ['custom_1', 'custom_2']})) added, removed = pixelated_mail.update_tags(set(['custom_1', 'custom_3'])) @@ -71,13 +79,14 @@ class TestPixelatedMail(unittest.TestCase): self.assertEquals(set(['custom_2']), removed) def test_to_mime_multipart(self): - mail = PixelatedMail.from_dict(self.mail_dict) + pixelated.support.date.iso_now = lambda: 'date now' - mime_multipart = mail.to_mime_multipart() + mime_multipart = PixelatedMail.from_dict(self.mail_dict).to_mime_multipart() self.assertRegexpMatches(mime_multipart.as_string(), "\nTo: to@pixelated.org, anotherto@pixelated.org\n") self.assertRegexpMatches(mime_multipart.as_string(), "\nCc: cc@pixelated.org, anothercc@pixelated.org\n") self.assertRegexpMatches(mime_multipart.as_string(), "\nBcc: bcc@pixelated.org, anotherbcc@pixelated.org\n") + self.assertRegexpMatches(mime_multipart.as_string(), "\nDate: date now\n") self.assertRegexpMatches(mime_multipart.as_string(), "\nSubject: Oi\n") self.assertRegexpMatches(mime_multipart.as_string(), "\nEste \xe9 o corpo") -- cgit v1.2.3