Merge tag 'v7.04' into develop
another attempts
This commit is contained in:
@@ -56,7 +56,6 @@ from django.conf import settings
|
|||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import utils
|
import utils
|
||||||
import datautils
|
import datautils
|
||||||
from utils import lbstoN,myqueue,is_ranking_piece,wavg
|
from utils import lbstoN,myqueue,is_ranking_piece,wavg
|
||||||
|
|||||||
@@ -627,11 +627,11 @@ def delete_strokedata(id,debug=False):
|
|||||||
conn.close()
|
conn.close()
|
||||||
engine.dispose()
|
engine.dispose()
|
||||||
|
|
||||||
def update_strokedata(id,df,debug=False):
|
def update_strokedata(id,df,debug=False,bands=True,barchart=True,otwpower=True):
|
||||||
delete_strokedata(id,debug=debug)
|
delete_strokedata(id,debug=debug)
|
||||||
if debug:
|
if debug:
|
||||||
print "updating ",id
|
print "updating ",id
|
||||||
rowdata = dataprep(df,id=id,bands=True,barchart=True,otwpower=True,
|
rowdata = dataprep(df,id=id,bands=False,barchart=True,otwpower=True,
|
||||||
debug=debug)
|
debug=debug)
|
||||||
|
|
||||||
return rowdata
|
return rowdata
|
||||||
@@ -1222,10 +1222,12 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
|||||||
|
|
||||||
# write data if id given
|
# write data if id given
|
||||||
if id != 0:
|
if id != 0:
|
||||||
|
data['workoutid'] = id
|
||||||
if debug:
|
if debug:
|
||||||
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)
|
||||||
|
|
||||||
with engine.connect() as conn, conn.begin():
|
with engine.connect() as conn, conn.begin():
|
||||||
data.to_sql('strokedata',engine,if_exists='append',index=False)
|
data.to_sql('strokedata',engine,if_exists='append',index=False)
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ rowingmetrics = (
|
|||||||
|
|
||||||
('velo',{
|
('velo',{
|
||||||
'numtype':'float',
|
'numtype':'float',
|
||||||
'null':False,
|
'null':True,
|
||||||
'verbose_name': 'Boat Speed (m/s)',
|
'verbose_name': 'Boat Speed (m/s)',
|
||||||
'ax_min': 0,
|
'ax_min': 0,
|
||||||
'ax_max': 8,
|
'ax_max': 8,
|
||||||
|
|||||||
@@ -119,19 +119,28 @@ def get_strava_workout_list(user):
|
|||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def add_stroke_data(user,stravaid,workoutid,startdatetime,csvfilename):
|
def add_stroke_data(user,stravaid,workoutid,startdatetime,csvfilename,debug=False):
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
|
|
||||||
starttimeunix = arrow.get(startdatetime).timestamp
|
starttimeunix = arrow.get(startdatetime).timestamp
|
||||||
|
|
||||||
|
if not debug:
|
||||||
job = myqueue(queue,
|
job = myqueue(queue,
|
||||||
handle_strava_import_stroke_data,
|
handle_strava_import_stroke_data,
|
||||||
r.stravatoken,
|
r.stravatoken,
|
||||||
stravaid,
|
stravaid,
|
||||||
workoutid,
|
workoutid,
|
||||||
starttimeunix,
|
starttimeunix,
|
||||||
csvfilename)
|
csvfilename)
|
||||||
|
else:
|
||||||
|
handle_strava_import_stroke_data(
|
||||||
|
r.stravatoken,
|
||||||
|
stravaid,
|
||||||
|
workoutid,
|
||||||
|
starttimeunix,
|
||||||
|
csvfilename,
|
||||||
|
debug=debug
|
||||||
|
)
|
||||||
|
|
||||||
# gets all new Strava workouts for a rower
|
# gets all new Strava workouts for a rower
|
||||||
def get_strava_workouts(rower):
|
def get_strava_workouts(rower):
|
||||||
@@ -160,7 +169,7 @@ def get_strava_workouts(rower):
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def create_async_workout(alldata,user,stravaid):
|
def create_async_workout(alldata,user,stravaid,debug=False):
|
||||||
data = alldata[stravaid]
|
data = alldata[stravaid]
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
distance = data['distance']
|
distance = data['distance']
|
||||||
@@ -245,7 +254,7 @@ def create_async_workout(alldata,user,stravaid):
|
|||||||
|
|
||||||
# Check if workout has stroke data, and get the stroke data
|
# Check if workout has stroke data, and get the stroke data
|
||||||
|
|
||||||
result = add_stroke_data(user,stravaid,w.id,rowdatetime,csvfilename)
|
result = add_stroke_data(user,stravaid,w.id,rowdatetime,csvfilename,debug=debug)
|
||||||
|
|
||||||
return w.id
|
return w.id
|
||||||
|
|
||||||
|
|||||||
@@ -206,6 +206,8 @@ def handle_strava_import_stroke_data(stravatoken,
|
|||||||
|
|
||||||
res = df.to_csv(csvfilename+'.gz',index_label='index',compression='gzip')
|
res = df.to_csv(csvfilename+'.gz',index_label='index',compression='gzip')
|
||||||
|
|
||||||
|
|
||||||
|
# data = update_strokedata(workoutid,df,debug=debug)
|
||||||
data = dataprep(df,id=workoutid,bands=False,debug=debug)
|
data = dataprep(df,id=workoutid,bands=False,debug=debug)
|
||||||
# startdatetime = datetime.datetime.strptime(startdatetime,"%Y-%m-%d-%H:%M:%S")
|
# startdatetime = datetime.datetime.strptime(startdatetime,"%Y-%m-%d-%H:%M:%S")
|
||||||
|
|
||||||
|
|||||||
@@ -326,6 +326,7 @@ urlpatterns = [
|
|||||||
url(r'^workout/c2import/all/(?P<page>\d+)$',views.workout_getc2workout_all),
|
url(r'^workout/c2import/all/(?P<page>\d+)$',views.workout_getc2workout_all),
|
||||||
url(r'^workout/stravaimport/(?P<stravaid>\d+)/$',views.workout_getstravaworkout_view),
|
url(r'^workout/stravaimport/(?P<stravaid>\d+)/$',views.workout_getstravaworkout_view),
|
||||||
url(r'^workout/stravaimport/all/$',views.workout_getstravaworkout_all),
|
url(r'^workout/stravaimport/all/$',views.workout_getstravaworkout_all),
|
||||||
|
url(r'^workout/stravaimport/next/$',views.workout_getstravaworkout_next),
|
||||||
url(r'^workout/sporttracksimport/$',views.workout_sporttracksimport_view),
|
url(r'^workout/sporttracksimport/$',views.workout_sporttracksimport_view),
|
||||||
url(r'^workout/sporttracksimport/(?P<sporttracksid>\d+)/$',views.workout_getsporttracksworkout_view),
|
url(r'^workout/sporttracksimport/(?P<sporttracksid>\d+)/$',views.workout_getsporttracksworkout_view),
|
||||||
url(r'^workout/sporttracksimport/all/$',views.workout_getsporttracksworkout_all),
|
url(r'^workout/sporttracksimport/all/$',views.workout_getsporttracksworkout_all),
|
||||||
|
|||||||
@@ -10234,6 +10234,40 @@ def workout_getstravaworkout_all(request):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
|
# Imports all new workouts from SportTracks
|
||||||
|
@login_required()
|
||||||
|
def workout_getstravaworkout_next(request):
|
||||||
|
|
||||||
|
r = Rower.objects.get(user=request.user)
|
||||||
|
|
||||||
|
res = stravastuff.get_strava_workout_list(r.user)
|
||||||
|
|
||||||
|
if (res.status_code != 200):
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
stravaids = [int(item['id']) for item in res.json()]
|
||||||
|
|
||||||
|
alldata = {}
|
||||||
|
for item in res.json():
|
||||||
|
alldata[item['id']] = item
|
||||||
|
|
||||||
|
knownstravaids = uniqify([
|
||||||
|
w.uploadedtostrava for w in Workout.objects.filter(user=r)
|
||||||
|
])
|
||||||
|
newids = [stravaid for stravaid in stravaids if not stravaid in knownstravaids]
|
||||||
|
|
||||||
|
theid = newids[0]
|
||||||
|
|
||||||
|
workoutid = stravastuff.create_async_workout(alldata,r.user,stravaid,debug=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
url = reverse(workouts_view)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Imports a workout from Concept2
|
# Imports a workout from Concept2
|
||||||
@login_required()
|
@login_required()
|
||||||
|
|||||||
Reference in New Issue
Block a user