From 9c261006bbf535fecfa0573c32f644fe7889d71b Mon Sep 17 00:00:00 2001 From: Travis Truett Date: Tue, 7 Nov 2017 09:37:40 -0800 Subject: [PATCH 1/5] Custom From Email --- entity_emailer/interface.py | 13 ++++++++++--- entity_emailer/tests/interface_tests.py | 15 +++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/entity_emailer/interface.py b/entity_emailer/interface.py index 6502bc7..92c2eca 100644 --- a/entity_emailer/interface.py +++ b/entity_emailer/interface.py @@ -34,7 +34,6 @@ def send_unsent_scheduled_emails(): # Fetch the contexts of every event so that they may be rendered context_loader.load_contexts_and_renderers([e.event for e in to_send], [email_medium]) - default_from_email = get_from_email_address() emails = [] for email in to_send: to_email_addresses = get_subscribed_email_addresses(email) @@ -42,7 +41,7 @@ def send_unsent_scheduled_emails(): text_message, html_message = email.render(email_medium) message = create_email_message( to_emails=to_email_addresses, - from_email=email.from_address or default_from_email, + from_email=email.from_address, subject=email.subject or extract_email_subject_from_html_content(html_message), text=text_message, html=html_message, @@ -62,6 +61,14 @@ def convert_events_to_emails(): # Get the email medium email_medium = get_medium() + # Get the default from email + default_from_email = get_from_email_address() + # Find any unseen events and create unsent email objects for event, targets in email_medium.events_targets(seen=False, mark_seen=True): - Email.objects.create_email(event=event, recipients=targets) + + # Check the event's context for a from_address, otherwise fallback to default + from_address = event.context.get('from_address', default_from_email) + + # Create the emails + Email.objects.create_email(event=event, from_address=from_address, recipients=targets) diff --git a/entity_emailer/tests/interface_tests.py b/entity_emailer/tests/interface_tests.py index 25a3294..ab8f9d4 100644 --- a/entity_emailer/tests/interface_tests.py +++ b/entity_emailer/tests/interface_tests.py @@ -60,6 +60,21 @@ def test_no_subscriptions(self): EntityEmailerInterface.convert_events_to_emails() self.assertFalse(Email.objects.exists()) + def test_default_from_email(self): + # settings.DEFAULT_FROM_EMAIL is already set to test@example.com + G(Event, context={}) + EntityEmailerInterface.convert_events_to_emails() + email = Email.objects.get() + + self.assertEqual(email.from_address, 'test@example.com') + + def test_custom_from_email(self): + G(Event, context={'from_address': 'custom@example.com'}) + EntityEmailerInterface.convert_events_to_emails() + email = Email.objects.get() + + self.assertEqual(email.from_address, 'custom@example.com') + @freeze_time('2013-1-2') def test_basic_only_following_false_subscription(self): source = G(Source) From 071d11017d7e1e0904202ec0821c30b8f8486b2a Mon Sep 17 00:00:00 2001 From: Travis Truett Date: Tue, 7 Nov 2017 09:38:34 -0800 Subject: [PATCH 2/5] Added version, release notes --- entity_emailer/version.py | 2 +- release_notes.rst | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/entity_emailer/version.py b/entity_emailer/version.py index ef91994..092052c 100644 --- a/entity_emailer/version.py +++ b/entity_emailer/version.py @@ -1 +1 @@ -__version__ = '0.14.0' +__version__ = '0.14.1' diff --git a/release_notes.rst b/release_notes.rst index 9e7e16b..a622fe0 100644 --- a/release_notes.rst +++ b/release_notes.rst @@ -1,6 +1,10 @@ Release Notes ============= +0.14.1 +------ +* Added ability to set custom From address + 0.14.0 ------ * Add Python 3.6 support From 00760139dcdcd6757f46948af16774d385335100 Mon Sep 17 00:00:00 2001 From: Travis Truett Date: Tue, 7 Nov 2017 09:41:18 -0800 Subject: [PATCH 3/5] Build on Circle --- release_notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_notes.rst b/release_notes.rst index a622fe0..76b0a20 100644 --- a/release_notes.rst +++ b/release_notes.rst @@ -3,7 +3,7 @@ Release Notes 0.14.1 ------ -* Added ability to set custom From address +* Added ability to set custom From Address 0.14.0 ------ From 34b1d2fa214e365b95efba4326f993b03e8d048a Mon Sep 17 00:00:00 2001 From: Travis Truett Date: Tue, 7 Nov 2017 11:13:00 -0800 Subject: [PATCH 4/5] Tests --- .gitignore | 2 ++ entity_emailer/tests/interface_tests.py | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index fa9a852..e62ec44 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,5 @@ entity_emailer_db # Pycharm .idea/ + +activate.sh diff --git a/entity_emailer/tests/interface_tests.py b/entity_emailer/tests/interface_tests.py index ab8f9d4..8b761ce 100644 --- a/entity_emailer/tests/interface_tests.py +++ b/entity_emailer/tests/interface_tests.py @@ -62,14 +62,33 @@ def test_no_subscriptions(self): def test_default_from_email(self): # settings.DEFAULT_FROM_EMAIL is already set to test@example.com - G(Event, context={}) + source = G(Source) + e = G(Entity) + G(Subscription, entity=e, source=source, medium=self.email_medium, only_following=False, sub_entity_kind=None) + email_context = { + 'entity_emailer_template': 'template', + 'entity_emailer_subject': 'hi', + } + event = G(Event, source=source, context=email_context) + G(EventActor, event=event, entity=e) + EntityEmailerInterface.convert_events_to_emails() email = Email.objects.get() self.assertEqual(email.from_address, 'test@example.com') def test_custom_from_email(self): - G(Event, context={'from_address': 'custom@example.com'}) + source = G(Source) + e = G(Entity) + G(Subscription, entity=e, source=source, medium=self.email_medium, only_following=False, sub_entity_kind=None) + email_context = { + 'entity_emailer_template': 'template', + 'entity_emailer_subject': 'hi', + 'from_address': 'custom@example.com' + } + event = G(Event, source=source, context=email_context) + G(EventActor, event=event, entity=e) + EntityEmailerInterface.convert_events_to_emails() email = Email.objects.get() From 1714d1d680386ffe8f19a09a89f2a5661b861209 Mon Sep 17 00:00:00 2001 From: Travis Truett Date: Tue, 7 Nov 2017 11:26:07 -0800 Subject: [PATCH 5/5] Redundancy --- entity_emailer/interface.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/entity_emailer/interface.py b/entity_emailer/interface.py index 92c2eca..dca68ba 100644 --- a/entity_emailer/interface.py +++ b/entity_emailer/interface.py @@ -41,7 +41,7 @@ def send_unsent_scheduled_emails(): text_message, html_message = email.render(email_medium) message = create_email_message( to_emails=to_email_addresses, - from_email=email.from_address, + from_email=email.from_address or get_from_email_address(), subject=email.subject or extract_email_subject_from_html_content(html_message), text=text_message, html=html_message, @@ -68,7 +68,7 @@ def convert_events_to_emails(): for event, targets in email_medium.events_targets(seen=False, mark_seen=True): # Check the event's context for a from_address, otherwise fallback to default - from_address = event.context.get('from_address', default_from_email) + from_address = event.context.get('from_address') or default_from_email # Create the emails Email.objects.create_email(event=event, from_address=from_address, recipients=targets)