From 31fba39036bc92d940d0aaa7ab927cf97003743e Mon Sep 17 00:00:00 2001 From: RujitRaval Date: Wed, 8 Jan 2020 14:37:59 -0500 Subject: [PATCH 1/4] Add support for multiple emails --- bloclink/apps/bis/views.py | 31 ++++++++++++++++++++++--------- bloclink/settings.py | 9 --------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/bloclink/apps/bis/views.py b/bloclink/apps/bis/views.py index ec583c5..d1dbfa0 100644 --- a/bloclink/apps/bis/views.py +++ b/bloclink/apps/bis/views.py @@ -15,7 +15,7 @@ from email.mime.text import MIMEText from django.template.loader import get_template from django.template import Context from django.template.loader import render_to_string -from django.core.mail import EmailMessage +from django.core.mail import EmailMessage, get_connection from django.db import connections import re import boto3 @@ -288,7 +288,20 @@ class SubmitQuestionnaire(View): resource = dest_ppt_file.split('/')[-1], last_updated = datetime.now() ).save(using='bis') - + + # Setting connections + connection_prod = get_connection(host='smtp.gmail.com', + port=587, + username='welcome@blocpower.io', + password='zdjiztpyaymeyhdb', + use_tls=True) + + connection = get_connection(host='smtp.gmail.com', + port=587, + username='testing@blocpower.io', + password='qgjigrfmbmjarrgd', + use_tls=True) + # Sending Emails firstName = put['firstName'] lastName = put['lastName'] @@ -300,19 +313,19 @@ class SubmitQuestionnaire(View): if surveyId == 1: if put['buildingQualified'] == True: msg_html = render_to_string('congratulations_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Congratulations', msg_html, from_email, [toEmail]) + msg = EmailMessage('Congratulations', msg_html, 'welcome@blocpower.io', [toEmail], connection=connection_prod) msg.content_subtype = "html" msg.attach_file('bloclink/templates/welcome.pdf') msg.send() else: msg_html = render_to_string('thank_you_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Thank you', msg_html, from_email, [toEmail]) + msg = EmailMessage('Thank you', msg_html, 'welcome@blocpower.io', [toEmail], connection=connection_prod) msg.content_subtype = "html" msg.send() elif surveyId == 2 or surveyId == 3: msg_html = render_to_string('thank_you_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Thank you', msg_html, from_email, [toEmail]) + msg = EmailMessage('Thank you', msg_html, 'welcome@blocpower.io', [toEmail], connection=connection_prod) msg.content_subtype = "html" # We are not sending PPT to the user rn. # msg.attach_file(dest_ppt_file) @@ -345,14 +358,14 @@ class SubmitQuestionnaire(View): subject = 'BIS - ' + buildingData['address'] if os.environ['ENVIRONMENT'] == 'prod': - msg = EmailMessage(subject, msg_html, from_email, [settings.PROD_EMAIL]) + msg = EmailMessage(subject, msg_html, 'welcome@blocpower.io', [settings.PROD_EMAIL], connection=connection_prod) msg.content_subtype = "html" - msg.attach_file(dest_ppt_file) + # msg.attach_file(dest_ppt_file) msg.send() else: - msg = EmailMessage("TEST - " + subject, msg_html, from_email, [settings.TEST_EMAIL]) + msg = EmailMessage("TEST - " + subject, msg_html, 'testing@blocpower.io', [settings.TEST_EMAIL], connection=connection) msg.content_subtype = "html" - msg.attach_file(dest_ppt_file) + # msg.attach_file(dest_ppt_file) msg.send() return JsonResponse({ diff --git a/bloclink/settings.py b/bloclink/settings.py index 2bcc2c9..42debb0 100644 --- a/bloclink/settings.py +++ b/bloclink/settings.py @@ -235,12 +235,3 @@ REST_FRAMEWORK = { 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ] } - -EMAIL_HOST = 'smtp.gmail.com' -EMAIL_HOST_PASSWORD = 'zdjiztpyaymeyhdb' -EMAIL_HOST_USER = 'welcome@blocpower.io' -EMAIL_PORT = 587 -EMAIL_USE_TLS = True - -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -DEFAULT_FROM_EMAIL = 'welcome@blocpower.io' -- GitLab From de2393911bb5c27e8e68996633b9cdac4a3e8819 Mon Sep 17 00:00:00 2001 From: RujitRaval Date: Thu, 9 Jan 2020 11:51:29 -0500 Subject: [PATCH 2/4] Solve merge conflict 2 --- bloclink/apps/bis/views.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bloclink/apps/bis/views.py b/bloclink/apps/bis/views.py index 3b22bf0..bc937c0 100644 --- a/bloclink/apps/bis/views.py +++ b/bloclink/apps/bis/views.py @@ -8,12 +8,8 @@ from django.views import View from .models import Questions, MapBoxBuilding, Answers, SubmittedSurvey, Users, Surveys, SurveyAreas, RecommendationSetMap, Ecm, Report from django.forms.models import model_to_dict from django.template.loader import render_to_string -<<<<<<< HEAD from django.core.mail import EmailMessage, get_connection from django.db import connections -======= -from django.core.mail import EmailMessage ->>>>>>> e1a578e914b488d3e96e828019e9ace8ad22b684 import re import boto3 from bpeng.bis.report import generate_pns_report -- GitLab From f131bb1d9dcb40590b66d742ac196b35e90b02bd Mon Sep 17 00:00:00 2001 From: RujitRaval Date: Thu, 9 Jan 2020 14:31:09 -0500 Subject: [PATCH 3/4] Convert email creds to env variables --- .env.default | 7 +++++++ bloclink/apps/bis/views.py | 32 +++++++++++++++----------------- bloclink/settings.py | 7 +++++++ 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/.env.default b/.env.default index c2d83f8..2bdc9b5 100644 --- a/.env.default +++ b/.env.default @@ -16,6 +16,13 @@ BUILDING_FOOTPRINT_DB=$BUILDING_FOOTPRINT_DB UTILITY_BILL_DB=$UTILITY_BILL_DB CORS_ORIGIN_WHITELIST=$CORS_ORIGIN_WHITELIST BLOCPOWER_PHONE_NUMBER=$BLOCPOWER_PHONE_NUMBER +EMAIL_HOST=$EMAIL_HOST +EMAIL_PORT=$EMAIL_PORT +EMAIL_USE_TLS=$EMAIL_USE_TLS +EMAIL_PROD_USERNAME=$EMAIL_PROD_USERNAME +EMAIL_PROD_PASSWORD=$EMAIL_PROD_PASSWORD +EMAIL_USERNAME=$EMAIL_USERNAME +EMAIL_PASSWORD=$EMAIL_PASSWORD TEST_EMAIL=$TEST_EMAIL PROD_EMAIL=$PROD_EMAIL FROM_EMAIL=$FROM_EMAIL diff --git a/bloclink/apps/bis/views.py b/bloclink/apps/bis/views.py index bc937c0..fd487a9 100644 --- a/bloclink/apps/bis/views.py +++ b/bloclink/apps/bis/views.py @@ -283,17 +283,17 @@ class SubmitQuestionnaire(View): ).save(using='bis') # Setting connections - connection_prod = get_connection(host='smtp.gmail.com', - port=587, - username='welcome@blocpower.io', - password='zdjiztpyaymeyhdb', - use_tls=True) + connection_prod = get_connection(host=settings.EMAIL_HOST, + port=settings.EMAIL_PORT, + username=settings.EMAIL_PROD_USERNAME, + password=settings.EMAIL_PROD_PASSWORD, + use_tls=settings.EMAIL_USE_TLS) - connection = get_connection(host='smtp.gmail.com', - port=587, - username='testing@blocpower.io', - password='qgjigrfmbmjarrgd', - use_tls=True) + connection = get_connection(host=settings.EMAIL_HOST, + port=settings.EMAIL_PORT, + username=settings.EMAIL_USERNAME, + password=settings.EMAIL_PASSWORD, + use_tls=settings.EMAIL_USE_TLS) # Sending Emails firstName = put['firstName'] @@ -306,22 +306,20 @@ class SubmitQuestionnaire(View): if surveyId == 1: if put['buildingQualified'] == True: msg_html = render_to_string('congratulations_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Congratulations', msg_html, 'welcome@blocpower.io', [toEmail], connection=connection_prod) + msg = EmailMessage('Congratulations', msg_html, settings.EMAIL_PROD_USERNAME, [toEmail], connection=connection_prod) msg.content_subtype = "html" msg.attach_file('bloclink/templates/welcome.pdf') msg.send() else: msg_html = render_to_string('thank_you_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Thank you', msg_html, 'welcome@blocpower.io', [toEmail], connection=connection_prod) + msg = EmailMessage('Thank you', msg_html, settings.EMAIL_PROD_USERNAME, [toEmail], connection=connection_prod) msg.content_subtype = "html" msg.send() elif surveyId == 2 or surveyId == 3: msg_html = render_to_string('thank_you_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Thank you', msg_html, 'welcome@blocpower.io', [toEmail], connection=connection_prod) + msg = EmailMessage('Thank you', msg_html, settings.EMAIL_PROD_USERNAME, [toEmail], connection=connection_prod) msg.content_subtype = "html" - # We are not sending PPT to the user rn. - # msg.attach_file(dest_ppt_file) msg.send() # Get all building related data @@ -351,13 +349,13 @@ class SubmitQuestionnaire(View): milwaukee_survey = 3 subject = 'BIS - ' + buildingData['address'] if os.environ['ENVIRONMENT'] == 'prod': - msg = EmailMessage(subject, msg_html, 'welcome@blocpower.io', [settings.PROD_EMAIL], connection=connection_prod) + msg = EmailMessage(subject, msg_html, settings.EMAIL_PROD_USERNAME, [settings.PROD_EMAIL], connection=connection_prod) msg.content_subtype = "html" if put['surveyId'] in [oakland_survey, milwaukee_survey]: msg.attach_file(dest_ppt_file) msg.send() else: - msg = EmailMessage("TEST - " + subject, msg_html, 'testing@blocpower.io', [settings.TEST_EMAIL], connection=connection) + msg = EmailMessage("TEST - " + subject, msg_html, settings.EMAIL_USERNAME, [settings.TEST_EMAIL], connection=connection) msg.content_subtype = "html" if put['surveyId'] in [oakland_survey, milwaukee_survey]: msg.attach_file(dest_ppt_file) diff --git a/bloclink/settings.py b/bloclink/settings.py index 42debb0..0c0a547 100644 --- a/bloclink/settings.py +++ b/bloclink/settings.py @@ -34,6 +34,13 @@ PENTAHO_PASSWORD = config('PENTAHO_PASSWORD') # Building Intake Survey URL BIS_URL = config('BIS_URL') BLOCPOWER_PHONE_NUMBER = config('BLOCPOWER_PHONE_NUMBER') +EMAIL_HOST = config('EMAIL_HOST') +EMAIL_PORT = config('EMAIL_PORT') +EMAIL_USE_TLS = config('EMAIL_USE_TLS') +EMAIL_PROD_USERNAME = config('EMAIL_PROD_USERNAME') +EMAIL_PROD_PASSWORD = config('EMAIL_PROD_PASSWORD') +EMAIL_USERNAME = config('EMAIL_USERNAME') +EMAIL_PASSWORD = config('EMAIL_PASSWORD') TEST_EMAIL = config('TEST_EMAIL') PROD_EMAIL = config('PROD_EMAIL') FROM_EMAIL = config('FROM_EMAIL') -- GitLab From af394408eeacf8aac34de06aa6db30052691e862 Mon Sep 17 00:00:00 2001 From: RujitRaval Date: Thu, 9 Jan 2020 15:08:09 -0500 Subject: [PATCH 4/4] Refactor the code --- bloclink/apps/bis/views.py | 63 +++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/bloclink/apps/bis/views.py b/bloclink/apps/bis/views.py index fd487a9..f0eecd6 100644 --- a/bloclink/apps/bis/views.py +++ b/bloclink/apps/bis/views.py @@ -282,43 +282,45 @@ class SubmitQuestionnaire(View): last_updated = datetime.now() ).save(using='bis') - # Setting connections - connection_prod = get_connection(host=settings.EMAIL_HOST, - port=settings.EMAIL_PORT, - username=settings.EMAIL_PROD_USERNAME, - password=settings.EMAIL_PROD_PASSWORD, - use_tls=settings.EMAIL_USE_TLS) - - connection = get_connection(host=settings.EMAIL_HOST, - port=settings.EMAIL_PORT, - username=settings.EMAIL_USERNAME, - password=settings.EMAIL_PASSWORD, - use_tls=settings.EMAIL_USE_TLS) + # Setting connections and from_email + if os.environ['ENVIRONMENT'] == 'prod': + connection = get_connection(host=settings.EMAIL_HOST, + port=settings.EMAIL_PORT, + username=settings.EMAIL_PROD_USERNAME, + password=settings.EMAIL_PROD_PASSWORD, + use_tls=settings.EMAIL_USE_TLS) + from_email = settings.EMAIL_PROD_USERNAME + else: + connection = get_connection(host=settings.EMAIL_HOST, + port=settings.EMAIL_PORT, + username=settings.EMAIL_USERNAME, + password=settings.EMAIL_PASSWORD, + use_tls=settings.EMAIL_USE_TLS) + from_email = settings.EMAIL_USERNAME # Sending Emails firstName = put['firstName'] lastName = put['lastName'] - toEmail = put['email'] + customerEmail = put['email'] phone = put['phone'] - from_email = settings.FROM_EMAIL surveyId = put['surveyId'] if surveyId == 1: if put['buildingQualified'] == True: msg_html = render_to_string('congratulations_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Congratulations', msg_html, settings.EMAIL_PROD_USERNAME, [toEmail], connection=connection_prod) + msg = EmailMessage('Congratulations', msg_html, from_email, [customerEmail], connection=connection) msg.content_subtype = "html" msg.attach_file('bloclink/templates/welcome.pdf') msg.send() else: msg_html = render_to_string('thank_you_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Thank you', msg_html, settings.EMAIL_PROD_USERNAME, [toEmail], connection=connection_prod) + msg = EmailMessage('Thank you', msg_html, from_email, [customerEmail], connection=connection) msg.content_subtype = "html" msg.send() elif surveyId == 2 or surveyId == 3: msg_html = render_to_string('thank_you_email.html', {'firstName': firstName, 'lastName': lastName, 'buildingAddress': buildingAddress, 'phone':settings.BLOCPOWER_PHONE_NUMBER}) - msg = EmailMessage('Thank you', msg_html, settings.EMAIL_PROD_USERNAME, [toEmail], connection=connection_prod) + msg = EmailMessage('Thank you', msg_html, from_email, [customerEmail], connection=connection) msg.content_subtype = "html" msg.send() @@ -339,7 +341,7 @@ class SubmitQuestionnaire(View): msg_txt = render_to_string('new_building.txt') msg_html = render_to_string('new_building.html', {'firstName': firstName, 'lastName': lastName, - 'email': toEmail, + 'email': customerEmail, 'contactNumber': phone, 'buildingId': put['buildingId'], 'address': buildingData['address'], @@ -347,19 +349,18 @@ class SubmitQuestionnaire(View): oakland_survey = 2 milwaukee_survey = 3 - subject = 'BIS - ' + buildingData['address'] - if os.environ['ENVIRONMENT'] == 'prod': - msg = EmailMessage(subject, msg_html, settings.EMAIL_PROD_USERNAME, [settings.PROD_EMAIL], connection=connection_prod) - msg.content_subtype = "html" - if put['surveyId'] in [oakland_survey, milwaukee_survey]: - msg.attach_file(dest_ppt_file) - msg.send() - else: - msg = EmailMessage("TEST - " + subject, msg_html, settings.EMAIL_USERNAME, [settings.TEST_EMAIL], connection=connection) - msg.content_subtype = "html" - if put['surveyId'] in [oakland_survey, milwaukee_survey]: - msg.attach_file(dest_ppt_file) - msg.send() + + # Define a subject based on ENVIRONMENT + subject = 'BIS - ' + buildingData['address'] if os.environ['ENVIRONMENT'] == 'prod' else 'Test - BIS - ' + buildingData['address'] + + # Define an email_recipient based on ENVIRONMENT + email_recipient = settings.PROD_EMAIL if os.environ['ENVIRONMENT'] == 'prod' else settings.TEST_EMAIL + + msg = EmailMessage(subject, msg_html, from_email, [email_recipient], connection=connection) + msg.content_subtype = "html" + if put['surveyId'] in [oakland_survey, milwaukee_survey]: + msg.attach_file(dest_ppt_file) + msg.send() return JsonResponse({ 'success': True, -- GitLab