Example #1
0
class Driver(object):

    _MAX_SLEEP_TIME = 30

    def __init__(self, config=None):
        self.sleep_time = 1
        self.queue = EmailQueue(Client('http://127.0.0.1:8000'), 'emails')
        self.template_renderer = TemplateRenderer('templates/')
        self.email_sender = Sender({'SG_USERNAME': os.environ.get('SG_USERNAME'),
                                    'SG_PASSWORD': os.environ.get('SG_PASSWORD'),
                                    'SG_SENDER': os.environ.get('SG_SENDER'),
                                    })

    def drive(self):
        while True:
            email = self.emails_queue.dequeue()
            if not email:
                self.sleep()
                continue
             
            email_body = templater.render(email.template, email.email_data)
            message = self.email_sender.build_email(email.email_data.get('to'),
                                                    email.email_data.get('subject'),
                                                    email_body)

            try:
                sender.send_email(template)
            except Exception as e:
                print(e)

    def _sleep(self):
        time.sleep(self.sleep_time)
        self.sleep_time = min(self.sleep_time * 2, self._MAX_SLEEP_TIME)
class TestSender(unittest.TestCase):
    def setUp(self):
        self.sender = Sender({"SG_USERNAME": "******", "SG_PASSWORD": "******", "SG_SENDER": "BAZ"})
        self.sender._sg_userame = "FOO"
        self.sender._sg_password = "******"

    def test_correct_setup(self):
        self.assertEqual(self.sender._sg_username, "FOO")
        self.assertEqual(self.sender._sg_password, "BAR")
        self.assertEqual(self.sender._from_email, "BAZ")

    def test_build_email(self):
        email = self.sender.build_email("test_to", "test_subject", "test_body")
        self.assertEqual(email.to, ["test_to"])
        self.assertEqual(email.subject, "test_subject")
        self.assertEqual(email.html, "test_body")

    @raises(Exception)
    def test_build_email_invalid_sg_username(self):
        self._sg_username = None
        self.build_email("foo", "bar", "baz")
        self.assertTrue(False)

    @raises(Exception)
    def test_build_email_invalid_sg_password(self):
        self._sg_password = None
        self.build_email("foo", "bar", "baz")
        self.assertTrue(False)
Example #3
0
 def __init__(self, config=None):
     self.sleep_time = 1
     self.queue = EmailQueue(Client('http://127.0.0.1:8000'), 'emails')
     self.template_renderer = TemplateRenderer('templates/')
     self.email_sender = Sender({'SG_USERNAME': os.environ.get('SG_USERNAME'),
                                 'SG_PASSWORD': os.environ.get('SG_PASSWORD'),
                                 'SG_SENDER': os.environ.get('SG_SENDER'),
                                 })
 def setUp(self):
     self.sender = Sender({"SG_USERNAME": "******", "SG_PASSWORD": "******", "SG_SENDER": "BAZ"})
     self.sender._sg_userame = "FOO"
     self.sender._sg_password = "******"