From a99507a90f60df3a48d4ff38c9a297c00fa151d1 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 28 Oct 2018 20:57:34 +0100 Subject: [PATCH 1/4] time period select on planned sessions view --- rowers/views.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/rowers/views.py b/rowers/views.py index 6efd954c..49cf2eb4 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -14623,14 +14623,6 @@ def plannedsessions_view(request, r = getrequestrower(request,userid=userid) - when = request.GET.get('when') - if when: - timeperiod = when - else: - timeperiod = 'thisweek' - - startdate,enddate = get_dates_timeperiod(timeperiod) - if startdatestring: try: startdate = iso8601.parse_date(startdatestring) @@ -14643,6 +14635,21 @@ def plannedsessions_view(request, except ParseError: pass + + when = request.GET.get('when') + if when: + timeperiod = when + startdate,enddate = get_dates_timeperiod(timeperiod) + else: + timeperiod = 'thisweek' + startdate1,enddate1 = get_dates_timeperiod(timeperiod) + + if not startdatestring: + startdate = startdate1 + + if not enddatestring: + enddate = enddate1 + try: trainingplan = TrainingPlan.objects.filter( startdate__lte = startdate, From 54648c63b59cb1a933d4d1d4a2f0cb89df06b428 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 29 Oct 2018 09:36:23 +0100 Subject: [PATCH 2/4] improved sunday algorithm --- rowers/views.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/rowers/views.py b/rowers/views.py index 49cf2eb4..8bef859e 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -16989,7 +16989,7 @@ class TrainingTargetUpdate(UpdateView): def allsundays(startdate,enddate): d = startdate d += timedelta(days = 6 - d.weekday()) # first Sunday - while d cycle.startdate: + for i in range(len(sundays)): + if i==0: monday = cycle.startdate - if nextsunday < cycle.enddate and i == len(sundays)-2: - nextsunday = cycle.enddate + else: + monday = sundays[i]-timedelta(days=6) + if monday < cycle.startdate: + monday = cycle.startdate + + nextsunday = sundays[i] micro = TrainingMicroCycle(startdate = monday, enddate = nextsunday, plan = cycle, - name = 'Week %s' % sundays[i+1].isocalendar()[1], + name = 'Week %s' % monday.isocalendar()[1], type = 'userdefined') micro.save() From a10cba74f6aa39e40773c604b1e5280ef2afb593 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 29 Oct 2018 10:26:25 +0100 Subject: [PATCH 3/4] bug fix --- rowers/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rowers/views.py b/rowers/views.py index 8bef859e..ddc52509 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -7036,7 +7036,7 @@ def workout_view(request,id=0): }, { 'url':reverse(workout_view,kwargs={'id':id}), - 'name': id, + 'name': row.name, } ] From 0a469e81fe22537b741e6a533a10d5c4b893f5b0 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 29 Oct 2018 11:08:49 +0100 Subject: [PATCH 4/4] better protection of private workouts --- rowers/interactiveplots.py | 25 ++++++++-------- rowers/models.py | 2 +- rowers/views.py | 61 ++++++++++++++++++++++++++------------ 3 files changed, 55 insertions(+), 33 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 655e7f37..2da87b2d 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -247,19 +247,18 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type'): durations = [] for w in workouts: - if w.privacy == 'visible': - dd = w.date.strftime('%m/%d') - dd2 = w.date.strftime('%Y/%m/%d') - du = w.duration.hour*60+w.duration.minute - dates.append(dd) - dates_sorting.append(dd2) - durations.append(du) - - types.append(w.workouttype) - try: - rowers.append(w.user.user.first_name[0]+w.user.user.last_name[0]) - except IndexError: - rowers.append(str(w.user)) + dd = w.date.strftime('%m/%d') + dd2 = w.date.strftime('%Y/%m/%d') + du = w.duration.hour*60+w.duration.minute + dates.append(dd) + dates_sorting.append(dd2) + durations.append(du) + + types.append(w.workouttype) + try: + rowers.append(w.user.user.first_name[0]+w.user.user.last_name[0]) + except IndexError: + rowers.append(str(w.user)) try: d = utc.localize(startdate) diff --git a/rowers/models.py b/rowers/models.py index f45fea10..67cb73c1 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -837,7 +837,7 @@ def checkworkoutuser(user,workout): return True elif teams: for team in teams: - if user == team.manager: + if user == team.manager and workout.privacy == 'visible': return True else: return False diff --git a/rowers/views.py b/rowers/views.py index ddc52509..3c59cf5f 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -6692,29 +6692,52 @@ def workouts_view(request,message='',successmessage='', raise Http404("Team doesn't exist") if theteam.viewing == 'allmembers' or theteam.manager == request.user: - workouts = Workout.objects.filter(team=theteam, - startdatetime__gte=startdate, - startdatetime__lte=enddate).order_by("-date","-starttime") - g_workouts = Workout.objects.filter(team=theteam, - startdatetime__gte=activity_startdate, - startdatetime__lte=activity_enddate).order_by("-date", "-starttime") + workouts = Workout.objects.filter( + team=theteam, + startdatetime__gte=startdate, + startdatetime__lte=enddate, + privacy='visible').order_by("-date","-starttime") + g_workouts = Workout.objects.filter( + team=theteam, + startdatetime__gte=activity_startdate, + startdatetime__lte=activity_enddate, + privacy='visible').order_by("-date", "-starttime") elif theteam.viewing == 'coachonly': - workouts = Workout.objects.filter(team=theteam,user=r, - startdatetime__gte=startdate, - startdatetime__lte=enddate).order_by("-startdatetime") - g_workouts = Workout.objects.filter(team=theteam,user=r, - startdatetime__gte=activity_startdate, - enddatetime__lte=activity_enddate).order_by("-startdatetime") + workouts = Workout.objects.filter( + team=theteam,user=r, + startdatetime__gte=startdate, + startdatetime__lte=enddate, + privacy='visible').order_by("-startdatetime") + g_workouts = Workout.objects.filter( + team=theteam,user=r, + startdatetime__gte=activity_startdate, + enddatetime__lte=activity_enddate, + privacy='visible').order_by("-startdatetime") - else: + elif request.user != r.user: + theteam = None - workouts = Workout.objects.filter(user=r, - startdatetime__gte=startdate, - startdatetime__lte=enddate).order_by("-date", "-starttime") - g_workouts = Workout.objects.filter(user=r, - startdatetime__gte=activity_startdate, - startdatetime__lte=activity_enddate).order_by("-startdatetime") + workouts = Workout.objects.filter( + user=r, + startdatetime__gte=startdate, + startdatetime__lte=enddate, + privacy='visible').order_by("-date", "-starttime") + g_workouts = Workout.objects.filter( + user=r, + startdatetime__gte=activity_startdate, + startdatetime__lte=activity_enddate, + privacy='visible').order_by("-startdatetime") + else: + theteam = None + workouts = Workout.objects.filter( + user=r, + startdatetime__gte=startdate, + startdatetime__lte=enddate).order_by("-date", "-starttime") + g_workouts = Workout.objects.filter( + user=r, + startdatetime__gte=activity_startdate, + startdatetime__lte=activity_enddate).order_by("-startdatetime") if rankingonly: workouts = [w for w in workouts if w.rankingpiece]