diff --git a/rowers/tasks.py b/rowers/tasks.py index 420594bd..67910935 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -977,6 +977,39 @@ def handle_sendemailcsv(first_name, last_name, email, csvfile,**kwargs): return 1 +@app.task +def handle_sendemailfile(first_name, last_name, email, csvfile,**kwargs): + + + # send email with attachment + fullemail = first_name + " " + last_name + " " + "<" + email + ">" + subject = "File from Rowsandall.com" + + d = {'first_name':first_name, + 'siteurl':siteurl, + } + + from_email = 'Rowsandall ' + + + res = send_template_email(from_email,[fullemail], + subject,'fileemail.html',d, + attach_file=csvfile,**kwargs) + + + if 'delete' in kwargs: + dodelete = kwargs['delete'] + else: + dodelete = False + + if dodelete: + try: + os.remove(csvfile) + except: + pass + + return 1 + # Calculate wind and stream corrections for OTW rowing diff --git a/rowers/templates/fileemail.html b/rowers/templates/fileemail.html new file mode 100644 index 00000000..3094204b --- /dev/null +++ b/rowers/templates/fileemail.html @@ -0,0 +1,13 @@ +{% extends "emailbase.html" %} + +{% block body %} +

Dear {{ first_name }},

+ +

+ Please find attached the requested file from rowsandall.com +

+ +

+ Best Regards, the Rowsandall Team +

+{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 12561aaa..9d294f9a 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -249,6 +249,7 @@ urlpatterns = [ url(r'^workout/(?P\d+)/emailgpx$',views.workout_gpxemail_view), url(r'^workout/(?P\d+)/emailcsv$',views.workout_csvemail_view), url(r'^workout/(?P\d+)/csvtoadmin$',views.workout_csvtoadmin_view), + url(r'^ergcpdatatoadmin/(?P\d+)/(?P\d+-\d+-\d+)/(?P\w+.*)$',views.otecp_toadmin_view), url(r'^workout/compare/(?P\d+)/$',views.workout_comparison_list), url(r'^workout/compare2/(?P\d+)/(?P\d+)/(?P\w+.*)/(?P\w+.*)/$',views.workout_comparison_view), url(r'^workout/compare/(?P\d+)/(?P\d+-\d+-\d+)/(?P\w+.*)$',views.workout_comparison_list), diff --git a/rowers/views.py b/rowers/views.py index 462f7b1d..a2a7bd28 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -132,6 +132,7 @@ from rowers.tasks import handle_makeplot,handle_otwsetpower,handle_sendemailtcx, from rowers.tasks import ( handle_sendemail_unrecognized,handle_sendemailnewcomment, handle_sendemailsummary, + handle_sendemailfile, handle_sendemailkml, handle_sendemailnewresponse, handle_updatedps, handle_updatecp,long_test_task,long_test_task2, @@ -4276,6 +4277,79 @@ def otwrankings_view(request,theuser=0, 'workouttype':'water', }) +@login_required() +def otecp_toadmin_view(request,theuser=0, + startdate=timezone.now()-datetime.timedelta(days=365), + enddate=timezone.now(), + startdatestring="", + enddatestring="", + ): + + if startdatestring != "": + try: + startdate = iso8601.parse_date(startdatestring) + except ParseError: + pass + + if enddatestring != "": + try: + enddate = iso8601.parse_date(enddatestring) + except ParseError: + pass + + if theuser == 0: + theuser = request.user.id + + r = Rower.objects.get(user=request.user) + + startdate = datetime.datetime.combine(startdate,datetime.time()) + enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) + + theworkouts = Workout.objects.filter( + user=r,rankingpiece=True, + workouttype__in=[ + 'rower', + 'dynamic', + 'slides' + ], + startdatetime__gte=startdate, + startdatetime__lte=enddate + ).order_by("-startdatetime") + + + delta,cpvalue,avgpower = dataprep.fetchcp( + r,theworkouts,table='cpergdata' + ) + + powerdf = pd.DataFrame({ + 'Delta':delta, + 'CP':cpvalue, + }) + + csvfilename = 'CP_data_user_{id}.csv'.format( + id = theuser + ) + + powerdf = powerdf[powerdf['CP']>0] + powerdf.dropna(axis=0,inplace=True) + powerdf.sort_values(['Delta','CP'],ascending=[1,0],inplace=True) + powerdf.drop_duplicates(subset='Delta',keep='first',inplace=True) + powerdf.to_csv(csvfilename) + + res = myqueue(queuehigh, + handle_sendemailfile, + 'Sander', + 'Roosendaal', + 'roosendaalsander@gmail.com', + csvfilename, + delete=True) + + successmessage = "The CSV file was sent to the site admin per email" + messages.info(request,successmessage) + response = HttpResponseRedirect('/rowers/list-workouts/') + + return response + # Show ranking distances including predicted paces @user_passes_test(ispromember,login_url="/",redirect_field_name=None) def oterankings_view(request,theuser=0,