Private
Public Access
1
0

Merge branch 'release/v10.43'

This commit is contained in:
Sander Roosendaal
2019-10-31 16:02:33 +01:00
4 changed files with 103 additions and 96 deletions

View File

@@ -574,6 +574,7 @@ def createc2workoutdata(w):
"time": int(10*makeseconds(durationstr)), "time": int(10*makeseconds(durationstr)),
"weight_class": c2wc(w.weightcategory), "weight_class": c2wc(w.weightcategory),
"comments": w.notes, "comments": w.notes,
"stroke_count": int(row.stroke_count),
'stroke_rate': int(row.df[' Cadence (stokes/min)'].mean()), 'stroke_rate': int(row.df[' Cadence (stokes/min)'].mean()),
'drag_factor': int(row.dragfactor), 'drag_factor': int(row.dragfactor),
"heart_rate": { "heart_rate": {

View File

@@ -2007,9 +2007,9 @@ def read_df_sql(id):
f = 'media/strokedata_{id}.parquet.gz'.format(id=id) f = 'media/strokedata_{id}.parquet.gz'.format(id=id)
df = pd.read_parquet(f) df = pd.read_parquet(f)
except OSError: except OSError:
rowdata,row = getrowdata(id=ids[0]) rowdata,row = getrowdata(id=id)
if rowdata and len(rowdata.df): if rowdata and len(rowdata.df):
data = dataprep(rowdata.df,id=ids[0],bands=True,otwpower=True,barchart=True) data = dataprep(rowdata.df,id=id,bands=True,otwpower=True,barchart=True)
df = pd.read_parquet(f) df = pd.read_parquet(f)
df = df.fillna(value=0) df = df.fillna(value=0)

View File

@@ -166,7 +166,7 @@ def create_c2_stroke_data_db(
try: try:
spm = 60.*nr_strokes/totalseconds spm = 60.*nr_strokes/totalseconds
except ZeroDivisionError: except ZeroDivisionError:
spm = 20*zeros(nr_strokes) spm = 20*np.zeros(nr_strokes)
step = totalseconds/float(nr_strokes) step = totalseconds/float(nr_strokes)
@@ -713,7 +713,7 @@ def getsmallrowdata_db(columns,ids=[],debug=False):
columns = [c for c in columns if c != 'None'] columns = [c for c in columns if c != 'None']
if len(ids)>1: if len(ids)>1:
for f in csvfilenames: for id, f in zip(ids,csvfilenames):
try: try:
df = pd.read_parquet(f,columns=columns,engine='pyarrow') df = pd.read_parquet(f,columns=columns,engine='pyarrow')
data.append(df) data.append(df)
@@ -721,7 +721,10 @@ def getsmallrowdata_db(columns,ids=[],debug=False):
pass pass
df = pd.concat(data,axis=0) try:
df = pd.concat(data,axis=0)
except ValueError:
df = pd.DataFrame()
else: else:
df = pd.read_parquet(csvfilenames[0],columns=columns,engine='pyarrow') df = pd.read_parquet(csvfilenames[0],columns=columns,engine='pyarrow')

View File

@@ -115,23 +115,23 @@ def add(x, y):
return x + y return x + y
@app.task @app.task
def handle_c2_import_stroke_data(c2token, def handle_c2_import_stroke_data(c2token,
c2id,workoutid, c2id,workoutid,
starttimeunix, starttimeunix,
csvfilename,debug=True,**kwargs): csvfilename,debug=True,**kwargs):
if 'workouttype' in kwargs: if 'workouttype' in kwargs:
workouttype = kwargs['workouttype'] workouttype = kwargs['workouttype']
else: else:
workouttype = 'rower' workouttype = 'rower'
authorizationstring = str('Bearer ' + c2token) authorizationstring = str('Bearer ' + c2token)
headers = {'Authorization': authorizationstring, headers = {'Authorization': authorizationstring,
'user-agent': 'sanderroosendaal', 'user-agent': 'sanderroosendaal',
'Content-Type': 'application/json'} 'Content-Type': 'application/json'}
url = "https://log.concept2.com/api/users/me/results/"+str(c2id)+"/strokes" url = "https://log.concept2.com/api/users/me/results/"+str(c2id)+"/strokes"
s = requests.get(url,headers=headers) s = requests.get(url,headers=headers)
if s.status_code == 200: if s.status_code == 200:
@@ -140,13 +140,13 @@ def handle_c2_import_stroke_data(c2token,
strokedata,workoutid,starttimeunix, strokedata,workoutid,starttimeunix,
csvfilename,debug=debug,workouttype=workouttype csvfilename,debug=debug,workouttype=workouttype
) )
return 1 return 1
else: else:
url = "https://log.concept2.com/api/users/me/results/{id}".format(id=c2id) url = "https://log.concept2.com/api/users/me/results/{id}".format(id=c2id)
s = requests.get(url,headers=headers) s = requests.get(url,headers=headers)
if s.status_code == 200: if s.status_code == 200:
workoutdata = s.json()['data'] workoutdata = s.json()['data']
distance = workoutdata['distance'] distance = workoutdata['distance']
@@ -179,10 +179,10 @@ def handle_c2_import_stroke_data(c2token,
workoutid,starttimeunix, workoutid,starttimeunix,
csvfilename,debug=debug, csvfilename,debug=debug,
) )
return 1 return 1
return 0 return 0
return 0 return 0
@@ -191,7 +191,10 @@ def getagegrouprecord(age,sex='male',weightcategory='hwt',
distance=2000,duration=None,indf=pd.DataFrame()): distance=2000,duration=None,indf=pd.DataFrame()):
if not duration: if not duration:
df = indf[indf['distance'] == distance] try:
df = indf[indf['distance'] == distance]
except KeyError:
df = pd.DataFrame()
else: else:
duration = 60*int(duration) duration = 60*int(duration)
df = indf[indf['duration'] == duration] df = indf[indf['duration'] == duration]
@@ -238,7 +241,7 @@ def polygon_to_path(polygon,debug=True):
conn.close() conn.close()
engine.dispose() engine.dispose()
s = [] s = []
for point in points: for point in points:
s.append([point[1],point[2]]) s.append([point[1],point[2]])
@@ -270,7 +273,7 @@ def handle_check_race_course(self,
try: try:
row = rdata(csvfile=f1) row = rdata(csvfile=f1)
except IOError: except IOError:
try: try:
row = rdata(csvfile=f1 + '.csv') row = rdata(csvfile=f1 + '.csv')
except IOError: except IOError:
try: try:
@@ -278,7 +281,7 @@ def handle_check_race_course(self,
except IOError: except IOError:
return 0 return 0
rowdata = row.df rowdata = row.df
try: try:
@@ -309,7 +312,7 @@ def handle_check_race_course(self,
engine = create_engine(database_url_debug, echo=False) engine = create_engine(database_url_debug, echo=False)
else: else:
engine = create_engine(database_url, echo=False) engine = create_engine(database_url, echo=False)
# get polygons # get polygons
query = "SELECT id FROM rowers_geopolygon WHERE course_id = {courseid} ORDER BY order_in_course ASC".format( query = "SELECT id FROM rowers_geopolygon WHERE course_id = {courseid} ORDER BY order_in_course ASC".format(
courseid=courseid courseid=courseid
@@ -342,7 +345,7 @@ def handle_check_race_course(self,
coursetimeseconds, coursetimeseconds,
coursemeters, coursemeters,
coursecompleted, coursecompleted,
) = coursetime_paths(rowdata2,paths) ) = coursetime_paths(rowdata2,paths)
( (
coursetimefirst, coursetimefirst,
@@ -378,7 +381,7 @@ def handle_check_race_course(self,
coursemeters = records[records['coursetimeseconds'] == mintime]['coursemeters'].min() coursemeters = records[records['coursetimeseconds'] == mintime]['coursemeters'].min()
else: else:
coursecompleted = False coursecompleted = False
if coursecompleted: if coursecompleted:
query = 'UPDATE rowers_virtualraceresult SET coursecompleted = 1, duration = "{duration}", distance = {distance}, workoutid = {workoutid} WHERE id={recordid}'.format( query = 'UPDATE rowers_virtualraceresult SET coursecompleted = 1, duration = "{duration}", distance = {distance}, workoutid = {workoutid} WHERE id={recordid}'.format(
@@ -395,8 +398,8 @@ def handle_check_race_course(self,
distance=int(coursemeters), distance=int(coursemeters),
workoutid=workoutid, workoutid=workoutid,
) )
with engine.connect() as conn, conn.begin(): with engine.connect() as conn, conn.begin():
result = conn.execute(query) result = conn.execute(query)
@@ -430,7 +433,7 @@ def handle_getagegrouprecords(self,
if sex == 'not specified': if sex == 'not specified':
return 0 return 0
for distance in distances: for distance in distances:
worldclasspower = getagegrouprecord( worldclasspower = getagegrouprecord(
age, age,
@@ -477,22 +480,22 @@ def long_test_task(self,aantal,debug=False,job=None,session_key=None):
return longtask.longtask(aantal,jobid=job.id,debug=debug, return longtask.longtask(aantal,jobid=job.id,debug=debug,
session_key=session_key) session_key=session_key)
@app.task(bind=True) @app.task(bind=True)
def long_test_task2(self,aantal,**kwargs): def long_test_task2(self,aantal,**kwargs):
#debug=False,job=None,jobid='aap'): #debug=False,job=None,jobid='aap'):
job = self.request job = self.request
job_id = job.id job_id = job.id
if 'jobkey' in kwargs: if 'jobkey' in kwargs:
job_id = kwargs.pop('jobkey') job_id = kwargs.pop('jobkey')
kwargs['jobid'] = job_id kwargs['jobid'] = job_id
return longtask.longtask2(aantal,**kwargs) return longtask.longtask2(aantal,**kwargs)
# create workout # create workout
@app.task @app.task
@@ -520,7 +523,7 @@ def handle_update_empower(self,
aantal = len(workoutdicts) aantal = len(workoutdicts)
counter = 0 counter = 0
for workoutdict in workoutdicts: for workoutdict in workoutdicts:
wid = workoutdict['id'] wid = workoutdict['id']
inboard = workoutdict['inboard'] inboard = workoutdict['inboard']
@@ -529,7 +532,7 @@ def handle_update_empower(self,
f1 = workoutdict['filename'] f1 = workoutdict['filename']
# oarlength consistency checks will be done in view # oarlength consistency checks will be done in view
havedata = 1 havedata = 1
try: try:
rowdata = rdata(csvfile=f1) rowdata = rdata(csvfile=f1)
@@ -541,7 +544,7 @@ def handle_update_empower(self,
rowdata = rdata(csvfile=f1 + '.gz') rowdata = rdata(csvfile=f1 + '.gz')
except IOError: except IOError:
havedata = 0 havedata = 0
progressurl = SITE_URL progressurl = SITE_URL
siteurl = SITE_URL siteurl = SITE_URL
if debug: if debug:
@@ -550,10 +553,10 @@ def handle_update_empower(self,
secret = PROGRESS_CACHE_SECRET secret = PROGRESS_CACHE_SECRET
kwargs['job_id'] = job_id kwargs['job_id'] = job_id
progressurl += "/rowers/record-progress/" progressurl += "/rowers/record-progress/"
progressurl += job_id progressurl += job_id
if havedata: if havedata:
success = update_empower(wid, inboard, oarlength, boattype, success = update_empower(wid, inboard, oarlength, boattype,
rowdata.df, f1, debug=debug) rowdata.df, f1, debug=debug)
@@ -561,7 +564,7 @@ def handle_update_empower(self,
counter += 1 counter += 1
progress = 100.*float(counter)/float(aantal) progress = 100.*float(counter)/float(aantal)
post_data = { post_data = {
"secret":secret, "secret":secret,
"value":progress, "value":progress,
@@ -601,7 +604,7 @@ def handle_calctrimp(id,
engine = create_engine(database_url_debug, echo=False) engine = create_engine(database_url_debug, echo=False)
else: else:
engine = create_engine(database_url, echo=False) engine = create_engine(database_url, echo=False)
try: try:
rowdata = rdata(csvfile=csvfilename) rowdata = rdata(csvfile=csvfilename)
except IOError: except IOError:
@@ -621,7 +624,7 @@ def handle_calctrimp(id,
return 0 return 0
df2 = df.copy() df2 = df.copy()
df2['time'] = df2[' ElapsedTime (sec)'] df2['time'] = df2[' ElapsedTime (sec)']
df2['time'] = df2['time'].apply( df2['time'] = df2['time'].apply(
lambda x:safetimedelta(x) lambda x:safetimedelta(x)
@@ -633,7 +636,7 @@ def handle_calctrimp(id,
df2 = df2.rolling(30).mean() df2 = df2.rolling(30).mean()
df2[' Power (watts)'] = df2[' Power (watts)'].abs() df2[' Power (watts)'] = df2[' Power (watts)'].abs()
df2['pwr4'] = df2[' Power (watts)']**(4.0) df2['pwr4'] = df2[' Power (watts)']**(4.0)
# pwr4mean = wavg(df,'pwr4','deltat') # pwr4mean = wavg(df,'pwr4','deltat')
pwr4mean = df2['pwr4'].mean() pwr4mean = df2['pwr4'].mean()
@@ -647,7 +650,7 @@ def handle_calctrimp(id,
intensityfactor = normp/float(ftp) intensityfactor = normp/float(ftp)
tss = 100.*((duration*normp*intensityfactor)/(3600.*ftp)) tss = 100.*((duration*normp*intensityfactor)/(3600.*ftp))
if sex == 'male': if sex == 'male':
f = 1.92 f = 1.92
else: else:
@@ -665,7 +668,7 @@ def handle_calctrimp(id,
hrtss = 100.*trimp/trimp1hr hrtss = 100.*trimp/trimp1hr
pp = 8.0 pp = 8.0
df['v4'] = df[' AverageBoatSpeed (m/s)']**(pp) df['v4'] = df[' AverageBoatSpeed (m/s)']**(pp)
v4mean = wavg(df,'v4','deltat') v4mean = wavg(df,'v4','deltat')
normv = v4mean**(1./pp) normv = v4mean**(1./pp)
@@ -676,14 +679,14 @@ def handle_calctrimp(id,
normw = w4mean**(1./pp) normw = w4mean**(1./pp)
except KeyError: except KeyError:
normw = 0 normw = 0
if not np.isfinite(normv): if not np.isfinite(normv):
normv = 500./120. normv = 500./120.
if not np.isfinite(normw): if not np.isfinite(normw):
normw = 0 normw = 0
try: try:
dum = int(tss) dum = int(tss)
except ValueError: except ValueError:
@@ -718,7 +721,7 @@ def handle_calctrimp(id,
engine.dispose() engine.dispose()
return 1 return 1
@app.task @app.task
def handle_updatedps(useremail, workoutids, debug=False,**kwargs): def handle_updatedps(useremail, workoutids, debug=False,**kwargs):
@@ -738,7 +741,7 @@ def handle_updatedps(useremail, workoutids, debug=False,**kwargs):
if havedata: if havedata:
update_strokedata(wid, rowdata.df, debug=debug) update_strokedata(wid, rowdata.df, debug=debug)
subject = "Rowsandall.com Your Distance per Stroke metric has been updated" subject = "Rowsandall.com Your Distance per Stroke metric has been updated"
message = "All your workouts now have Distance per Stroke" message = "All your workouts now have Distance per Stroke"
@@ -766,7 +769,7 @@ def sigdig(value, digits = 3):
# return integers as is # return integers as is
if value % 1 == 0: if value % 1 == 0:
return value return value
places = digits - order - 1 places = digits - order - 1
if places > 0: if places > 0:
fmtstr = "%%.%df" % (places) fmtstr = "%%.%df" % (places)
@@ -899,7 +902,7 @@ def handle_send_email_failed_cancel(
d, **kwargs) d, **kwargs)
return 1 return 1
@app.task @app.task
def handle_send_email_subscription_update( def handle_send_email_subscription_update(
@@ -932,7 +935,7 @@ def handle_send_email_subscription_update(
template_name = 'subscription_update_email.html' template_name = 'subscription_update_email.html'
notification_template_name = 'subscription_update_notification.html' notification_template_name = 'subscription_update_notification.html'
subject = "Rowsandall Payment Confirmation" subject = "Rowsandall Payment Confirmation"
res = send_template_email(from_email,[useremail], res = send_template_email(from_email,[useremail],
subject, subject,
template_name, template_name,
@@ -1199,7 +1202,7 @@ def handle_sendemail_userdeleted(name, email, debug=False, **kwargs):
if not emailbounced: if not emailbounced:
res = email.send() res = email.send()
return 1 return 1
@@ -1232,7 +1235,7 @@ def handle_sendemail_unrecognized(unrecognizedfile, useremail,
if not emailbounced: if not emailbounced:
res = email.send() res = email.send()
# remove tcx file # remove tcx file
try: try:
@@ -1286,7 +1289,7 @@ def handle_sendemailics(first_name, last_name, email, icsfile, **kwargs):
os.remove(icsfile) os.remove(icsfile)
return 1 return 1
@app.task @app.task
def handle_sendemailkml(first_name, last_name, email, kmlfile,**kwargs): def handle_sendemailkml(first_name, last_name, email, kmlfile,**kwargs):
@@ -1341,10 +1344,10 @@ def handle_zip_file(emailfrom, subject, file,**kwargs):
debug = kwargs['debug'] debug = kwargs['debug']
except KeyError: except KeyError:
debug = False debug = False
if debug: if debug:
print(message) print(message)
email = EmailMessage(subject, message, email = EmailMessage(subject, message,
emailfrom, emailfrom,
['workouts@rowsandall.com']) ['workouts@rowsandall.com'])
@@ -1354,8 +1357,8 @@ def handle_zip_file(emailfrom, subject, file,**kwargs):
res = email.send() res = email.send()
if debug: if debug:
print("sent") print("sent")
time.sleep(60) time.sleep(60)
@@ -1379,7 +1382,7 @@ def handle_sendemailsummary(first_name, last_name, email, csvfile, **kwargs):
subject,'summarymail.html',d, subject,'summarymail.html',d,
attach_file=csvfile, attach_file=csvfile,
**kwargs) **kwargs)
try: try:
os.remove(csvfile) os.remove(csvfile)
except: except:
@@ -1392,7 +1395,7 @@ def handle_sendemailsummary(first_name, last_name, email, csvfile, **kwargs):
@app.task @app.task
def handle_sendemailcsv(first_name, last_name, email, csvfile,**kwargs): def handle_sendemailcsv(first_name, last_name, email, csvfile,**kwargs):
# send email with attachment # send email with attachment
fullemail = first_name + " " + last_name + " " + "<" + email + ">" fullemail = first_name + " " + last_name + " " + "<" + email + ">"
subject = "File from Rowsandall.com" subject = "File from Rowsandall.com"
@@ -1407,7 +1410,7 @@ def handle_sendemailcsv(first_name, last_name, email, csvfile,**kwargs):
res = send_template_email(from_email,[fullemail], res = send_template_email(from_email,[fullemail],
subject,'csvemail.html',d, subject,'csvemail.html',d,
attach_file=csvfile,**kwargs) attach_file=csvfile,**kwargs)
return 1 return 1
@@ -1427,7 +1430,7 @@ def handle_sendemail_ical(first_name, last_name, email, url, icsfile, **kwargs):
progressurl = SITE_URL_DEV progressurl = SITE_URL_DEV
siteurl = SITE_URL_DEV siteurl = SITE_URL_DEV
d = {'first_name':first_name, d = {'first_name':first_name,
'siteurl':siteurl, 'siteurl':siteurl,
'url':url, 'url':url,
@@ -1439,20 +1442,20 @@ def handle_sendemail_ical(first_name, last_name, email, url, icsfile, **kwargs):
res = send_template_email(from_email,[fullemail], res = send_template_email(from_email,[fullemail],
subject,'icsemail.html',d, subject,'icsemail.html',d,
attach_file=icsfile,**kwargs) attach_file=icsfile,**kwargs)
try: try:
os.remove(csvfile) os.remove(csvfile)
except: except:
pass pass
return 1 return 1
@app.task @app.task
def handle_sendemailfile(first_name, last_name, email, csvfile,**kwargs): def handle_sendemailfile(first_name, last_name, email, csvfile,**kwargs):
# send email with attachment # send email with attachment
fullemail = first_name + " " + last_name + " " + "<" + email + ">" fullemail = first_name + " " + last_name + " " + "<" + email + ">"
subject = "File from Rowsandall.com" subject = "File from Rowsandall.com"
@@ -1467,7 +1470,7 @@ def handle_sendemailfile(first_name, last_name, email, csvfile,**kwargs):
res = send_template_email(from_email,[fullemail], res = send_template_email(from_email,[fullemail],
subject,'fileemail.html',d, subject,'fileemail.html',d,
attach_file=csvfile,**kwargs) attach_file=csvfile,**kwargs)
if 'delete' in kwargs: if 'delete' in kwargs:
dodelete = kwargs['delete'] dodelete = kwargs['delete']
@@ -1479,7 +1482,7 @@ def handle_sendemailfile(first_name, last_name, email, csvfile,**kwargs):
os.remove(csvfile) os.remove(csvfile)
except: except:
pass pass
return 1 return 1
# Calculate wind and stream corrections for OTW rowing # Calculate wind and stream corrections for OTW rowing
@@ -1492,7 +1495,7 @@ def handle_otwsetpower(self,f1, boattype, weightvalue,
job = self.request job = self.request
job_id = job.id job_id = job.id
if 'jobkey' in kwargs: if 'jobkey' in kwargs:
job_id = kwargs.pop('jobkey') job_id = kwargs.pop('jobkey')
if 'ps' in kwargs: if 'ps' in kwargs:
@@ -1563,7 +1566,7 @@ def handle_otwsetpower(self,f1, boattype, weightvalue,
# determine cache file name # determine cache file name
physics_cache = 'media/'+str(boattype)+'_'+str(int(weightvalue)) physics_cache = 'media/'+str(boattype)+'_'+str(int(weightvalue))
rowdata.otw_setpower(skiprows=5, mc=weightvalue, rg=rg, rowdata.otw_setpower(skiprows=5, mc=weightvalue, rg=rg,
powermeasured=powermeasured, powermeasured=powermeasured,
progressurl=progressurl, progressurl=progressurl,
@@ -1638,7 +1641,7 @@ def handle_updateergcp(rower_id,workoutfilenames,debug=False,**kwargs):
cpdata = rowingdata.cumcpdata(therows) cpdata = rowingdata.cumcpdata(therows)
cpdata.columns = cpdata.columns.str.lower() cpdata.columns = cpdata.columns.str.lower()
updatecpdata_sql(rower_id,cpdata['delta'],cpdata['cp'], updatecpdata_sql(rower_id,cpdata['delta'],cpdata['cp'],
table='ergcpdata',distance=cpdata['distance'], table='ergcpdata',distance=cpdata['distance'],
debug=debug) debug=debug)
@@ -1659,7 +1662,7 @@ def cp_from_workoutids(workoutids,debug=False):
maxt = 1.05*df['time'].max()/1000. maxt = 1.05*df['time'].max()/1000.
logarr = datautils.getlogarr(maxt) logarr = datautils.getlogarr(maxt)
delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr) delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr)
powerdf = pd.DataFrame({ powerdf = pd.DataFrame({
@@ -1705,7 +1708,7 @@ def cp_from_workoutids(workoutids,debug=False):
power2k = fitfunc(p1,t3) power2k = fitfunc(p1,t3)
return powerfourmin,power2k,powerhour return powerfourmin,power2k,powerhour
@app.task @app.task
def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False, def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False,
@@ -1714,7 +1717,7 @@ def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False,
powerfourmin = -1 powerfourmin = -1
power2k = -1 power2k = -1
powerhour = -1 powerhour = -1
mdict = { mdict = {
'user_id': user_id, 'user_id': user_id,
'PowerFourMin': powerfourmin, 'PowerFourMin': powerfourmin,
@@ -1730,7 +1733,7 @@ def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False,
powerfourmin,power2k,powerhour = cp_from_workoutids(workoutids,debug=debug) powerfourmin,power2k,powerhour = cp_from_workoutids(workoutids,debug=debug)
if powerfourmin > 0 and power2k > 0 and powerhour > 0: if powerfourmin > 0 and power2k > 0 and powerhour > 0:
mdict = { mdict = {
'user_id': user_id, 'user_id': user_id,
'PowerFourMin': powerfourmin, 'PowerFourMin': powerfourmin,
@@ -1744,7 +1747,7 @@ def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False,
result = fitnessmetric_to_sql(mdict,debug=debug,doclean=True) result = fitnessmetric_to_sql(mdict,debug=debug,doclean=True)
else: else:
result = 0 result = 0
return result return result
@app.task @app.task
@@ -1760,13 +1763,13 @@ def handle_updatecp(rower_id,workoutids,debug=False,table='cpdata',**kwargs):
logarr = datautils.getlogarr(maxt) logarr = datautils.getlogarr(maxt)
delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr) delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr)
updatecpdata_sql(rower_id,delta,cpvalue,debug=debug,table=table) updatecpdata_sql(rower_id,delta,cpvalue,debug=debug,table=table)
return 1 return 1
@app.task @app.task
def handle_makeplot(f1, f2, t, hrdata, plotnr, imagename, def handle_makeplot(f1, f2, t, hrdata, plotnr, imagename,
debug=False,**kwargs): debug=False,**kwargs):
@@ -1864,11 +1867,11 @@ def handle_sendemail_coachrequest(email,name,code,coachname,
} }
form_email = 'Rowsandall <info@rowsandall.com>' form_email = 'Rowsandall <info@rowsandall.com>'
res = send_template_email(from_email,[fullemail], res = send_template_email(from_email,[fullemail],
subject,'coachrequestemail.html',d, subject,'coachrequestemail.html',d,
**kwargs) **kwargs)
return 1 return 1
@app.task @app.task
@@ -1984,7 +1987,7 @@ def handle_sendemail_coacheerequest(email,name,code,coachname,
res = send_template_email(from_email,[fullemail], res = send_template_email(from_email,[fullemail],
subject,'coacheerequestemail.html',d, subject,'coacheerequestemail.html',d,
**kwargs) **kwargs)
return 1 return 1
@app.task @app.task
@@ -2004,13 +2007,13 @@ def handle_sendemail_invite(email, name, code, teamname, manager,
'teamname':teamname, 'teamname':teamname,
'siteurl':siteurl 'siteurl':siteurl
} }
from_email = 'Rowsandall <info@rowsandall.com>' from_email = 'Rowsandall <info@rowsandall.com>'
res = send_template_email(from_email,[fullemail], res = send_template_email(from_email,[fullemail],
subject,'teaminviteemail.html',d, subject,'teaminviteemail.html',d,
**kwargs) **kwargs)
return 1 return 1
@@ -2027,7 +2030,7 @@ def handle_sendemailnewresponse(first_name, last_name,
subject = 'New comment on session ' + workoutname subject = 'New comment on session ' + workoutname
comment = u''+comment comment = u''+comment
siteurl = SITE_URL siteurl = SITE_URL
if debug: if debug:
siteurl = SITE_URL_DEV siteurl = SITE_URL_DEV
@@ -2035,12 +2038,12 @@ def handle_sendemailnewresponse(first_name, last_name,
sessiontype = 'workout' sessiontype = 'workout'
if 'sessiontype' in kwargs: if 'sessiontype' in kwargs:
sessiontype=kwargs.pop('sessiontype') sessiontype=kwargs.pop('sessiontype')
commentlink = '/rowers/workout/{workoutid}/comment/'.format( commentlink = '/rowers/workout/{workoutid}/comment/'.format(
workoutid=encoder.encode_hex(workoutid)) workoutid=encoder.encode_hex(workoutid))
if 'commentlink' in kwargs: if 'commentlink' in kwargs:
commentlink = kwargs.pop('commentlink') commentlink = kwargs.pop('commentlink')
d = { d = {
'first_name':first_name, 'first_name':first_name,
'commenter_first_name':commenter_first_name, 'commenter_first_name':commenter_first_name,
@@ -2056,7 +2059,7 @@ def handle_sendemailnewresponse(first_name, last_name,
res = send_template_email(from_email, res = send_template_email(from_email,
[fullemail], [fullemail],
subject,'teamresponseemail.html',d,**kwargs) subject,'teamresponseemail.html',d,**kwargs)
return 1 return 1
@@ -2072,13 +2075,13 @@ def handle_sendemailnewcomment(first_name,
debug=False,**kwargs): debug=False,**kwargs):
fullemail = email fullemail = email
from_email = 'Rowsandall <info@rowsandall.com>' from_email = 'Rowsandall <info@rowsandall.com>'
subject = 'New comment on session ' + workoutname subject = 'New comment on session ' + workoutname
comment = u''+comment comment = u''+comment
siteurl = SITE_URL siteurl = SITE_URL
if debug: if debug:
siteurl = SITE_URL_DEV siteurl = SITE_URL_DEV
@@ -2086,7 +2089,7 @@ def handle_sendemailnewcomment(first_name,
sessiontype = 'workout' sessiontype = 'workout'
if 'sessiontype' in kwargs: if 'sessiontype' in kwargs:
sessiontype=kwargs.pop('sessiontype') sessiontype=kwargs.pop('sessiontype')
commentlink = '/rowers/workout/{workoutid}/comment/'.format( commentlink = '/rowers/workout/{workoutid}/comment/'.format(
workoutid=encoder.encode_hex(workoutid)) workoutid=encoder.encode_hex(workoutid))
if 'commentlink' in kwargs: if 'commentlink' in kwargs:
@@ -2106,7 +2109,7 @@ def handle_sendemailnewcomment(first_name,
res = send_template_email(from_email,[fullemail],subject, res = send_template_email(from_email,[fullemail],subject,
'teamresponseemail.html',d,**kwargs) 'teamresponseemail.html',d,**kwargs)
return 1 return 1
@@ -2148,9 +2151,9 @@ def handle_sendemail_request(email, name, code, teamname, requestor, id,
'id':id, 'id':id,
'first_name':name, 'first_name':name,
} }
res = send_template_email(from_email,[fullemail],subject, res = send_template_email(from_email,[fullemail],subject,
'teamrequestemail.html',d,**kwargs) 'teamrequestemail.html',d,**kwargs)
return 1 return 1
@@ -2174,7 +2177,7 @@ def handle_sendemail_request_accept(email, name, teamname, managername,
'siteurl':siteurl, 'siteurl':siteurl,
} }
res = send_template_email(from_email,[fullemail],subject, res = send_template_email(from_email,[fullemail],subject,
'teamwelcomeemail.html',d,**kwargs) 'teamwelcomeemail.html',d,**kwargs)
return 1 return 1
@@ -2198,7 +2201,7 @@ def handle_sendemail_request_reject(email, name, teamname, managername,
'siteurl':siteurl, 'siteurl':siteurl,
} }
res = send_template_email(from_email,[fullemail],subject, res = send_template_email(from_email,[fullemail],subject,
'teamrejectemail.html',d,**kwargs) 'teamrejectemail.html',d,**kwargs)
return 1 return 1
@@ -2221,7 +2224,7 @@ def handle_sendemail_member_dropped(email, name, teamname, managername,
'siteurl':siteurl, 'siteurl':siteurl,
} }
res = send_template_email(from_email,[fullemail],subject, res = send_template_email(from_email,[fullemail],subject,
'teamdropemail.html',d,**kwargs) 'teamdropemail.html',d,**kwargs)
return 1 return 1
@@ -2246,7 +2249,7 @@ def handle_sendemail_team_removed(email, name, teamname, managername,
'siteurl':siteurl, 'siteurl':siteurl,
} }
res = send_template_email(from_email,[fullemail],subject, res = send_template_email(from_email,[fullemail],subject,
'teamremoveemail.html',d,**kwargs) 'teamremoveemail.html',d,**kwargs)
return 1 return 1