fixing strava tests
This commit is contained in:
394
rowers/views.py
394
rowers/views.py
@@ -8887,11 +8887,6 @@ def cumstats(request,theuser=0,
|
||||
|
||||
cordict[field1] = thedict
|
||||
|
||||
# interactive box plot
|
||||
datadf['workoutid'].replace(datemapping,inplace=True)
|
||||
datadf.rename(columns={"workoutid":"date"},inplace=True)
|
||||
datadf = datadf.sort_values(['date'])
|
||||
|
||||
# set options form correctly
|
||||
initial = {}
|
||||
initial['includereststrokes'] = includereststrokes
|
||||
@@ -9188,157 +9183,7 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
|
||||
'otherstats':otherstats,
|
||||
})
|
||||
|
||||
# The Advanced edit page
|
||||
@login_required()
|
||||
def workout_advanced_view(request,id=0,message="",successmessage=""):
|
||||
row = get_workout(id)
|
||||
|
||||
# form = WorkoutForm(instance=row)
|
||||
g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime")
|
||||
for i in g:
|
||||
try:
|
||||
width,height = Image.open(i.filename).size
|
||||
i.width = width
|
||||
i.height = height
|
||||
i.save()
|
||||
except:
|
||||
pass
|
||||
|
||||
# check if user is owner of this workout
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
messages.error(request,message)
|
||||
url = reverse(workouts_view)
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
# create interactive plot
|
||||
f1 = row.csvfilename
|
||||
u = row.user.user
|
||||
r = getrower(u)
|
||||
|
||||
# create interactive plot
|
||||
try:
|
||||
res = interactive_chart(id,promember=1)
|
||||
script = res[0]
|
||||
div = res[1]
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
messages.error(request,message)
|
||||
messages.info(request,successmessage)
|
||||
|
||||
|
||||
if row.workouttype in mytypes.otwtypes:
|
||||
return render(request,
|
||||
'advancedotw.html',
|
||||
{'workout':row,
|
||||
'teams':get_my_teams(request.user),
|
||||
'interactiveplot':script,
|
||||
'the_div':div})
|
||||
else:
|
||||
return render(request,
|
||||
'advancededit.html',
|
||||
{'workout':row,
|
||||
'teams':get_my_teams(request.user),
|
||||
'interactiveplot':script,
|
||||
'the_div':div})
|
||||
|
||||
# The interactive plot comparing two workouts (obsolete version)
|
||||
def workout_comparison_view(request,id1=0,id2=0,xparam='distance',yparam='spm'):
|
||||
promember=0
|
||||
if not request.user.is_anonymous():
|
||||
r = getrower(request.user)
|
||||
result = request.user.is_authenticated() and ispromember(request.user)
|
||||
if result:
|
||||
promember=1
|
||||
|
||||
# create interactive plot
|
||||
res = interactive_comparison_chart(id1,id2,xparam=xparam,yparam=yparam,
|
||||
promember=promember)
|
||||
script = res[0]
|
||||
div = res[1]
|
||||
|
||||
axchoicesbasic = {ax[0]:ax[1] for ax in axes if ax[4]=='basic'}
|
||||
axchoicespro = {ax[0]:ax[1] for ax in axes if ax[4]=='pro'}
|
||||
noylist = ["time","distance"]
|
||||
axchoicesbasic.pop("cumdist")
|
||||
|
||||
return render(request,
|
||||
'comparisonchart.html',
|
||||
{'interactiveplot':script,
|
||||
'the_div':div,
|
||||
'teams':get_my_teams(request.user),
|
||||
'id1':id1,
|
||||
'id2':id2,
|
||||
'axchoicesbasic':axchoicesbasic,
|
||||
'axchoicespro':axchoicespro,
|
||||
'noylist':noylist,
|
||||
'xparam':xparam,
|
||||
'yparam':yparam,
|
||||
})
|
||||
|
||||
# Updated version of comparison plot
|
||||
def workout_comparison_view2(request,id1=0,id2=0,xparam='distance',
|
||||
yparam='spm',plottype='line'):
|
||||
promember=0
|
||||
if not request.user.is_anonymous():
|
||||
r = getrower(request.user)
|
||||
result = request.user.is_authenticated() and ispromember(request.user)
|
||||
if result:
|
||||
promember=1
|
||||
|
||||
if not Workout.objects.filter(id=id1).exists() or not Workout.objects.filter(id=id2).exists():
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# create interactive plot
|
||||
res = interactive_comparison_chart(id1,id2,xparam=xparam,yparam=yparam,
|
||||
promember=promember,plottype=plottype)
|
||||
script = res[0]
|
||||
div = res[1]
|
||||
|
||||
axchoicesbasic = {ax[0]:ax[1] for ax in axes if ax[4]=='basic'}
|
||||
axchoicespro = {ax[0]:ax[1] for ax in axes if ax[4]=='pro'}
|
||||
noylist = ["time","distance"]
|
||||
axchoicesbasic.pop("cumdist")
|
||||
|
||||
row1 = Workout.objects.get(id=id1)
|
||||
row2 = Workout.objects.get(id=id2)
|
||||
|
||||
mayedit = 0
|
||||
if request.user == row1.user.user:
|
||||
mayedit=1
|
||||
if checkworkoutuser(request.user,row1):
|
||||
mayedit=1
|
||||
|
||||
if row1.workouttype != 'water' or row2.workouttype != 'water':
|
||||
axchoicespro.pop('slip')
|
||||
axchoicespro.pop('wash')
|
||||
axchoicespro.pop('catch')
|
||||
axchoicespro.pop('finish')
|
||||
axchoicespro.pop('totalangle')
|
||||
axchoicespro.pop('effectiveangle')
|
||||
axchoicespro.pop('peakforceangle')
|
||||
|
||||
|
||||
return render(request,
|
||||
'comparisonchart2.html',
|
||||
{'interactiveplot':script,
|
||||
'the_div':div,
|
||||
'teams':get_my_teams(request.user),
|
||||
'id1':id1,
|
||||
'id2':id2,
|
||||
'mayedit':mayedit,
|
||||
'axchoicesbasic':axchoicesbasic,
|
||||
'axchoicespro':axchoicespro,
|
||||
'noylist':noylist,
|
||||
'xparam':xparam,
|
||||
'yparam':yparam,
|
||||
'plottype':plottype,
|
||||
'promember':promember,
|
||||
})
|
||||
|
||||
# Change default landing page
|
||||
@login_required()
|
||||
@@ -9365,47 +9210,7 @@ def get_workout_default_page(request,id):
|
||||
else:
|
||||
return reverse(workout_workflow_view,kwargs={'id':str(id)})
|
||||
|
||||
# Workflow Configuration
|
||||
@login_required()
|
||||
def workout_workflow_config_view(request):
|
||||
request.session['referer'] = absolute(request)['PATH']
|
||||
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
|
||||
try:
|
||||
workoutid = request.session['lastworkout']
|
||||
except KeyError:
|
||||
workoutid = 0
|
||||
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
if request.method == 'POST' and 'leftpanel' in request.POST:
|
||||
formleft = WorkFlowLeftPanelForm(request.POST)
|
||||
if formleft.is_valid():
|
||||
leftpanel = formleft.cleaned_data['leftpanel']
|
||||
r.workflowleftpanel = leftpanel
|
||||
r.save()
|
||||
if request.method == 'POST' and 'middlepanel' in request.POST:
|
||||
formmiddle = WorkFlowMiddlePanelForm(request.POST)
|
||||
if formmiddle.is_valid():
|
||||
middlepanel = formmiddle.cleaned_data['middlepanel']
|
||||
r.workflowmiddlepanel = middlepanel
|
||||
r.save()
|
||||
|
||||
|
||||
formleft = WorkFlowLeftPanelForm(instance=r)
|
||||
formmiddle = WorkFlowMiddlePanelForm(instance=r)
|
||||
|
||||
tmplt = 'workflowconfig.html'
|
||||
|
||||
|
||||
return render(request,tmplt,
|
||||
{
|
||||
'rower':r,
|
||||
'formleft':formleft,
|
||||
'formmiddle':formmiddle,
|
||||
'workoutid': workoutid,
|
||||
})
|
||||
|
||||
# Workflow configuration
|
||||
@login_required()
|
||||
def workout_workflow_config2_view(request,userid=0):
|
||||
request.session['referer'] = absolute(request)['PATH']
|
||||
@@ -9902,46 +9707,6 @@ def workout_flexchart3_view(request,*args,**kwargs):
|
||||
})
|
||||
|
||||
|
||||
# The interactive plot with the colored Heart rate zones
|
||||
def workout_biginteractive_view(request,id=0,message="",successmessage=""):
|
||||
row = get_workout(id)
|
||||
|
||||
# check if user is owner of this workout
|
||||
|
||||
|
||||
# create interactive plot
|
||||
f1 = row.csvfilename
|
||||
u = row.user.user
|
||||
# r = getrower(u)
|
||||
|
||||
promember=0
|
||||
mayedit=0
|
||||
if not request.user.is_anonymous():
|
||||
r = getrower(request.user)
|
||||
result = request.user.is_authenticated() and ispromember(request.user)
|
||||
if result:
|
||||
promember=1
|
||||
if request.user == row.user.user:
|
||||
mayedit=1
|
||||
|
||||
|
||||
# create interactive plot
|
||||
res = interactive_bar_chart(id,promember=promember)
|
||||
script = res[0]
|
||||
div = res[1]
|
||||
|
||||
messages.error(request,message)
|
||||
messages.info(request,successmessage)
|
||||
|
||||
|
||||
return render(request,
|
||||
'biginteractive1.html',
|
||||
{'workout':row,
|
||||
'teams':get_my_teams(request.user),
|
||||
'interactiveplot':script,
|
||||
'the_div':div,
|
||||
'promember':promember,
|
||||
'mayedit':mayedit})
|
||||
|
||||
# The interactive plot with wind corrected pace for OTW outings
|
||||
def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
|
||||
@@ -10001,63 +9766,6 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
|
||||
'the_div':div,
|
||||
'mayedit':mayedit})
|
||||
|
||||
# the page where you can choose where to export this workout
|
||||
@login_required()
|
||||
def workout_export_view(request,id=0, message="", successmessage=""):
|
||||
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
|
||||
row = get_workout(id)
|
||||
|
||||
try:
|
||||
thetoken = c2_open(request.user)
|
||||
except NoTokenError:
|
||||
thetoken = 0
|
||||
|
||||
if (checkworkoutuser(request.user,row)) and thetoken:
|
||||
c2userid = c2stuff.get_userid(thetoken)
|
||||
else:
|
||||
c2userid = 0
|
||||
|
||||
try:
|
||||
rktoken = runkeeper_open(request.user)
|
||||
except NoTokenError:
|
||||
rktoken = 0
|
||||
|
||||
if (checkworkoutuser(request.user,row)) and rktoken:
|
||||
rkuserid = runkeeperstuff.get_userid(rktoken)
|
||||
else:
|
||||
rkuserid = 0
|
||||
|
||||
|
||||
# form = WorkoutForm(instance=row)
|
||||
g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime")
|
||||
for i in g:
|
||||
try:
|
||||
width,height = Image.open(i.filename).size
|
||||
i.width = width
|
||||
i.height = height
|
||||
i.save()
|
||||
except:
|
||||
pass
|
||||
|
||||
# check if user is owner of this workout
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
messages.error(request,message)
|
||||
url = reverse(workouts_view)
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
messages.error(request,message)
|
||||
messages.info(request,successmessage)
|
||||
|
||||
return render(request,
|
||||
'export.html',
|
||||
{'workout':row,
|
||||
'teams':get_my_teams(request.user),
|
||||
'c2userid':c2userid,
|
||||
'rkuserid':rkuserid,
|
||||
})
|
||||
|
||||
#
|
||||
@login_required()
|
||||
@@ -11081,20 +10789,18 @@ def workout_add_chart_view(request,id,plotnr=1):
|
||||
# The page where you select which Strava workout to import
|
||||
@login_required()
|
||||
def workout_stravaimport_view(request,message="",userid=0):
|
||||
r = getrequestrower(request,userid=userid)
|
||||
if r.user != request.user:
|
||||
messages.info(request,"You cannot import other people's workouts from Strava")
|
||||
|
||||
try:
|
||||
thetoken = strava_open(request.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
|
||||
|
||||
res = stravastuff.get_strava_workout_list(request.user)
|
||||
|
||||
r = getrequestrower(request,userid=userid)
|
||||
|
||||
if r.user != request.user:
|
||||
messages.info(request,"You cannot import other people's workouts from Concept2")
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
|
||||
if (res.status_code != 200):
|
||||
if (res.status_code == 401):
|
||||
@@ -12429,95 +12135,7 @@ def team_workout_upload_view(request,message="",
|
||||
|
||||
|
||||
|
||||
# Ask the user if he really wants to delete the workout
|
||||
@login_required()
|
||||
def workout_delete_confirm_view(request, id=0):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
raise PermissionDenied("You are not allowed to delete this workout")
|
||||
else:
|
||||
url = request.META.get('HTTP_REFERER','/')
|
||||
return render(request,'workout_delete_confirm.html',
|
||||
{'id':int(id),
|
||||
'teams':get_my_teams(request.user),
|
||||
'workout':row,
|
||||
'url':url})
|
||||
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# Really deleting the workout
|
||||
@login_required()
|
||||
def workout_delete_view(request,id=0):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
raise PermissionDenied("You are not allowed to delete this workout")
|
||||
else:
|
||||
# files are removed by pre-delete in models.py
|
||||
row.delete()
|
||||
|
||||
messages.info(request,'Workout deleted')
|
||||
try:
|
||||
url = request.session['referer']
|
||||
if 'rowers/workout/' in url:
|
||||
url = reverse(workouts_view)
|
||||
except KeyError:
|
||||
url = reverse(workouts_view)
|
||||
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# Ask the user to confirm that he wants to delete a chart
|
||||
@login_required()
|
||||
def graph_delete_confirm_view(request, id=0):
|
||||
try:
|
||||
img = GraphImage.objects.get(id=id)
|
||||
row = Workout.objects.get(id=img.workout.id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
raise PermissionDenied("You are not allowed to delete this workout")
|
||||
else:
|
||||
try:
|
||||
url = request.session['referer']
|
||||
except KeyError:
|
||||
url = '/rowers/list-graphs'
|
||||
request.session['referer'] = url
|
||||
return render(request,'graphimage_delete_confirm.html',
|
||||
{'id':int(id),
|
||||
'teams':get_my_teams(request.user),
|
||||
'graph':img,
|
||||
'url':url})
|
||||
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
except GraphImage.DoesNotExist:
|
||||
raise Http404("The image doesn't exist")
|
||||
|
||||
# Really deleting the chart
|
||||
@login_required()
|
||||
def graph_delete_view(request,id=0):
|
||||
try:
|
||||
img = GraphImage.objects.get(id=id)
|
||||
row = Workout.objects.get(id=img.workout.id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
raise PermissionDenied("You are not allowed to delete this graph")
|
||||
else:
|
||||
img.delete()
|
||||
messages.info(request,'Graph deleted')
|
||||
try:
|
||||
url = request.session['referer']
|
||||
except KeyError:
|
||||
url = reverse(graphs_view)
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
except GraphImage.DoesNotExist:
|
||||
raise Http404("Graph Image doesn't exist")
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# A page with all the recent graphs (searchable on workout name)
|
||||
@login_required()
|
||||
|
||||
Reference in New Issue
Block a user