diff --git a/rowers/dataprep.py b/rowers/dataprep.py index bb749179..7469cd0d 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1,10 +1,18 @@ from rowers.models import Workout, User, Rower from rowingdata import rowingdata as rrdata +from rowers.tasks import handle_sendemail_unrecognized + from rowingdata import rower as rrower from rowingdata import main as rmain +from rowingdata import get_file_type + from pandas import DataFrame,Series +from pytz import timezone as tz,utc + +from django.utils.timezone import get_current_timezone +thetimezone = get_current_timezone() import pandas as pd import numpy as np @@ -80,6 +88,164 @@ def timedeltaconv(x): return dt +def new_workout_from_file(r,f2, + workouttype='rower', + title='Workout', + notes=''): + + fileformat = get_file_type(f2) + summary = '' + # handle non-Painsled + if (fileformat != 'csv'): + # handle RowPro: + if (fileformat == 'rp'): + row = RowProParser(f2) + # handle TCX + if (fileformat == 'tcx'): + row = TCXParser(f2) + + # handle Mystery + if (fileformat == 'mystery'): + row = MysteryParser(f2) + + # handle TCX no HR + if (fileformat == 'tcxnohr'): + row = TCXParserNoHR(f2) + + # handle ErgData + if (fileformat == 'ergdata'): + row = ErgDataParser(f2) + + # handle BoatCoach + if (fileformat == 'boatcoach'): + row = BoatCoachParser(f2) + + # handle painsled desktop + if (fileformat == 'painsleddesktop'): + row = painsledDesktopParser(f2) + + # handle speed coach GPS + if (fileformat == 'speedcoach'): + row = speedcoachParser(f2) + + # handle speed coach GPS 2 + if (fileformat == 'speedcoach2'): + row = SpeedCoach2Parser(f2) + summary = row.allstats() + + + # handle ErgStick + if (fileformat == 'ergstick'): + row = ErgStickParser(f2) + + # handle FIT + if (fileformat == 'fit'): + row = FITParser(f2) + s = fitsummarydata(f2) + s.setsummary() + summary = s.summarytext + + + f_to_be_deleted = f2 + # should delete file + f2 = f2[:-4]+'o.csv' + row.write_csv(f2,gzip=True) + + #os.remove(f2) + try: + os.remove(f_to_be_deleted) + except: + os.remove(f_to_be_deleted+'.gz') + + # make workout and put in database + rr = rrower(hrmax=r.max,hrut2=r.ut2, + hrut1=r.ut1,hrat=r.at, + hrtr=r.tr,hran=r.an,ftp=r.ftp) + row = rdata(f2,rower=rr) + if row == 0: + return HttpResponse("Error: CSV Data File Not Found") + + # auto smoothing + pace = row.df[' Stroke500mPace (sec/500m)'].values + velo = 500./pace + + f = row.df['TimeStamp (sec)'].diff().mean() + windowsize = 2*(int(10./(f)))+1 + if not 'originalvelo' in row.df: + row.df['originalvelo'] = velo + + if windowsize > 3 and windowsize - + + {% analytical_head_top %} @@ -15,8 +17,10 @@ {% block meta %} {% endblock %} + {% analytical_head_bottom %} - + + {% analytical_body_top %}
+ {% analytical_body_bottom %} - \ No newline at end of file + diff --git a/rowers/templates/registerthankyou.html b/rowers/templates/registerthankyou.html index 7c75236d..73ae6509 100644 --- a/rowers/templates/registerthankyou.html +++ b/rowers/templates/registerthankyou.html @@ -3,6 +3,25 @@ {% block title %}Contact Us - Thank You{% endblock title %} {% block content %}

Thank you.

-

Thank you for registering. You can now login using the credential you provided.

-

Return home

- {% endblock content %} \ No newline at end of file +

Thank you for registering. You can now login using the credential you provided. You can also view some of the videos below to get you started.

+

Return home

+ + +

Basic Navigation

+ + +

Upload Page

+ + +

Integration with Strava, SportTracks or Concept2 logbook

+ +

+ +

+ +

+ +

+ + + {% endblock content %} diff --git a/rowers/views.py b/rowers/views.py index e2ab8fa5..7c006d7b 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -46,6 +46,8 @@ from rowers.tasks import handle_sendemail_unrecognized from scipy.signal import savgol_filter from django.shortcuts import render_to_response +from shutil import copyfile + from rowingdata import rower as rrower from rowingdata import main as rmain from rowingdata import rowingdata as rrdata @@ -236,6 +238,17 @@ def rower_register_view(request): therower.save() + # Create Sample workout + f = 'media/testdata.csv.gz' + timestr = strftime("%Y%m%d-%H%M%S") + f2 = f[:-7]+timestr+'.csv.gz' + copyfile(f,f2) + + response = dataprep.new_workout_from_file(therower,f2, + title='New User Sample Data', + notes='This is an example workout to get you started') + + # Create and send email fullemail = first_name + " " + last_name + " " + "<" + email + ">" subject = "Thank you for registering on rowsandall.com" message = "Thank you for registering on rowsandall.com. You can now login using the credentials you provided.\n" diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index ce32596b..f2226e93 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -51,6 +51,7 @@ INSTALLED_APPS = [ 'rest_framework_swagger', 'oauth2_provider', 'corsheaders', + 'analytical', ] AUTHENTICATION_BACKENDS = ( @@ -277,3 +278,7 @@ REST_FRAMEWORK = { ), 'PAGE_SIZE': 20, } + +# Analytics + +CLICKY_SITE_ID = '101011008'