From 3e0b98fab889ee37c88a6a2d6c986a7b1b2327cb Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 24 Jan 2018 14:55:18 +0100 Subject: [PATCH] easy changing to athlete's workouts list for coaches --- rowers/models.py | 16 ++++++++++++++++ rowers/templates/list_workouts.html | 27 +++++++++++++++++++++++---- rowers/urls.py | 4 ++++ rowers/views.py | 19 ++++++++++++++++--- 4 files changed, 59 insertions(+), 7 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index 2838451b..8fa1f441 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -623,6 +623,22 @@ def checkworkoutuser(user,workout): except Rower.DoesNotExist: return False +# Check if user is coach or rower +def checkaccessuser(user,rower): + try: + r = Rower.objects.get(user=user) + teams = Team.objects.filter(manager=user) + if rower == r: + return True + elif teams: + for team in teams: + if team in rower.team.all(): + return True + else: + return False + except Rower.DoesNotExist: + return False + timezones = ( (x,x) for x in pytz.common_timezones ) diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html index 4a1963a9..82b4bba2 100644 --- a/rowers/templates/list_workouts.html +++ b/rowers/templates/list_workouts.html @@ -50,7 +50,6 @@
- Select start and end date for a date range:
{% if team %} @@ -64,9 +63,25 @@ {% csrf_token %}
-
+
+ {% if user.is_authenticated and user|is_manager %} + + {% else %} +   + + {% endif %} +
@@ -77,11 +92,12 @@ {% endif %}
+
{% if team %}

{{ team.name }} Team Workouts

{% else %} -

My Workouts

+

Workouts of {{ rower.user.first_name }} {{ rower.user.last_name }}

{% endif %} {% if workouts %} @@ -154,7 +170,10 @@ {% else %} - {{ workout.user.user.first_name }} {{ workout.user.user.last_name }} + + {{ workout.user.user.first_name }} + {{ workout.user.user.last_name }} + {% endif %} Flex diff --git a/rowers/urls.py b/rowers/urls.py index f2d291f9..3519e07c 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -137,6 +137,10 @@ urlpatterns = [ url(r'^list-workouts/ranking$',views.workouts_view,{'rankingonly':True}), url(r'^list-workouts/team/(?P\d+)/(?P\w+.*)/(?P\w+.*)$',views.workouts_view), url(r'^list-workouts/team/(?P\d+)/$',views.workouts_view), + url(r'^(?P\d+)/list-workouts/$',views.workouts_view), + url(r'^(?P\d+)/list-workouts/(?P\w+.*)/(?P\w+.*)$',views.workouts_view), + url(r'^u/(?P\d+)/list-workouts/$',views.workouts_view), + url(r'^u/(?P\d+)/list-workouts/(?P\w+.*)/(?P\w+.*)$',views.workouts_view), url(r'^list-workouts/(?P\w+.*)/(?P\w+.*)$',views.workouts_view), url(r'^list-workouts/$',views.workouts_view), url(r'^addmanual/$',views.addmanual_view), diff --git a/rowers/views.py b/rowers/views.py index d175392b..88dea3be 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -735,7 +735,7 @@ from utils import ( import datautils -from rowers.models import checkworkoutuser +from rowers.models import checkworkoutuser,checkaccessuser # Check if a user is a Coach member def iscoachmember(user): @@ -6025,18 +6025,31 @@ def workouts_view(request,message='',successmessage='', startdatestring="",enddatestring="", startdate=timezone.now()-datetime.timedelta(days=365), enddate=timezone.now()+datetime.timedelta(days=1), - teamid=0,rankingonly=False): + teamid=0,rankingonly=False,rowerid=0,userid=0): request.session['referer'] = absolute(request)['PATH'] try: - r = getrower(request.user) + 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") + # check if access is allowed + if not checkaccessuser(request.user,r): + raise Http404("You are not allowed access to these data") + if request.method == 'POST': dateform = DateRangeForm(request.POST) if dateform.is_valid(): startdate = dateform.cleaned_data['startdate'] enddate = dateform.cleaned_data['enddate'] + startdatestring = None + enddatestring = None else: dateform = DateRangeForm(initial={ 'startdate':startdate,