Merge branch 'feature/thinkpad' into develop
This commit is contained in:
+14
-14
@@ -327,11 +327,11 @@ def createc2workoutdata_as_splits(w):
|
||||
maxhr = int(df[' HRCur (bpm)'].max())
|
||||
|
||||
# adding diff, trying to see if this is valid
|
||||
t = 10*df.ix[:,' ElapsedTime (sec)'].diff().values
|
||||
t = 10*df.loc[:,' ElapsedTime (sec)'].diff().values
|
||||
t[0] = t[1]
|
||||
d = df.ix[:,' Horizontal (meters)'].diff().values
|
||||
d = df.loc[:,' Horizontal (meters)'].diff().values
|
||||
d[0] = d[1]
|
||||
p = 10*df.ix[:,' Stroke500mPace (sec/500m)'].values
|
||||
p = 10*df.loc[:,' Stroke500mPace (sec/500m)'].values
|
||||
t = t.astype(int)
|
||||
d = d.astype(int)
|
||||
p = p.astype(int)
|
||||
@@ -396,11 +396,11 @@ def createc2workoutdata(w):
|
||||
maxhr = 0
|
||||
|
||||
# adding diff, trying to see if this is valid
|
||||
t = 10*row.df.ix[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
||||
t = 10*row.df.loc[:,'TimeStamp (sec)'].values-10*row.df.loc[:,'TimeStamp (sec)'].iloc[0]
|
||||
t[0] = t[1]
|
||||
d = 10*row.df.ix[:,' Horizontal (meters)'].values
|
||||
d = 10*row.df.loc[:,' Horizontal (meters)'].values
|
||||
d[0] = d[1]
|
||||
p = abs(10*row.df.ix[:,' Stroke500mPace (sec/500m)'].values)
|
||||
p = abs(10*row.df.loc[:,' Stroke500mPace (sec/500m)'].values)
|
||||
p = np.clip(p,0,3600)
|
||||
if w.workouttype == 'bike':
|
||||
p = 2.0*p
|
||||
@@ -817,35 +817,35 @@ def add_workout_from_data(user,importid,data,strokedata,
|
||||
|
||||
unixtime = cum_time+starttimeunix
|
||||
# unixtime[0] = starttimeunix
|
||||
seconds = 0.1*strokedata.ix[:,'t']
|
||||
seconds = 0.1*strokedata.loc[:,'t']
|
||||
|
||||
nr_rows = len(unixtime)
|
||||
|
||||
try:
|
||||
latcoord = strokedata.ix[:,'lat']
|
||||
loncoord = strokedata.ix[:,'lon']
|
||||
latcoord = strokedata.loc[:,'lat']
|
||||
loncoord = strokedata.loc[:,'lon']
|
||||
except:
|
||||
latcoord = np.zeros(nr_rows)
|
||||
loncoord = np.zeros(nr_rows)
|
||||
|
||||
|
||||
try:
|
||||
strokelength = strokedata.ix[:,'strokelength']
|
||||
strokelength = strokedata.loc[:,'strokelength']
|
||||
except:
|
||||
strokelength = np.zeros(nr_rows)
|
||||
|
||||
dist2 = 0.1*strokedata.ix[:,'d']
|
||||
dist2 = 0.1*strokedata.loc[:,'d']
|
||||
|
||||
try:
|
||||
spm = strokedata.ix[:,'spm']
|
||||
spm = strokedata.loc[:,'spm']
|
||||
except KeyError:
|
||||
spm = 0*dist2
|
||||
|
||||
try:
|
||||
hr = strokedata.ix[:,'hr']
|
||||
hr = strokedata.loc[:,'hr']
|
||||
except KeyError:
|
||||
hr = 0*spm
|
||||
pace = strokedata.ix[:,'p']/10.
|
||||
pace = strokedata.loc[:,'p']/10.
|
||||
pace = np.clip(pace,0,1e4)
|
||||
pace = pace.replace(0,300)
|
||||
|
||||
|
||||
+48
-48
@@ -2001,18 +2001,18 @@ def interactive_windchart(id=0,promember=0):
|
||||
if rowdata == 0:
|
||||
return 0
|
||||
|
||||
dist = rowdata.df.ix[:,'cum_dist']
|
||||
dist = rowdata.df.loc[:,'cum_dist']
|
||||
|
||||
try:
|
||||
vwind = rowdata.df.ix[:,'vwind']
|
||||
winddirection = rowdata.df.ix[:,'winddirection']
|
||||
bearing = rowdata.df.ix[:,'bearing']
|
||||
vwind = rowdata.df.loc[:,'vwind']
|
||||
winddirection = rowdata.df.loc[:,'winddirection']
|
||||
bearing = rowdata.df.loc[:,'bearing']
|
||||
except KeyError:
|
||||
rowdata.add_wind(0,0)
|
||||
rowdata.add_bearing()
|
||||
vwind = rowdata.df.ix[:,'vwind']
|
||||
winddirection = rowdata.df.ix[:,'winddirection']
|
||||
bearing = rowdata.df.ix[:,'winddirection']
|
||||
vwind = rowdata.df.loc[:,'vwind']
|
||||
winddirection = rowdata.df.loc[:,'winddirection']
|
||||
bearing = rowdata.df.loc[:,'winddirection']
|
||||
rowdata.write_csv(f1,gzip=True)
|
||||
dataprep.update_strokedata(id,rowdata.df)
|
||||
|
||||
@@ -2091,13 +2091,13 @@ def interactive_streamchart(id=0,promember=0):
|
||||
if rowdata == 0:
|
||||
return "","No Valid Data Available"
|
||||
|
||||
dist = rowdata.df.ix[:,'cum_dist']
|
||||
dist = rowdata.df.loc[:,'cum_dist']
|
||||
|
||||
try:
|
||||
vstream = rowdata.df.ix[:,'vstream']
|
||||
vstream = rowdata.df.loc[:,'vstream']
|
||||
except KeyError:
|
||||
rowdata.add_stream(0)
|
||||
vstream = rowdata.df.ix[:,'vstream']
|
||||
vstream = rowdata.df.loc[:,'vstream']
|
||||
rowdata.write_csv(f1,gzip=True)
|
||||
dataprep.update_strokedata(id,rowdata.df)
|
||||
|
||||
@@ -2300,7 +2300,7 @@ def interactive_multiflex(datadf,xparam,yparam,groupby,extratitle='',
|
||||
xaxmax = datadf[xparam].max()
|
||||
xaxmin = datadf[xparam].min()
|
||||
elif xparam=='time':
|
||||
tseconds = datadf.ix[:,'time']
|
||||
tseconds = datadf.loc[:,'time']
|
||||
xaxmax = tseconds.max()
|
||||
xaxmin = 0
|
||||
elif xparam == 'workoutid':
|
||||
@@ -2314,7 +2314,7 @@ def interactive_multiflex(datadf,xparam,yparam,groupby,extratitle='',
|
||||
yaxmax = datadf[yparam].max()
|
||||
yaxmin = datadf[yparam].min()
|
||||
elif yparam=='time':
|
||||
tseconds = datadf.ix[:,'time']
|
||||
tseconds = datadf.loc[:,'time']
|
||||
yaxmax = tseconds.max()
|
||||
yaxmin = 0
|
||||
elif yparam == 'workoutid':
|
||||
@@ -2517,7 +2517,7 @@ def interactive_cum_flex_chart2(theworkouts,promember=0,
|
||||
|
||||
|
||||
try:
|
||||
datadf['x1'] = datadf.ix[:,xparam]
|
||||
datadf['x1'] = datadf.loc[:,xparam]
|
||||
except KeyError:
|
||||
try:
|
||||
datadf['x1'] = datadf['distance']
|
||||
@@ -2528,7 +2528,7 @@ def interactive_cum_flex_chart2(theworkouts,promember=0,
|
||||
return ['','<p>No non-zero data in selection</p>','','']
|
||||
|
||||
try:
|
||||
datadf['y1'] = datadf.ix[:,yparam1]
|
||||
datadf['y1'] = datadf.loc[:,yparam1]
|
||||
except KeyError:
|
||||
try:
|
||||
datadf['y1'] = datadf['pace']
|
||||
@@ -2536,7 +2536,7 @@ def interactive_cum_flex_chart2(theworkouts,promember=0,
|
||||
return ['','<p>No non-zero data in selection</p>','','']
|
||||
if yparam2 != 'None':
|
||||
try:
|
||||
datadf['y2'] = datadf.ix[:,yparam2]
|
||||
datadf['y2'] = datadf.loc[:,yparam2]
|
||||
except KeyError:
|
||||
datadf['y2'] = datadf['y1']
|
||||
else:
|
||||
@@ -2566,7 +2566,7 @@ def interactive_cum_flex_chart2(theworkouts,promember=0,
|
||||
|
||||
if yparam1 == 'pace':
|
||||
y_axis_type = 'datetime'
|
||||
y1mean = datadf.ix[:,'pace'].mean()
|
||||
y1mean = datadf.loc[:,'pace'].mean()
|
||||
|
||||
datadf['xname'] = axlabels[xparam]
|
||||
datadf['yname1'] = axlabels[yparam1]
|
||||
@@ -2896,30 +2896,30 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
pass
|
||||
|
||||
try:
|
||||
tseconds = rowdata.ix[:,'time']
|
||||
tseconds = rowdata.loc[:,'time']
|
||||
except KeyError:
|
||||
return '','No time data - cannot make flex plot','','',workstrokesonly
|
||||
|
||||
|
||||
try:
|
||||
rowdata['x1'] = rowdata.ix[:,xparam]
|
||||
rowdata['x1'] = rowdata.loc[:,xparam]
|
||||
rowmin = rowdata[xparam].min()
|
||||
except KeyError:
|
||||
rowdata['x1'] = 0*rowdata.ix[:,'time']
|
||||
rowdata['x1'] = 0*rowdata.loc[:,'time']
|
||||
|
||||
try:
|
||||
rowdata['y1'] = rowdata.ix[:,yparam1]
|
||||
rowdata['y1'] = rowdata.loc[:,yparam1]
|
||||
rowmin = rowdata[yparam1].min()
|
||||
except KeyError:
|
||||
rowdata['y1'] = 0*rowdata.ix[:,'time']
|
||||
rowdata['y1'] = 0*rowdata.loc[:,'time']
|
||||
rowdata[yparam1] = rowdata['y1']
|
||||
|
||||
if yparam2 != 'None':
|
||||
try:
|
||||
rowdata['y2'] = rowdata.ix[:,yparam2]
|
||||
rowdata['y2'] = rowdata.loc[:,yparam2]
|
||||
rowmin = rowdata[yparam2].min()
|
||||
except KeyError:
|
||||
rowdata['y2'] = 0*rowdata.ix[:,'time']
|
||||
rowdata['y2'] = 0*rowdata.loc[:,'time']
|
||||
rowdata[yparam2] = rowdata['y2']
|
||||
else:
|
||||
rowdata['y2'] = rowdata['y1']
|
||||
@@ -2968,7 +2968,7 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
if yparam1 == 'pace':
|
||||
y_axis_type = 'datetime'
|
||||
try:
|
||||
y1mean = rowdata.ix[:,'pace'].mean()
|
||||
y1mean = rowdata.loc[:,'pace'].mean()
|
||||
except KeyError:
|
||||
y1mean = 0
|
||||
|
||||
@@ -3450,26 +3450,26 @@ def thumbnail_flex_chart(rowdata,id=0,promember=0,
|
||||
|
||||
|
||||
try:
|
||||
tseconds = rowdata.ix[:,'time']
|
||||
tseconds = rowdata.loc[:,'time']
|
||||
except KeyError:
|
||||
return '','No time data - cannot make flex plot'
|
||||
|
||||
|
||||
try:
|
||||
rowdata['x1'] = rowdata.ix[:,xparam]
|
||||
rowdata['x1'] = rowdata.loc[:,xparam]
|
||||
except KeyError:
|
||||
rowdata['x1'] = 0*rowdata.ix[:,'time']
|
||||
rowdata['x1'] = 0*rowdata.loc[:,'time']
|
||||
|
||||
try:
|
||||
rowdata['y1'] = rowdata.ix[:,yparam1]
|
||||
rowdata['y1'] = rowdata.loc[:,yparam1]
|
||||
except KeyError:
|
||||
rowdata['y1'] = 0*rowdata.ix[:,'time']
|
||||
rowdata['y1'] = 0*rowdata.loc[:,'time']
|
||||
|
||||
if yparam2 != 'None':
|
||||
try:
|
||||
rowdata['y2'] = rowdata.ix[:,yparam2]
|
||||
rowdata['y2'] = rowdata.loc[:,yparam2]
|
||||
except KeyError:
|
||||
rowdata['y2'] = 0*rowdata.ix[:,'time']
|
||||
rowdata['y2'] = 0*rowdata.loc[:,'time']
|
||||
else:
|
||||
rowdata['y2'] = rowdata['y1']
|
||||
|
||||
@@ -3490,7 +3490,7 @@ def thumbnail_flex_chart(rowdata,id=0,promember=0,
|
||||
|
||||
if yparam1 == 'pace':
|
||||
y_axis_type = 'datetime'
|
||||
y1mean = rowdata.ix[:,'pace'].mean()
|
||||
y1mean = rowdata.loc[:,'pace'].mean()
|
||||
|
||||
|
||||
rowdata['xname'] = axlabels[xparam]
|
||||
@@ -3732,9 +3732,9 @@ def interactive_multiple_compare_chart(ids,xparam,yparam,plottype='line',
|
||||
nrworkouts = len(ids)
|
||||
|
||||
try:
|
||||
tseconds = datadf.ix[:,'time']
|
||||
tseconds = datadf.loc[:,'time']
|
||||
except KeyError:
|
||||
tseconds = datadf.ix[:,xparam]
|
||||
tseconds = datadf.loc[:,xparam]
|
||||
|
||||
yparamname = axlabels[yparam]
|
||||
|
||||
@@ -3954,11 +3954,11 @@ def interactive_comparison_chart(id1=0,id2=0,xparam='distance',yparam='spm',
|
||||
rowdata2.sort_values(by='time',ascending=True,inplace=True)
|
||||
|
||||
try:
|
||||
x1 = rowdata1.ix[:,xparam]
|
||||
x2 = rowdata2.ix[:,xparam]
|
||||
x1 = rowdata1.loc[:,xparam]
|
||||
x2 = rowdata2.loc[:,xparam]
|
||||
|
||||
y1 = rowdata1.ix[:,yparam]
|
||||
y2 = rowdata2.ix[:,yparam]
|
||||
y1 = rowdata1.loc[:,yparam]
|
||||
y2 = rowdata2.loc[:,yparam]
|
||||
except KeyError:
|
||||
return "","No valid Data Available"
|
||||
|
||||
@@ -3976,21 +3976,21 @@ def interactive_comparison_chart(id1=0,id2=0,xparam='distance',yparam='spm',
|
||||
ymax = 1.0e3*90
|
||||
ymin = 1.0e3*210
|
||||
|
||||
ftime1 = rowdata1.ix[:,'ftime']
|
||||
ftime2 = rowdata2.ix[:,'ftime']
|
||||
ftime1 = rowdata1.loc[:,'ftime']
|
||||
ftime2 = rowdata2.loc[:,'ftime']
|
||||
|
||||
hr1 = rowdata1.ix[:,'hr']
|
||||
hr2 = rowdata2.ix[:,'hr']
|
||||
hr1 = rowdata1.loc[:,'hr']
|
||||
hr2 = rowdata2.loc[:,'hr']
|
||||
|
||||
|
||||
fpace1 = rowdata1.ix[:,'fpace']
|
||||
fpace2 = rowdata2.ix[:,'fpace']
|
||||
fpace1 = rowdata1.loc[:,'fpace']
|
||||
fpace2 = rowdata2.loc[:,'fpace']
|
||||
|
||||
distance1 = rowdata1.ix[:,'distance']
|
||||
distance2 = rowdata2.ix[:,'distance']
|
||||
distance1 = rowdata1.loc[:,'distance']
|
||||
distance2 = rowdata2.loc[:,'distance']
|
||||
|
||||
spm1 = rowdata1.ix[:,'spm']
|
||||
spm2 = rowdata2.ix[:,'spm']
|
||||
spm1 = rowdata1.loc[:,'spm']
|
||||
spm2 = rowdata2.loc[:,'spm']
|
||||
|
||||
if (promember==1):
|
||||
TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,resize,crosshair'
|
||||
|
||||
+27
-19
@@ -56,6 +56,19 @@ timezones = (
|
||||
(x,x) for x in pytz.common_timezones
|
||||
)
|
||||
|
||||
def half_year_from_now():
|
||||
return (datetime.datetime.now(tz=timezone.utc)+timezone.timedelta(days=182)).date()
|
||||
|
||||
def a_week_from_now():
|
||||
return (datetime.datetime.now(tz=timezone.utc)+timezone.timedelta(days=7)).date()
|
||||
|
||||
def current_day():
|
||||
return (datetime.datetime.now(tz=timezone.utc)).date()
|
||||
|
||||
def current_time():
|
||||
return datetime.datetime.now(tz=timezone.utc)
|
||||
|
||||
|
||||
class UserFullnameChoiceField(forms.ModelChoiceField):
|
||||
def label_from_instance(self,obj):
|
||||
return obj.get_full_name()
|
||||
@@ -246,7 +259,7 @@ class PowerTimeFitnessMetric(models.Model):
|
||||
('water','On the water')
|
||||
)
|
||||
|
||||
date = models.DateField(default=datetime.date.today)
|
||||
date = models.DateField(default=current_day)
|
||||
last_workout = models.IntegerField(default=0)
|
||||
user = models.ForeignKey(User)
|
||||
PowerFourMin = models.FloatField(default=0)
|
||||
@@ -334,7 +347,7 @@ class TeamForm(ModelForm):
|
||||
class TeamInvite(models.Model):
|
||||
team = models.ForeignKey(Team)
|
||||
user = models.ForeignKey(User,null=True)
|
||||
issuedate = models.DateField(default=datetime.date.today)
|
||||
issuedate = models.DateField(default=current_day)
|
||||
code = models.CharField(max_length=150,unique=True)
|
||||
email = models.CharField(max_length=150,null=True,blank=True)
|
||||
|
||||
@@ -352,7 +365,7 @@ class TeamInviteForm(ModelForm):
|
||||
class TeamRequest(models.Model):
|
||||
team = models.ForeignKey(Team)
|
||||
user = models.ForeignKey(User,null=True)
|
||||
issuedate = models.DateField(default=datetime.date.today)
|
||||
issuedate = models.DateField(default=current_day)
|
||||
code = models.CharField(max_length=150,unique=True)
|
||||
|
||||
from utils import (
|
||||
@@ -655,8 +668,8 @@ class Rower(models.Model):
|
||||
|
||||
paidplan = models.ForeignKey(PaidPlan,null=True,default=None)
|
||||
|
||||
planexpires = models.DateField(default=datetime.date.today)
|
||||
teamplanexpires = models.DateField(default=datetime.date.today)
|
||||
planexpires = models.DateField(default=current_day)
|
||||
teamplanexpires = models.DateField(default=current_day)
|
||||
clubsize = models.IntegerField(default=0)
|
||||
protrialexpires = models.DateField(blank=True,null=True)
|
||||
plantrialexpires = models.DateField(blank=True,null=True)
|
||||
@@ -1021,11 +1034,6 @@ class GeoPoint(models.Model):
|
||||
# of multiple GeoPoint instances
|
||||
|
||||
|
||||
def half_year_from_now():
|
||||
return (timezone.now()+timezone.timedelta(days=182)).date()
|
||||
|
||||
def a_week_from_now():
|
||||
return (timezone.now()+timezone.timedelta(days=7)).date()
|
||||
|
||||
# models related to training planning - draft
|
||||
# Do we need a separate class TestTarget?
|
||||
@@ -1104,7 +1112,7 @@ class TrainingPlan(models.Model):
|
||||
name = models.CharField(max_length=150,blank=True)
|
||||
status = models.BooleanField(default=True,verbose_name='Active')
|
||||
target = models.ForeignKey(TrainingTarget,blank=True,null=True)
|
||||
startdate = models.DateField(default=datetime.date.today)
|
||||
startdate = models.DateField(default=current_day)
|
||||
enddate = models.DateField(
|
||||
default=half_year_from_now)
|
||||
|
||||
@@ -1193,7 +1201,7 @@ class TrainingPlanForm(ModelForm):
|
||||
elif self.instance.pk is not None:
|
||||
self.fields['target'].queryset = TrainingTarget.objects.filter(
|
||||
manager=self.instance.manager,
|
||||
date__gte=datetime.date.today()).order_by("date")
|
||||
date__gte=current_day()).order_by("date")
|
||||
else:
|
||||
self.fields.pop('target')
|
||||
|
||||
@@ -1468,7 +1476,7 @@ def macrocyclecheckdates(plan):
|
||||
class TrainingMacroCycle(models.Model):
|
||||
plan = models.ForeignKey(TrainingPlan)
|
||||
name = models.CharField(max_length=150,blank=True)
|
||||
startdate = models.DateField(default=datetime.date.today)
|
||||
startdate = models.DateField(default=current_day)
|
||||
enddate = models.DateField(
|
||||
default=half_year_from_now)
|
||||
notes = models.TextField(max_length=300,blank=True)
|
||||
@@ -1554,7 +1562,7 @@ class TrainingMacroCycleForm(ModelForm):
|
||||
class TrainingMesoCycle(models.Model):
|
||||
plan = models.ForeignKey(TrainingMacroCycle)
|
||||
name = models.CharField(max_length=150,blank=True)
|
||||
startdate = models.DateField(default=datetime.date.today)
|
||||
startdate = models.DateField(default=current_day)
|
||||
enddate = models.DateField(
|
||||
default=half_year_from_now)
|
||||
notes = models.TextField(max_length=300,blank=True)
|
||||
@@ -1629,7 +1637,7 @@ class TrainingMesoCycle(models.Model):
|
||||
class TrainingMicroCycle(models.Model):
|
||||
plan = models.ForeignKey(TrainingMesoCycle)
|
||||
name = models.CharField(max_length=150,blank=True)
|
||||
startdate = models.DateField(default=datetime.date.today)
|
||||
startdate = models.DateField(default=current_day)
|
||||
enddate = models.DateField(
|
||||
default=half_year_from_now)
|
||||
notes = models.TextField(max_length=300,blank=True)
|
||||
@@ -1776,7 +1784,7 @@ class PlannedSession(models.Model):
|
||||
comment = models.TextField(max_length=500,blank=True,
|
||||
)
|
||||
|
||||
startdate = models.DateField(default=datetime.date.today,
|
||||
startdate = models.DateField(default=current_day,
|
||||
verbose_name='On or After')
|
||||
|
||||
enddate = models.DateField(default=a_week_from_now,
|
||||
@@ -3288,10 +3296,10 @@ class RowerForm(ModelForm):
|
||||
# An announcement that goes to the right of the workouts list
|
||||
# optionally sends a tweet to our twitter account
|
||||
class SiteAnnouncement(models.Model):
|
||||
created = models.DateField(default=datetime.date.today)
|
||||
created = models.DateField(default=current_day)
|
||||
announcement = models.TextField(max_length=280)
|
||||
expires = models.DateField(default=datetime.date.today)
|
||||
modified = models.DateField(default=datetime.date.today)
|
||||
expires = models.DateField(default=current_day)
|
||||
modified = models.DateField(default=current_day)
|
||||
dotweet = models.BooleanField(default=False)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
|
||||
+5
-5
@@ -58,10 +58,10 @@ def y_axis_range(ydata,miny=0,padding=.1,ultimate=[-1e9,1e9]):
|
||||
def mkplot(row,title):
|
||||
df = row.df
|
||||
|
||||
t = df.ix[:,' ElapsedTime (sec)']
|
||||
p = df.ix[:,' Stroke500mPace (sec/500m)']
|
||||
hr = df.ix[:,' HRCur (bpm)']
|
||||
end_time = int(df.ix[df.shape[0]-1,'TimeStamp (sec)'])
|
||||
t = df.loc[:,' ElapsedTime (sec)']
|
||||
p = df.loc[:,' Stroke500mPace (sec/500m)']
|
||||
hr = df.loc[:,' HRCur (bpm)']
|
||||
end_time = int(df.loc[:,'TimeStamp (sec)'].iloc[df.shape[0]-1])
|
||||
|
||||
fig, ax1 = plt.subplots(figsize=(5,4))
|
||||
|
||||
@@ -69,7 +69,7 @@ def mkplot(row,title):
|
||||
ax1.set_xlabel('Time (h:m)')
|
||||
ax1.set_ylabel('(sec/500)')
|
||||
|
||||
yrange = y_axis_range(df.ix[:,' Stroke500mPace (sec/500m)'],
|
||||
yrange = y_axis_range(df.loc[:,' Stroke500mPace (sec/500m)'],
|
||||
ultimate = [85,190])
|
||||
plt.axis([0,end_time,yrange[1],yrange[0]])
|
||||
|
||||
|
||||
@@ -117,10 +117,10 @@ def createrunkeeperworkoutdata(w):
|
||||
|
||||
# adding diff, trying to see if this is valid
|
||||
#t = row.df.ix[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
||||
t = row.df.ix[:,'TimeStamp (sec)'].values-row.df.ix[0,'TimeStamp (sec)']
|
||||
t = row.df.loc[:,'TimeStamp (sec)'].values-row.df.loc[:,'TimeStamp (sec)'].iloc[0]
|
||||
t[0] = t[1]
|
||||
|
||||
d = row.df.ix[:,'cum_dist'].values
|
||||
d = row.df.loc[:,'cum_dist'].values
|
||||
d[0] = d[1]
|
||||
t = t.astype(int)
|
||||
d = d.astype(int)
|
||||
|
||||
@@ -124,11 +124,11 @@ def createsporttracksworkoutdata(w):
|
||||
duration += +1.0e-6*w.duration.microsecond
|
||||
|
||||
# adding diff, trying to see if this is valid
|
||||
#t = row.df.ix[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
||||
t = row.df.ix[:,'TimeStamp (sec)'].values-row.df.ix[0,'TimeStamp (sec)']
|
||||
#t = row.df.loc[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
||||
t = row.df.loc[:,'TimeStamp (sec)'].values-row.df.loc[:,'TimeStamp (sec)'].iloc[0]
|
||||
t[0] = t[1]
|
||||
|
||||
d = row.df.ix[:,'cum_dist'].values
|
||||
d = row.df.loc[:,'cum_dist'].values
|
||||
d[0] = d[1]
|
||||
t = t.astype(int)
|
||||
d = d.astype(int)
|
||||
|
||||
@@ -518,42 +518,42 @@ def add_workout_from_data(user,importid,data,strokedata,
|
||||
lapidx = res[1]
|
||||
|
||||
unixtime = cum_time+starttimeunix
|
||||
seconds = 0.1*strokedata.ix[:,'t']
|
||||
seconds = 0.1*strokedata.loc[:,'t']
|
||||
|
||||
nr_rows = len(unixtime)
|
||||
|
||||
try:
|
||||
latcoord = strokedata.ix[:,'lat']
|
||||
loncoord = strokedata.ix[:,'lon']
|
||||
latcoord = strokedata.loc[:,'lat']
|
||||
loncoord = strokedata.loc[:,'lon']
|
||||
except:
|
||||
latcoord = np.zeros(nr_rows)
|
||||
loncoord = np.zeros(nr_rows)
|
||||
|
||||
|
||||
try:
|
||||
strokelength = strokedata.ix[:,'strokelength']
|
||||
strokelength = strokedata.loc[:,'strokelength']
|
||||
except:
|
||||
strokelength = np.zeros(nr_rows)
|
||||
|
||||
dist2 = 0.1*strokedata.ix[:,'d']
|
||||
dist2 = 0.1*strokedata.loc[:,'d']
|
||||
|
||||
try:
|
||||
spm = strokedata.ix[:,'spm']
|
||||
spm = strokedata.loc[:,'spm']
|
||||
except KeyError:
|
||||
spm = 0*dist2
|
||||
|
||||
try:
|
||||
hr = strokedata.ix[:,'hr']
|
||||
hr = strokedata.loc[:,'hr']
|
||||
except KeyError:
|
||||
hr = 0*spm
|
||||
pace = strokedata.ix[:,'p']/10.
|
||||
pace = strokedata.loc[:,'p']/10.
|
||||
pace = np.clip(pace,0,1e4)
|
||||
pace = pace.replace(0,300)
|
||||
|
||||
velo = 500./pace
|
||||
|
||||
try:
|
||||
power = strokedata.ix[:,'power']
|
||||
power = strokedata.loc[:,'power']
|
||||
except KeyError:
|
||||
power = 2.8*velo**3
|
||||
|
||||
|
||||
@@ -185,16 +185,27 @@ class SessionFactory(factory.DjangoModelFactory):
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
def cleanup(request):
|
||||
def remove_test_files():
|
||||
|
||||
for filename in os.listdir('media/mailbox_attachments'):
|
||||
path = os.path.join('media/mailbox_attachments/',filename)
|
||||
if not os.path.isdir(path):
|
||||
os.remove(path)
|
||||
try:
|
||||
for filename in os.listdir('media/mailbox_attachments'):
|
||||
path = os.path.join('media/mailbox_attachments/',filename)
|
||||
if not os.path.isdir(path):
|
||||
try:
|
||||
os.remove(path)
|
||||
except OSError:
|
||||
pass
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
for filename in os.listdir('rowers/tests/testdata/temp'):
|
||||
path = os.path.join('rowers/tests/testdata/temp/',filename)
|
||||
if not os.path.isdir(path):
|
||||
os.remove(path)
|
||||
try:
|
||||
for filename in os.listdir('rowers/tests/testdata/temp'):
|
||||
path = os.path.join('rowers/tests/testdata/temp/',filename)
|
||||
if not os.path.isdir(path):
|
||||
try:
|
||||
os.remove(path)
|
||||
except OSError:
|
||||
pass
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
|
||||
request.addfinalizer(remove_test_files)
|
||||
|
||||
@@ -31,7 +31,7 @@ class SimpleViewTest(TestCase):
|
||||
except (IOError, WindowsError,OSError):
|
||||
pass
|
||||
|
||||
def start_protrial(self):
|
||||
def test_start_protrial(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
@@ -43,7 +43,7 @@ class SimpleViewTest(TestCase):
|
||||
expected_url='/rowers/list-workouts/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
def start_plantrial(self):
|
||||
def test_start_plantrial(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
@@ -36,11 +36,11 @@ class OTWCPChartTest(TestCase):
|
||||
for filename in os.listdir(u'rowers/tests/testdata/otwcp'):
|
||||
a2 = 'rowers/tests/testdata/otwcp/temp/'+filename
|
||||
try:
|
||||
copyfile(u'rowers/tests/testdata/otwcp/'+filename,a2)
|
||||
copy(u'rowers/tests/testdata/otwcp/'+filename,a2)
|
||||
row = rdata(a2)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -124,16 +124,16 @@ class CPChartTest(TestCase):
|
||||
|
||||
recordsdf = pd.read_csv('rowers/tests/worldrecords.csv',encoding='utf-8')
|
||||
|
||||
for i in range(len(recordsdf)):
|
||||
for i in recordsdf.index:
|
||||
record = C2WorldClassAgePerformance(
|
||||
name = recordsdf.ix[i,'name'],
|
||||
age = recordsdf.ix[i,'age'],
|
||||
distance = recordsdf.ix[i,'distance'],
|
||||
duration = recordsdf.ix[i,'duration'],
|
||||
power = recordsdf.ix[i,'power'],
|
||||
season = recordsdf.ix[i,'season'],
|
||||
sex = recordsdf.ix[i,'sex'],
|
||||
weightcategory = recordsdf.ix[i,'weightcategory'],
|
||||
name = recordsdf.loc[i,'name'],
|
||||
age = recordsdf.loc[i,'age'],
|
||||
distance = recordsdf.loc[i,'distance'],
|
||||
duration = recordsdf.loc[i,'duration'],
|
||||
power = recordsdf.loc[i,'power'],
|
||||
season = recordsdf.loc[i,'season'],
|
||||
sex = recordsdf.loc[i,'sex'],
|
||||
weightcategory = recordsdf.loc[i,'weightcategory'],
|
||||
)
|
||||
|
||||
record.save()
|
||||
@@ -142,11 +142,11 @@ class CPChartTest(TestCase):
|
||||
|
||||
r = self.u.rower
|
||||
|
||||
for i in range(len(perfsdf)):
|
||||
for i in perfsdf.index:
|
||||
perf = CalcAgePerformance(
|
||||
age = age,
|
||||
duration = perfsdf.ix[i,'duration'],
|
||||
power = perfsdf.ix[i,'power'],
|
||||
duration = perfsdf.loc[i,'duration'],
|
||||
power = perfsdf.loc[i,'power'],
|
||||
sex = r.sex,
|
||||
weightcategory = r.weightcategory
|
||||
)
|
||||
|
||||
@@ -181,7 +181,7 @@ race 1
|
||||
""")
|
||||
m.save()
|
||||
a2 = 'media/mailbox_attachments/minute.csv'
|
||||
copyfile('rowers/tests/testdata/minute.csv',a2)
|
||||
copy('rowers/tests/testdata/minute.csv',a2)
|
||||
a = MessageAttachment(message=m,document=a2[6:])
|
||||
a.save()
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class C2Objects(DjangoTestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -169,7 +169,7 @@ class C2ObjectsTokenExpired(DjangoTestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -247,7 +247,7 @@ class StravaObjects(DjangoTestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -354,7 +354,7 @@ class STObjects(DjangoTestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -484,7 +484,7 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -577,7 +577,7 @@ class UAObjects(DjangoTestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -679,7 +679,7 @@ class TPObjects(DjangoTestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
@@ -767,7 +767,7 @@ boattype: 2x
|
||||
""")
|
||||
m.save()
|
||||
a2 = 'media/mailbox_attachments/'+filename
|
||||
copyfile('rowers/tests/testdata/'+filename,a2)
|
||||
copy('rowers/tests/testdata/'+filename,a2)
|
||||
a = MessageAttachment(message=m,document=a2[6:])
|
||||
a.save()
|
||||
|
||||
|
||||
@@ -216,7 +216,7 @@ class URLTests(TestCase):
|
||||
'/rowers/workout/1/split/',
|
||||
'/rowers/workout/1/stats/',
|
||||
'/rowers/workout/1/stream/',
|
||||
'/rowers/workout/1/task/',
|
||||
# '/rowers/workout/1/task/',
|
||||
'/rowers/workout/1/test_strokedata/',
|
||||
'/rowers/workout/1/toggle-ranking/',
|
||||
'/rowers/workout/1/undosmoothenpace/',
|
||||
|
||||
@@ -26,7 +26,7 @@ class UserMiddleWareTest(TestCase):
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
|
||||
BIN
Binary file not shown.
@@ -111,14 +111,14 @@ def createunderarmourworkoutdata(w):
|
||||
notes = 'from '+w.workoutsource+' via rowsandall.com'
|
||||
|
||||
# adding diff, trying to see if this is valid
|
||||
#t = row.df.ix[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
||||
t = row.df.ix[:,'TimeStamp (sec)'].values #-row.df.ix[0,'TimeStamp (sec)']
|
||||
#t = row.df.loc[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
||||
t = row.df.loc[:,'TimeStamp (sec)'].values #-row.df.ix[0,'TimeStamp (sec)']
|
||||
|
||||
# t += arrow.get(st).timestamp
|
||||
|
||||
# t[0] = t[1]
|
||||
|
||||
d = row.df.ix[:,'cum_dist'].values
|
||||
d = row.df.loc[:,'cum_dist'].values
|
||||
d[0] = d[1]
|
||||
t = t.astype(float)
|
||||
|
||||
|
||||
+2
-2
@@ -405,8 +405,8 @@ def ewmovingaverage(interval,window_size):
|
||||
idf_ewma1 = intervaldf.ewm(span=window_size)
|
||||
idf_ewma2 = intervaldf[::-1].ewm(span=window_size)
|
||||
|
||||
i_ewma1 = idf_ewma1.mean().ix[:,'v']
|
||||
i_ewma2 = idf_ewma2.mean().ix[:,'v']
|
||||
i_ewma1 = idf_ewma1.mean().loc[:,'v']
|
||||
i_ewma2 = idf_ewma2.mean().loc[:,'v']
|
||||
|
||||
interval2 = np.vstack((i_ewma1,i_ewma2[::-1]))
|
||||
interval2 = np.mean( interval2, axis=0) # average
|
||||
|
||||
@@ -12,7 +12,7 @@ def start_trial_view(request):
|
||||
r.protrialexpires = datetime.date.today()+datetime.timedelta(13)
|
||||
r.save()
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
messages.info(request,'We have started your 14 day trial period')
|
||||
|
||||
@@ -40,7 +40,7 @@ def start_plantrial_view(request):
|
||||
r.protrialexpires = datetime.date.today()+datetime.timedelta(13)
|
||||
r.save()
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
messages.info(request,'We have started your 14 day trial period')
|
||||
|
||||
@@ -145,7 +145,7 @@ def rower_exportsettings_view(request,userid=0):
|
||||
'name': 'Profile'
|
||||
},
|
||||
{
|
||||
'url': reverse(rower_exportsettings_view),
|
||||
'url': reverse('rower_exportsettings_view'),
|
||||
'name': 'Export Settings'
|
||||
}
|
||||
]
|
||||
@@ -171,7 +171,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
|
||||
'name': 'Profile'
|
||||
},
|
||||
{
|
||||
'url': reverse(rower_edit_view),
|
||||
'url': reverse('rower_edit_view'),
|
||||
'name': 'Account Settings'
|
||||
}
|
||||
]
|
||||
@@ -261,7 +261,7 @@ def rower_prefs_view(request,userid=0,message=""):
|
||||
'name': 'Profile'
|
||||
},
|
||||
{
|
||||
'url': reverse(rower_prefs_view),
|
||||
'url': reverse('rower_prefs_view'),
|
||||
'name': 'Zones'
|
||||
}
|
||||
]
|
||||
@@ -375,7 +375,7 @@ def rower_revokeapp_view(request,id=0):
|
||||
form = RowerForm(instance=r)
|
||||
powerform = RowerPowerForm(instance=r)
|
||||
grants = AccessToken.objects.filter(user=request.user)
|
||||
url = reverse(rower_edit_view)
|
||||
url = reverse('rower_edit_view')
|
||||
return HttpResponseRedirect(url)
|
||||
except AccessToken.DoesNotExist:
|
||||
raise Http404("Access token doesn't exist")
|
||||
@@ -459,7 +459,7 @@ def rower_update_empower_view(
|
||||
|
||||
messages.info(request,successmessage)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
|
||||
|
||||
@@ -80,11 +80,11 @@ urlpatterns += [
|
||||
|
||||
if settings.DEBUG:
|
||||
import debug_toolbar
|
||||
import django
|
||||
urlpatterns += [
|
||||
url(r'^__debug__/',include(debug_toolbar.urls)),
|
||||
url(
|
||||
regex=r'^static/(?P<path>.*)$',
|
||||
view='django.views.static.serve',
|
||||
url(r'^static/(?P<path>.*)$',
|
||||
django.views.static.serve,
|
||||
kwargs={'document_root': settings.STATIC_ROOT,}
|
||||
)
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user