From 71696ec0547bafc8ab74094a13a9d2ece0e015db Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 30 Apr 2018 16:18:35 +0200 Subject: [PATCH 1/3] improved followrower --- rowers/templates/plannedsessionview.html | 2 +- rowers/views.py | 133 +++++++---------------- 2 files changed, 43 insertions(+), 92 deletions(-) diff --git a/rowers/templates/plannedsessionview.html b/rowers/templates/plannedsessionview.html index d8ecb60b..8ace4c3a 100644 --- a/rowers/templates/plannedsessionview.html +++ b/rowers/templates/plannedsessionview.html @@ -16,7 +16,7 @@
{% if user.is_authenticated and psdict.id.1|is_session_manager:user %} - + Edit Session {% else %}   diff --git a/rowers/views.py b/rowers/views.py index 87602e00..d202dc58 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -181,8 +181,36 @@ class JSONResponse(HttpResponse): kwargs['content_type'] = 'application/json' super(JSONResponse, self).__init__(content, **kwargs) +def getrequestrower(request,rowerid=0,userid=0,notpermanent=False): + if notpermanent == False: + if rowerid == 0 and 'rowerid' in request.session: + rowerid = request.session['rowerid'] + + if userid != 0: + rowerid = 0 + + try: + + if rowerid != 0: + r = Rower.objects.get(id=rowerid) + elif userid != 0: + u = User.objects.get(id=userid) + r = getrower(u) + else: + r = getrower(request.user) + + except Rower.DoesNotExist: + raise Http404("Rower doesn't exist") + if not checkaccessuser(request.user,r): + raise PermissionDenied("You have no access to this user") + + if notpermanent == False: + request.session['rowerid'] = r.id + + return r + def getrower(user): try: @@ -6425,17 +6453,7 @@ def workouts_view(request,message='',successmessage='', teamid=0,rankingonly=False,rowerid=0,userid=0): request.session['referer'] = absolute(request)['PATH'] - try: - if rowerid != 0: - r = Rower.objects.get(id=rowerid) - elif userid != 0: - u = User.objects.get(id=userid) - r = getrower(u) - else: - r = getrower(request.user) - - except Rower.DoesNotExist: - raise Http404("Rower doesn't exist") + r = getrequestrower(request,rowerid=rowerid,userid=userid) # check if access is allowed if not checkaccessuser(request.user,r): @@ -11190,12 +11208,7 @@ def rower_exportsettings_view(request): # Add email address to form so user can change his email address @login_required() def rower_edit_view(request,rowerid=0,message=""): - if rowerid==0: - r = getrower(request.user) - else: - r = Rower.objects.get(id=rowerid) - if not checkaccessuser(request.user,r): - raise PermissionDenied("You have no access to these user settings") + r = getrequestrower(request,rowerid=rowerid,notpermanent=True) rowerid = r.id @@ -12141,16 +12154,8 @@ def plannedsession_multiclone_view( rowerid=0, startdate=timezone.now()-datetime.timedelta(days=30), enddate=timezone.now()): - - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + + r = getrequestrower(request,rowerid=rowerid) if 'startdate' in request.session: startdate = iso8601.parse_date(request.session['startdate']) @@ -12246,15 +12251,8 @@ def plannedsession_multiclone_view( @user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/", redirect_field_name=None) def plannedsession_create_view(request,timeperiod='thisweek',rowerid=0): - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + + r = getrequestrower(request,rowerid=rowerid) if request.method == 'POST': sessioncreateform = PlannedSessionForm(request.POST) @@ -12349,15 +12347,7 @@ def plannedsession_multicreate_view(request,timeperiod='thisweek', extrasessions=int(extrasessions) - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + r = getrequestrower(request,rowerid=rowerid) startdate,enddate = get_dates_timeperiod(timeperiod) sps = get_sessions(r,startdate=startdate,enddate=enddate) @@ -12720,15 +12710,7 @@ def plannedsessions_coach_view(request,timeperiod='thisweek', @login_required() def plannedsessions_view(request,timeperiod='thisweek',rowerid=0): - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + r = getrequestrower(request,rowerid=rowerid) startdate,enddate = get_dates_timeperiod(timeperiod) @@ -12765,15 +12747,7 @@ def plannedsessions_view(request,timeperiod='thisweek',rowerid=0): @login_required() def plannedsessions_print_view(request,timeperiod='thisweek',rowerid=0): - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + r = getrequestrower(request,rowerid=rowerid) startdate,enddate = get_dates_timeperiod(timeperiod) @@ -12802,15 +12776,7 @@ def plannedsessions_manage_view(request,timeperiod='thisweek',rowerid=0, if request.is_ajax(): is_ajax = True - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + r = getrequestrower(request,rowerid=rowerid) startdate,enddate = get_dates_timeperiod(timeperiod) @@ -12928,15 +12894,8 @@ def plannedsessions_manage_view(request,timeperiod='thisweek',rowerid=0, redirect_field_name=None) def plannedsession_clone_view(request,id=0,rowerid=0, timeperiod='thisweek'): - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + + r = getrequestrower(request,rowerid=rowerid) startdate,enddate = get_dates_timeperiod(timeperiod) @@ -12981,16 +12940,8 @@ def plannedsession_clone_view(request,id=0,rowerid=0, @user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/", redirect_field_name=None) def plannedsession_edit_view(request,id=0,timeperiod='thisweek',rowerid=0): - - if rowerid==0: - r = getrower(request.user) - else: - try: - r = Rower.objects.get(id=rowerid) - except Rower.DoesNotExist: - raise Http404("This rower doesn't exist") - if not checkaccessuser(request.user,r): - raise PermissionDenied("You don't have access to this plan") + + r = getrequestrower(request,rowerid=rowerid) startdate,enddate = get_dates_timeperiod(timeperiod) From 5004d5d2b769af3da293568af5037c9f38f85716 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 30 Apr 2018 17:03:35 +0200 Subject: [PATCH 2/3] made rower selection more persistent --- rowers/views.py | 77 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 27 deletions(-) diff --git a/rowers/views.py b/rowers/views.py index d202dc58..ccb2b10c 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -1090,8 +1090,8 @@ def start_plantrial_view(request): messages.info(request,'We have started your 14 day trial period') - subject2 = "User started Pro Trial" - message2 = "User Started Pro Trial.\n" + subject2 = "User started Plan Trial" + message2 = "User Started Plan Trial.\n" message2 += request.user.email + "\n" message2 += "User name: "+request.user.username @@ -2980,7 +2980,15 @@ def cum_flex(request,theuser=0, promember=0 if theuser == 0: - theuser = request.user.id + if 'rowerid' in request.session: + try: + r = Rower.objects.get(id=request.session['rowerid']) + theuser = r.user.id + except Rower.DoesNotExist: + theuser = request.user.id + else: + theuser = request.user.id + if not request.user.is_anonymous(): r = getrower(request.user) @@ -3133,11 +3141,9 @@ def cum_flex(request,theuser=0, def fitnessmetric_view(request,id=0,mode='rower', startdate=timezone.now()-timezone.timedelta(days=365), enddate=timezone.now()): - if id==0: - id = request.user.id - theuser = User.objects.get(id=id) - therower = Rower.objects.get(user=theuser) + therower = getrequestrower(request,userid=id) + theuser = therower.user if request.method == 'POST': @@ -3303,8 +3309,9 @@ def histo(request,theuser=0, startdate = s promember=0 - if theuser == 0: - theuser = request.user.id + r = getrequestrower(request,userid=theuser) + theuser = r.user.id + if not request.user.is_anonymous(): r = getrower(request.user) @@ -4376,7 +4383,14 @@ def otwrankings_view(request,theuser=0, startdate = s if theuser == 0: - theuser = request.user.id + if 'rowerid' in request.session: + try: + r = Rower.objects.get(id=request.session['rowerid']) + theuser = r.user.id + except Rower.DoesNotExist: + theuser = request.user.id + else: + theuser = request.user.id promember=0 if not request.user.is_anonymous(): @@ -4430,6 +4444,7 @@ def otwrankings_view(request,theuser=0, # get all 2k (if any) - this rower, in date range try: r = Rower.objects.get(user=theuser) + request.session['rowerid'] = r.id except Rower.DoesNotExist: raise Http404("Rower doesn't exist") @@ -4652,7 +4667,15 @@ def oterankings_view(request,theuser=0, startdate = s if theuser == 0: - theuser = request.user.id + if 'rowerid' in request.session: + try: + r = Rower.objects.get(id=request.session['rowerid']) + theuser = r.user.id + except Rower.DoesNotExist: + theuser = request.user.id + else: + theuser = request.user.id + promember=0 if not request.user.is_anonymous(): @@ -4706,6 +4729,7 @@ def oterankings_view(request,theuser=0, # get all 2k (if any) - this rower, in date range try: r = Rower.objects.get(user=theuser) + request.session['rowerid'] = r.id except Rower.DoesNotExist: allergworkouts = [] raise Http404("Rower doesn't exist") @@ -5523,13 +5547,8 @@ def user_multiflex_select(request, enddate=timezone.now(), userid=0): - if userid == 0: - user = request.user - else: - user = User.objects.get(id=userid) - - - r = getrower(user) + r = getrequestrower(request,userid=userid) + user = r.user if 'options' in request.session: options = request.session['options'] @@ -6062,13 +6081,8 @@ def user_boxplot_select(request, }, userid=0): - if userid == 0: - user = request.user - else: - user = User.objects.get(id=userid) - - - r = getrower(user) + r = getrequestrower(request,userid=userid) + user = r.user if 'options' in request.session: options = request.session['options'] @@ -7592,7 +7606,15 @@ def cumstats(request,theuser=0, promember=0 if theuser == 0: - theuser = request.user.id + if 'rowerid' in request.session: + try: + r = Rower.objects.get(id=request.session['rowerid']) + theuser = r.user.id + except Rower.DoesNotExist: + theuser = request.user.id + else: + theuser = request.user.id + if not request.user.is_anonymous(): r = getrower(request.user) @@ -7716,7 +7738,8 @@ def cumstats(request,theuser=0, datadf,extracols = dataprep.read_cols_df_sql(ids,fieldlist) datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly) - + + request.session['rowerid'] = r.id if datadf.empty: stats = {} From 7c99f275d9fc8bf8ef262b3ecd64c2e3ea0c5ece Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 30 Apr 2018 17:28:03 +0200 Subject: [PATCH 3/3] updated tests --- rowers/tests.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rowers/tests.py b/rowers/tests.py index c465447d..8eef0ab1 100644 --- a/rowers/tests.py +++ b/rowers/tests.py @@ -448,6 +448,7 @@ class DataTest(TestCase): 'duration':'0:55:00.1', 'distance':8000, 'notes':'Aap noot \n mies', + 'weightcategory':'lwt', 'workouttype':'water', } form = WorkoutForm(data=form_data) @@ -675,6 +676,7 @@ class ViewTest(TestCase): 'timezone':'Europe/Berlin', 'duration':'1:00:00.5', 'distance':'15000', + 'weightcategory':'hwt', 'workouttype':'rower', 'notes':'noot mies', }