diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 2cf91786..b76ed1a2 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -424,7 +424,8 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', a_messages.error(r.user,'Failed consistency check: '+key+', not corrected') if not allchecks and consistencychecks: - row.repair() + # row.repair() + pass if row == 0: diff --git a/rowers/dataprepnodjango.py b/rowers/dataprepnodjango.py index 40aa638d..78d3903b 100644 --- a/rowers/dataprepnodjango.py +++ b/rowers/dataprepnodjango.py @@ -139,7 +139,8 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', allchecks = 0 if not allchecks: - row.repair() + #row.repair() + pass if row == 0: diff --git a/rowers/views.py b/rowers/views.py index fc15ea5e..85f321aa 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -279,17 +279,39 @@ from rowers.models import checkworkoutuser # Check if a user is a Coach member def iscoachmember(user): if not user.is_anonymous(): - r = Rower.objects.get(user=user) + try: + r = Rower.objects.get(user=user) + except Rower.DoesNotExist: + r = Rower(user=user) + r.save() + result = user.is_authenticated() and (r.rowerplan=='coach') else: result = False return result +def getrower(user): + if not user.is_anonymous(): + try: + r = Rower.objects.get(user=user) + except Rower.DoesNotExist: + r = Rower(user=user) + r.save() + else: + raise PermissionDenied("You need to log in to use this function") + + return r + # Check if a user is a Pro member def ispromember(user): if not user.is_anonymous(): - r = Rower.objects.get(user=user) + try: + r = Rower.objects.get(user=user) + except Rower.DoesNotExists: + r = Rower(user=user) + r.save() + result = user.is_authenticated() and (r.rowerplan=='pro' or r.rowerplan=='coach') else: result = False @@ -408,7 +430,7 @@ def add_workout_from_strokedata(user,importid,data,strokedata, except: thetimezone = 'UTC' - r = Rower.objects.get(user=user) + r = getrower(user) try: rowdatetime = iso8601.parse_date(data['date_utc']) except KeyError: @@ -572,7 +594,7 @@ def add_workout_from_runkeeperdata(user,importid,data): except: utcoffset = 0 - r = Rower.objects.get(user=user) + r = getrower(user) try: rowdatetime = iso8601.parse_date(data['start_time']) @@ -736,7 +758,7 @@ def add_workout_from_stdata(user,importid,data): except: thetimezone = 'UTC' - r = Rower.objects.get(user=user) + r = getrower(user) try: rowdatetime = iso8601.parse_date(data['start_time']) except iso8601.ParseError: @@ -899,7 +921,7 @@ def add_workout_from_underarmourdata(user,importid,data): except: thetimezone = 'UTC' - r = Rower.objects.get(user=user) + r = getrower(user) try: rowdatetime = iso8601.parse_date(data['start_datetime']) except iso8601.ParseError: @@ -1059,7 +1081,7 @@ def add_workout_from_underarmourdata(user,importid,data): def workout_tcxemail_view(request,id=0): message = "" successmessage = "" - r = Rower.objects.get(user=request.user) + r = getrower(request.user) try: w = Workout.objects.get(id=id) except Workout.DoesNotExist: @@ -1167,7 +1189,7 @@ def workout_gpxemail_view(request,id=0): @login_required() def workout_csvemail_view(request,id=0): message = "" - r = Rower.objects.get(user=request.user) + r = getrower(request.user) try: w = Workout.objects.get(id=id) except Workout.DoesNotExist: @@ -1207,7 +1229,7 @@ def workout_csvemail_view(request,id=0): @login_required() def workout_csvtoadmin_view(request,id=0): message = "" - r = Rower.objects.get(user=request.user) + r = getrower(request.user) try: w = Workout.objects.get(id=id) except Workout.DoesNotExist: @@ -1242,7 +1264,7 @@ def workout_csvtoadmin_view(request,id=0): @login_required() def workout_tp_upload_view(request,id=0): message = "" - r = Rower.objects.get(user=request.user) + r = getrower(request.user) res = -1 try: thetoken = tp_open(r.user) @@ -1300,7 +1322,7 @@ def workout_tp_upload_view(request,id=0): @login_required() def workout_strava_upload_view(request,id=0): message = "" - r = Rower.objects.get(user=request.user) + r = getrower(request.user) res = -1 if (r.stravatoken == '') or (r.stravatoken is None): s = "Token doesn't exist. Need to authorize" @@ -1721,14 +1743,14 @@ def rower_tp_authorize(request): # Concept2 token refresh. URL for manual refresh. Not visible to users @login_required() def rower_c2_token_refresh(request): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) res = c2stuff.do_refresh_token(r.c2refreshtoken) if res[0] != None: access_token = res[0] expires_in = res[1] refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.c2token = access_token r.tokenexpirydate = expirydatetime r.c2refreshtoken = refresh_token @@ -1746,7 +1768,7 @@ def rower_c2_token_refresh(request): # Underarmour token refresh. URL for manual refresh. Not visible to users @login_required() def rower_underarmour_token_refresh(request): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) res = underarmourstuff.do_refresh_token( r.underarmourrefreshtoken, r.underarmourtoken @@ -1756,7 +1778,7 @@ def rower_underarmour_token_refresh(request): refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.underarmourtoken = access_token r.underarmourtokenexpirydate = expirydatetime r.underarmourrefreshtoken = refresh_token @@ -1771,7 +1793,7 @@ def rower_underarmour_token_refresh(request): # TrainingPeaks token refresh. URL for manual refresh. Not visible to users @login_required() def rower_tp_token_refresh(request): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) res = tpstuff.do_refresh_token( r.tprefreshtoken, ) @@ -1780,7 +1802,7 @@ def rower_tp_token_refresh(request): refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.tptoken = access_token r.tptokenexpirydate = expirydatetime r.tprefreshtoken = refresh_token @@ -1795,7 +1817,7 @@ def rower_tp_token_refresh(request): # SportTracks token refresh. URL for manual refresh. Not visible to users @login_required() def rower_sporttracks_token_refresh(request): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) res = sporttracksstuff.do_refresh_token( r.sporttracksrefreshtoken, ) @@ -1804,7 +1826,7 @@ def rower_sporttracks_token_refresh(request): refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.sporttrackstoken = access_token r.sporttrackstokenexpirydate = expirydatetime r.sporttracksrefreshtoken = refresh_token @@ -1838,7 +1860,7 @@ def rower_process_callback(request): refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.c2token = access_token r.tokenexpirydate = expirydatetime r.c2refreshtoken = refresh_token @@ -1890,7 +1912,7 @@ def rower_process_stravacallback(request): if res[0]: access_token = res[0] - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.stravatoken = access_token r.save() @@ -1909,7 +1931,7 @@ def rower_process_runkeepercallback(request): code = request.GET['code'] access_token = runkeeperstuff.get_token(code) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.runkeepertoken = access_token r.save() @@ -1930,7 +1952,7 @@ def rower_process_sporttrackscallback(request): refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.sporttrackstoken = access_token r.sporttrackstokenexpirydate = expirydatetime r.sporttracksrefreshtoken = refresh_token @@ -1953,7 +1975,7 @@ def rower_process_underarmourcallback(request): refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.underarmourtoken = access_token r.underarmourtokenexpirydate = expirydatetime r.underarmourrefreshtoken = refresh_token @@ -1976,7 +1998,7 @@ def rower_process_tpcallback(request): refresh_token = res[2] expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.tptoken = access_token r.tptokenexpirydate = expirydatetime r.tprefreshtoken = refresh_token @@ -2015,7 +2037,7 @@ def histo_all(request,theuser=0): theuser = request.user.id if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -2026,7 +2048,7 @@ def histo_all(request,theuser=0): # get all indoor rows of past 12 months ayearago = timezone.now()-datetime.timedelta(days=365) try: - r2 = Rower.objects.get(user=theuser) + r2 = getrower(theuser) allergworkouts = Workout.objects.filter(user=r2, workouttype__in=['rower','dynamic','slides'], startdatetime__gte=ayearago) @@ -2099,7 +2121,7 @@ def cum_flex(request,theuser=0, theuser = request.user.id if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -2173,7 +2195,7 @@ def cum_flex(request,theuser=0, deltaform = DeltaDaysForm() optionsform = StatsOptionsForm() try: - r2 = Rower.objects.get(user=theuser) + r2 = getrower(theuser) allworkouts = Workout.objects.filter(user=r2, workouttype__in=workouttypes, startdatetime__gte=startdate, @@ -2257,7 +2279,7 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False): promember=0 mayedit=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -2318,7 +2340,7 @@ def workout_histo_view(request,id=0): promember=0 mayedit=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -2371,7 +2393,7 @@ def histo(request,theuser=0, theuser = request.user.id if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -2418,7 +2440,7 @@ def histo(request,theuser=0, deltaform = DeltaDaysForm() try: - r2 = Rower.objects.get(user=theuser) + r2 = getrower(theuser) allergworkouts = Workout.objects.filter(user=r2, workouttype__in=['rower','dynamic','slides'], startdatetime__gte=startdate, @@ -2482,7 +2504,7 @@ def rankings_view(request,theuser=0, promember=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -2528,7 +2550,7 @@ def rankings_view(request,theuser=0, # get all 2k (if any) - this rower, in date range try: - r = Rower.objects.get(user=theuser) + r = getrower(theuser) except Rower.DoesNotExist: allergworkouts = [] r=0 @@ -3068,7 +3090,7 @@ def workout_makepublic_view(request,id, row.privacy = 'visible' row.save() - rr = Rower.objects.get(user=request.user) + rr = getrower(request.user) teams = rr.team.all() for team in teams: @@ -3127,7 +3149,7 @@ def team_comparison_select(request, teamid=0): try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) except Rower.DoesNotExist: raise Http404("Rower doesn't exist") @@ -3212,7 +3234,7 @@ def team_comparison_select(request, def multi_compare_view(request): promember=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -3303,10 +3325,8 @@ def user_boxplot_select(request, else: user = User.objects.get(id=userid) - try: - r = Rower.objects.get(user=user) - except Rower.DoesNotExist: - raise Http404("Rower doesn't exist") + + r = getrower(user) if 'startdate' in request.session: startdate = iso8601.parse_date(request.session['startdate']) @@ -3565,7 +3585,7 @@ def workouts_view(request,message='',successmessage='', enddate=timezone.now()+datetime.timedelta(days=1), teamid=0): try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) except Rower.DoesNotExist: raise Http404("Rower doesn't exist") @@ -3666,7 +3686,7 @@ def workout_comparison_list(request,id=0,message='',successmessage='', enddate=timezone.now()): try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) u = User.objects.get(id=r.user.id) if request.method == 'POST': dateform = DateRangeForm(request.POST) @@ -3746,7 +3766,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='', enddate=timezone.now()): try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) u = User.objects.get(id=r.user.id) if request.method == 'POST': dateform = DateRangeForm(request.POST) @@ -4146,7 +4166,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""): # get data f1 = row.csvfilename u = row.user.user - r = Rower.objects.get(user=u) + r = getrower(u) # create bearing rowdata = rdata(f1) @@ -4267,7 +4287,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""): # create interactive plot f1 = row.csvfilename u = row.user.user - r = Rower.objects.get(user=u) + r = getrower(u) rowdata = rdata(f1) if rowdata == 0: @@ -4434,7 +4454,7 @@ def workout_geeky_view(request,id=0,message="",successmessage=""): # create interactive plot f1 = row.csvfilename u = row.user.user - r = Rower.objects.get(user=u) + r = getrower(u) # create interactive plot try: @@ -4504,7 +4524,7 @@ def cumstats(request,theuser=0, theuser = request.user.id if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -4572,7 +4592,7 @@ def cumstats(request,theuser=0, optionsform = StatsOptionsForm() try: - r2 = Rower.objects.get(user=theuser) + r2 = getrower(theuser) allergworkouts = Workout.objects.filter(user=r2, workouttype__in=workouttypes, startdatetime__gte=startdate, @@ -4713,7 +4733,7 @@ def cumstats(request,theuser=0, @login_required() def workout_stats_view(request,id=0,message="",successmessage=""): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) try: w = Workout.objects.get(id=id) except Workout.DoesNotExist: @@ -4868,7 +4888,7 @@ def workout_advanced_view(request,id=0,message="",successmessage=""): # create interactive plot f1 = row.csvfilename u = row.user.user - r = Rower.objects.get(user=u) + r = getrower(u) # create interactive plot try: @@ -4901,7 +4921,7 @@ def workout_advanced_view(request,id=0,message="",successmessage=""): def workout_comparison_view(request,id1=0,id2=0,xparam='distance',yparam='spm'): promember=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -4936,7 +4956,7 @@ def workout_comparison_view2(request,id1=0,id2=0,xparam='distance', yparam='spm',plottype='line'): promember=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -5012,7 +5032,7 @@ def workout_flexchart3_view(request,*args,**kwargs): promember=0 mayedit=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -5087,7 +5107,7 @@ def workout_flexchart3_view(request,*args,**kwargs): if not request.user.is_anonymous(): workstrokesonly = request.POST['workstrokesonlysave'] reststrokes = not workstrokesonly - r = Rower.objects.get(user=request.user) + r = getrower(request.user) f = FavoriteChart(user=r,xparam=xparam, yparam1=yparam1,yparam2=yparam2, plottype=plottype,workouttype=workouttype, @@ -5195,12 +5215,12 @@ def workout_biginteractive_view(request,id=0,message="",successmessage=""): # create interactive plot f1 = row.csvfilename u = row.user.user - # r = Rower.objects.get(user=u) + # r = getrower(u) promember=0 mayedit=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -5239,12 +5259,12 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""): # create interactive plot f1 = row.csvfilename u = row.user.user - # r = Rower.objects.get(user=u) + # r = getrower(u) promember=0 mayedit=0 if not request.user.is_anonymous(): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) result = request.user.is_authenticated() and ispromember(request.user) if result: promember=1 @@ -5559,7 +5579,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""): # create interactive plot f1 = row.csvfilename u = row.user.user - r = Rower.objects.get(user=u) + r = getrower(u) rowdata = rdata(f1) hascoordinates = 1 if rowdata != 0: @@ -5626,7 +5646,7 @@ def workout_add_otw_powerplot_view(request,id): imagename = f1+timestr+'.png' fullpathimagename = 'static/plots/'+imagename u = w.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -5687,7 +5707,7 @@ def workout_add_piechart_view(request,id): imagename = f1+timestr+'.png' fullpathimagename = 'static/plots/'+imagename u = w.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, @@ -5748,7 +5768,7 @@ def workout_add_power_piechart_view(request,id): imagename = f1+timestr+'.png' fullpathimagename = 'static/plots/'+imagename u = w.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, @@ -5807,7 +5827,7 @@ def workout_add_timeplot_view(request,id): imagename = f1+timestr+'.png' fullpathimagename = 'static/plots/'+imagename u = w.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -5867,7 +5887,7 @@ def workout_add_distanceplot_view(request,id): imagename = f1+timestr+'.png' fullpathimagename = 'static/plots/'+imagename u = w.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -5925,7 +5945,7 @@ def workout_add_distanceplot2_view(request,id): imagename = f1+timestr+'.png' fullpathimagename = 'static/plots/'+imagename u = w.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -5985,7 +6005,7 @@ def workout_add_timeplot2_view(request,id): imagename = f1+timestr+'.png' fullpathimagename = 'static/plots/'+imagename u = w.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -6034,7 +6054,7 @@ def workout_stravaimport_view(request,message=""): res = stravastuff.get_strava_workout_list(request.user) if (res.status_code != 200): if (res.status_code == 401): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) if (r.stravatoken == '') or (r.stravatoken is None): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/stravaauthorize/") @@ -6047,7 +6067,7 @@ def workout_stravaimport_view(request,message=""): return HttpResponseRedirect(url) else: workouts = [] - r = Rower.objects.get(user=request.user) + r = getrower(request.user) stravaids = [int(item['id']) for item in res.json()] knownstravaids = uniqify([ w.uploadedtostrava for w in Workout.objects.filter(user=r) @@ -6084,7 +6104,7 @@ def workout_runkeeperimport_view(request,message=""): res = runkeeperstuff.get_runkeeper_workout_list(request.user) if (res.status_code != 200): if (res.status_code == 401): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) if (r.runkeepertoken == '') or (r.runkeepertoken is None): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/runkeeperauthorize/") @@ -6121,7 +6141,7 @@ def workout_underarmourimport_view(request,message=""): res = underarmourstuff.get_underarmour_workout_list(request.user) if (res.status_code != 200): if (res.status_code == 401): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) if (r.underarmourtoken == '') or (r.underarmourtoken is None): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/underarmourauthorize/") @@ -6169,7 +6189,7 @@ def workout_sporttracksimport_view(request,message=""): res = sporttracksstuff.get_sporttracks_workout_list(request.user) if (res.status_code != 200): if (res.status_code == 401): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) if (r.sporttrackstoken == '') or (r.sporttrackstoken is None): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/sporttracksauthorize/") @@ -6182,7 +6202,7 @@ def workout_sporttracksimport_view(request,message=""): return HttpResponseRedirect(url) else: workouts = [] - r = Rower.objects.get(user=request.user) + r = getrower(request.user) stids = [int(getidfromsturi(item['uri'])) for item in res.json()['items']] knownstids = uniqify([ w.uploadedtosporttracks for w in Workout.objects.filter(user=r) @@ -6218,7 +6238,7 @@ def c2listdebug_view(request,message=""): except C2NoTokenError: return HttpResponseRedirect("/rowers/me/c2authorize/") - r = Rower.objects.get(user=request.user) + r = getrower(request.user) res = c2stuff.get_c2_workout_list(request.user) @@ -6266,7 +6286,7 @@ def workout_getc2workout_all(request,message=""): message = "Something went wrong in workout_c2import_view (C2 token refresh)" messages.error(request,message) else: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) c2ids = [item['id'] for item in res.json()['data']] knownc2ids = uniqify([ w.uploadedtoc2 for w in Workout.objects.filter(user=r) @@ -6323,7 +6343,7 @@ def workout_c2import_view(request,message=""): return HttpResponseRedirect(url) else: workouts = [] - r = Rower.objects.get(user=request.user) + r = getrower(request.user) c2ids = [item['id'] for item in res.json()['data']] knownc2ids = uniqify([ w.uploadedtoc2 for w in Workout.objects.filter(user=r) @@ -6453,7 +6473,7 @@ def workout_getsporttracksworkout_view(request,sporttracksid): def workout_getsporttracksworkout_all(request): res = sporttracksstuff.get_sporttracks_workout_list(request.user) if (res.status_code == 200): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) stids = [int(getidfromsturi(item['uri'])) for item in res.json()['items']] knownstids = uniqify([ w.uploadedtosporttracks for w in Workout.objects.filter(user=r) @@ -6482,7 +6502,7 @@ def workout_getsporttracksworkout_all(request): def workout_getstravaworkout_all(request): res = stravastuff.get_strava_workout_list(request.user) if (res.status_code == 200): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) stravaids = [int(item['id']) for item in res.json()] knownstravaids = uniqify([ w.uploadedtostrava for w in Workout.objects.filter(user=r) @@ -6669,7 +6689,7 @@ def workout_upload_view(request, except KeyError: upload_totp = False - r = Rower.objects.get(user=request.user) + r = getrower(request.user) if request.method == 'POST': form = DocumentsForm(request.POST,request.FILES) optionsform = UploadOptionsForm(request.POST) @@ -6743,7 +6763,7 @@ def workout_upload_view(request, imagename = f1[:-4]+'.png' fullpathimagename = 'static/plots/'+imagename u = request.user - r = Rower.objects.get(user=request.user) + r = getrower(request.user) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -6917,7 +6937,7 @@ def team_workout_upload_view(request,message="", make_plot = uploadoptions['make_plot'] plottype = uploadoptions['plottype'] - r = Rower.objects.get(user=request.user) + r = getrower(request.user) if request.method == 'POST': form = DocumentsForm(request.POST,request.FILES) optionsform = TeamUploadOptionsForm(request.POST) @@ -6932,7 +6952,7 @@ def team_workout_upload_view(request,message="", if rowerform.is_valid(): u = rowerform.cleaned_data['user'] if u: - r = Rower.objects.get(user=u) + r = getrower(u) else: message = 'Please select a rower' messages.error(request,message) @@ -7146,7 +7166,7 @@ def graph_delete_view(request,id=0): @login_required() def graphs_view(request): try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) workouts = Workout.objects.filter(user=r).order_by("-date", "-starttime") query = request.GET.get('q') if query: @@ -7204,7 +7224,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""): # still here - this is a workout we may edit f1 = row.csvfilename u = row.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -7322,7 +7342,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" # still here - this is a workout we may edit f1 = row.csvfilename u = row.user.user - r = Rower.objects.get(user=u) + r = getrower(u) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -7520,7 +7540,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" def rower_favoritecharts_view(request): message = '' successmessage = '' - r = Rower.objects.get(user=request.user) + r = getrower(request.user) favorites = FavoriteChart.objects.filter(user=r).order_by('id') aantal = len(favorites) favorites_data = [{'yparam1':f.yparam1, @@ -7584,7 +7604,7 @@ def rower_favoritecharts_view(request): # Add email address to form so user can change his email address @login_required() def rower_edit_view(request,message=""): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) if request.method == 'POST' and "ut2" in request.POST: form = RowerForm(request.POST) if form.is_valid(): @@ -7598,7 +7618,7 @@ def rower_edit_view(request,message=""): an = cd['an'] rest = cd['rest'] try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.max = max(min(hrmax,250),10) r.ut2 = max(min(ut2,250),10) r.ut1 = max(min(ut1,250),10) @@ -7655,7 +7675,7 @@ def rower_edit_view(request,message=""): ftp = cd['ftp'] otwslack = cd['otwslack'] try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) powerfrac = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -7713,7 +7733,7 @@ def rower_edit_view(request,message=""): anname = cd['anname'] powerzones = [ut3name,ut2name,ut1name,atname,trname,anname] try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) r.pw_ut2 = pw_ut2 r.pw_ut1 = pw_ut1 r.pw_at = pw_at @@ -7777,7 +7797,7 @@ def rower_edit_view(request,message=""): if len(email): u.email = email u.save() - r = Rower.objects.get(user=u) + r = getrower(u) r.weightcategory = weightcategory r.save() form = RowerForm(instance=r) @@ -7813,7 +7833,7 @@ def rower_edit_view(request,message=""): else: try: - r = Rower.objects.get(user=request.user) + r = getrower(request.user) form = RowerForm(instance=r) powerform = RowerPowerForm(instance=r) @@ -7848,7 +7868,7 @@ def rower_revokeapp_view(request,id=0): for token in refreshtokens: token.revoke() - r = Rower.objects.get(user=request.user) + r = getrower(request.user) form = RowerForm(instance=r) powerform = RowerPowerForm(instance=r) grants = AccessToken.objects.filter(user=request.user) @@ -8012,7 +8032,7 @@ def strokedatajson(request,id): row.csvfilename = csvfilename row.save() - r = Rower.objects.get(user=request.user) + r = getrower(request.user) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at, @@ -8045,7 +8065,7 @@ import teams def team_view(request,id=0): ismember = 0 hasrequested = 0 - r = Rower.objects.get(user=request.user) + r = getrower(request.user) myteams = Team.objects.filter(manager=request.user) try: @@ -8111,7 +8131,7 @@ def team_leaveconfirm_view(request,id=0): @login_required() def team_leave_view(request,id=0): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) teams.remove_member(id,r) url = reverse(rower_teams_view) @@ -8134,7 +8154,7 @@ def rower_teams_view(request,message='',successmessage=''): else: form = TeamInviteCodeForm() - r = Rower.objects.get(user=request.user) + r = getrower(request.user) ts = Team.objects.filter(rower=r) myteams = Team.objects.filter(manager=request.user) otherteams = Team.objects.filter(private='open').exclude(rower=r).exclude(manager=request.user).order_by('name') @@ -8362,7 +8382,7 @@ def team_create_view(request): @user_passes_test(iscoachmember,login_url="/",redirect_field_name=None) def team_deleteconfirm_view(request,id): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) try: t = Team.objects.get(id=id) except Team.DoesNotExist: @@ -8378,7 +8398,7 @@ def team_deleteconfirm_view(request,id): @user_passes_test(iscoachmember,login_url="/",redirect_field_name=None) def team_delete_view(request,id): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) try: t = Team.objects.get(id=id) except Team.DoesNotExist: @@ -8394,7 +8414,7 @@ def team_delete_view(request,id): @user_passes_test(iscoachmember,login_url="/",redirect_field_name=None) def team_members_stats_view(request,id): - r = Rower.objects.get(user=request.user) + r = getrower(request.user) try: t = Team.objects.get(id=id) except Team.DoesNotExist: