diff --git a/rowers/email.py b/rowers/email.py deleted file mode 100644 index b7f6cbf4..00000000 --- a/rowers/email.py +++ /dev/null @@ -1,82 +0,0 @@ -import time -from django.views.generic.base import TemplateView -from django.shortcuts import render -from django.http import HttpResponse, HttpResponseRedirect -from django.contrib.auth import authenticate, login, logout -from rowers.forms import LoginForm,DocumentsForm,UploadOptionsForm -from django.core.urlresolvers import reverse -from django.conf import settings -from django.utils.datastructures import MultiValueDictKeyError -from django.utils import timezone,translation -from django.core.mail import send_mail, BadHeaderError -from rowers.forms import EmailForm, RegistrationForm, RegistrationFormTermsOfService,RegistrationFormUniqueEmail,CNsummaryForm,UpdateWindForm,UpdateStreamForm -from rowers.forms import PredictedPieceForm -from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage,AdvancedWorkoutForm -import StringIO -from django.contrib.auth.decorators import login_required,user_passes_test -from time import strftime,strptime,mktime,time,daylight -import os,sys -import datetime -import iso8601 -import c2stuff -from c2stuff import C2NoTokenError -from iso8601 import ParseError -import stravastuff -import sporttracksstuff -from rowsandall_app.settings import C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET, STRAVA_CLIENT_ID, STRAVA_REDIRECT_URI, STRAVA_CLIENT_SECRET -from rowsandall_app.settings import SPORTTRACKS_CLIENT_ID, SPORTTRACKS_REDIRECT_URI, SPORTTRACKS_CLIENT_SECRET -import requests -import json -from rowers.rows import handle_uploaded_file -from rowers.tasks import handle_makeplot,handle_otwsetpower,handle_sendemailtcx -from scipy.signal import savgol_filter - -from rowingdata import rower as rrower -from rowingdata import main as rmain -from rowingdata import rowingdata as rdata -from rowingdata import TCXParser,RowProParser,ErgDataParser,TCXParserNoHR -from rowingdata import painsledDesktopParser,speedcoachParser,ErgStickParser -from rowingdata import SpeedCoach2Parser,FITParser,fitsummarydata -from rowingdata import make_cumvalues -from rowingdata import summarydata,get_file_type -import pandas as pd -import numpy as np -import matplotlib.pyplot as plt -from pytz import timezone as tz,utc -import dateutil -import mpld3 -from mpld3 import plugins -import stravalib -from stravalib.exc import ActivityUploadFailed,TimeoutExceeded -from weather import get_wind_data - -import django_rq -queue = django_rq.get_queue('default') -queuelow = django_rq.get_queue('low') -queuehigh = django_rq.get_queue('low') - -import plots - -from io import BytesIO -from scipy.special import lambertw - -# used in shell to send a newsletter to all Rowers -def emailall(emailfile,subject): - rowers = Rower.objects.all() - for rower in rowers: - email = rower.user.email - firstname = rower.user.first_name - - print email - - with open(emailfile) as f: - message = f.read() - - message = '\nDear '+firstname+',\n\n'+str(message) - - send_mail( - subject, - message, - 'info@rowsandall.com', - [email], - ) diff --git a/rowers/emails.py b/rowers/emails.py new file mode 100644 index 00000000..a5682019 --- /dev/null +++ b/rowers/emails.py @@ -0,0 +1,31 @@ +from django.core.mail.message import MIMEText +#from email.mime.application import MIMEApplication +from django.core.mail.message import MIMEMultipart + +# boto3 email functionality +import boto3 +AWS_REGION = "us-west-2" +CHARSET = "UTF-8" +client = boto3.client('ses',region_name=AWS_REGION) + +def sendemail(fromaddress,recipients,subjecttext,bodytext,attachment=None): + msg = MIMEMultipart() + msg['Subject'] = subjecttext + msg['From'] = fromaddress + msg['To'] = recipients + part = MIMEText(bodytext) + msg.attach(part) + + # if attachment: + # part = MIMEApplication(open(attachment,'rb').read()) + # part.add_header('Content-Disposition', 'attachment', + # filename=attachment) + # msg.attach(part) + + result = client.send_raw_email( + Source=msg['From'], + Destination=msg['To'], + RawMessage=msg + ) + + return result diff --git a/rowers/tasks.py b/rowers/tasks.py index 10d72f3a..ebac2355 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -52,6 +52,7 @@ import arrow # testing task + @app.task def add(x, y): return x + y @@ -547,11 +548,13 @@ def handle_sendemailsummary(first_name, last_name, email, csvfile, **kwargs): pass return 1 - + +#from rowers.emails import sendemail @app.task def handle_sendemailcsv(first_name, last_name, email, csvfile,**kwargs): + # send email with attachment fullemail = first_name + " " + last_name + " " + "<" + email + ">" subject = "File from Rowsandall.com" @@ -559,6 +562,8 @@ def handle_sendemailcsv(first_name, last_name, email, csvfile,**kwargs): message += "Please find attached the requested file for your workout.\n\n" message += "Best Regards, the Rowsandall Team" + + email = EmailMessage(subject, message, 'Rowsandall ', [fullemail]) @@ -573,6 +578,7 @@ def handle_sendemailcsv(first_name, last_name, email, csvfile,**kwargs): email.attach_file(csvfile2) os.remove(csvfile2) + res = email.send() return 1 diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 062c0602..62f79fd1 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -317,14 +317,10 @@ CACHE_MIDDLEWARE_SECONDS = 900 EMAIL_BACKEND = CFG['email_backend'] EMAIL_HOST = CFG['email_host'] -#EMAIL_HOST = 'smtp.rosti.cz' -#EMAIL_PORT = '25' EMAIL_PORT = CFG['email_port'] EMAIL_HOST_USER = CFG['email_host_user'] -#EMAIL_HOST_PASSWORD = 'lnD3mbZ1NoI8RK1StOdO' EMAIL_HOST_PASSWORD = CFG['email_host_password'] EMAIL_USE_TLS = CFG['email_use_tls'] -#EMAIL_USE_TLS = False DEFAULT_FROM_EMAIL = 'admin@rowsandall.com' diff --git a/rowsandall_app/settings_dev.py b/rowsandall_app/settings_dev.py index b37aaed8..402beaf2 100644 --- a/rowsandall_app/settings_dev.py +++ b/rowsandall_app/settings_dev.py @@ -83,8 +83,16 @@ SITE_URL = "http://localhost:8000" #EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' #EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -#EMAIL_HOST = 'localhost' -#EMAIL_PORT = '1025' -#EMAIL_HOST_USER = '' -#EMAIL_HOST_PASSWORD = '' -#EMAIL_USE_TLS = True +EMAIL_BACKEND = 'django_ses.SESBackend' + +AWS_SES_REGION_NAME = 'us-west-2' +AWS_SES_REGION_ENDPOINT = 'email.us-west-2.amazonaws.com' + +EMAIL_HOST = CFG['aws_smtp'] +EMAIL_PORT = CFG['aws_port'] +EMAIL_HOST_USER = CFG['aws_smtp_username'] +EMAIL_HOST_PASSWORD = CFG['aws_smtp_password'] +EMAIL_USE_TLS = CFG['email_use_tls'] +DEFAULT_FROM_EMAIL = 'info@rowsandall.com' + + diff --git a/startcelery.bat b/startcelery.bat index 9ebc51a0..d3de3649 100644 --- a/startcelery.bat +++ b/startcelery.bat @@ -1 +1,2 @@ -celery -A rowers.tasks worker --loglevel=info --pool=solo \ No newline at end of file +celery -A rowers purge +celery -A rowers.tasks worker --loglevel=info --pool=solo