Private
Public Access
1
0

added permissions in analysis views

This commit is contained in:
Sander Roosendaal
2020-01-16 20:09:32 +01:00
parent 28710dbdd6
commit 4aa3649a7c
6 changed files with 48 additions and 8 deletions

View File

@@ -212,6 +212,7 @@ def is_coach_user(usercoach,userrower):
coaches.append(coach)
for coach in coaches:
print(usercoach.rower,coach)
if usercoach.rower == coach:
return True

View File

@@ -841,6 +841,8 @@ class PermissionsViewTests(TestCase):
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
def test_coach_edit_athlete_analysis_not(self,mocked_df):
self.rbasic.team.add(self.teamcoach)
@@ -851,7 +853,7 @@ class PermissionsViewTests(TestCase):
url = reverse('cumstats',
kwargs={
'theuser':self.ubasic.id,
'userid':self.ubasic.id,
}
)
@@ -859,6 +861,24 @@ class PermissionsViewTests(TestCase):
self.assertEqual(response.status_code,403)
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
def test_coach_edit_athlete_analysis_not2(self,mocked_df):
self.rbasic.team.add(self.teamcoach)
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
self.assertTrue(login)
url = reverse('analysis_new',
kwargs={
'userid':self.ubasic.id,
}
)
response = self.c.get(url)
self.assertEqual(response.status_code,403)
## Coach can upload on behalf of athlete - if team allows
@patch('rowers.dataprep.create_engine')

View File

@@ -5,7 +5,8 @@ from __future__ import unicode_literals
#from __future__ import print_function
from .statements import *
nu = datetime.datetime.now()self.ucoach = UserFactory()
nu = datetime.datetime.now()
self.ucoach = UserFactory()
self.rcoach = Rower.objects.create(
user=self.ucoach,
birthdate=faker.profile()['birthdate'],

View File

@@ -274,7 +274,7 @@ urlpatterns = [
re_path(r'^histodata/$',views.histo_data,name='histo_data'),
# re_path(r'^histo/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.histo,name='histo'),
re_path(r'^histo/$',views.histo,name='histo'),
re_path(r'^cumstats/user/(?P<theuser>\d+)/$',views.cumstats,name='cumstats'),
re_path(r'^cumstats/user/(?P<userid>\d+)/$',views.cumstats,name='cumstats'),
# re_path(r'^cumstats/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.cumstats,name='cumstats'),
# re_path(r'^cumstats/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.cumstats,name='cumstats'),
# re_path(r'^cumstats/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.cumstats,name='cumstats'),

View File

@@ -670,6 +670,7 @@ def boxplotdata(workouts,options):
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def analysis_view_data(request,userid=0):
if not request.is_ajax():
url = reverse('analysis_new')
@@ -728,6 +729,7 @@ def analysis_view_data(request,userid=0):
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def histo(request,theuser=0,
startdate=timezone.now()-datetime.timedelta(days=365),
enddate=timezone.now(),
@@ -1333,6 +1335,7 @@ def planrequired_view(request):
@user_passes_test(isplanmember,login_url="/rowers/paidplans",
message="This functionality requires a Coach or Self-Coach plan",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_id,raise_exception=True)
def fitnessmetric_view(request,id=0,mode='rower',
startdate=timezone.now()-timezone.timedelta(days=365),
enddate=timezone.now()):
@@ -2151,6 +2154,7 @@ def rankings_view2(request,theuser=0,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def otwrankings_view(request,theuser=0,
startdate=timezone.now()-datetime.timedelta(days=365),
enddate=timezone.now(),
@@ -2556,6 +2560,7 @@ def otwcp_toadmin_view(request,theuser=0,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def oterankings_view(request,theuser=0,
startdate=timezone.now()-datetime.timedelta(days=365),
enddate=timezone.now(),
@@ -2907,6 +2912,7 @@ def oterankings_view(request,theuser=0,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def user_multiflex_select(request,
startdatestring="",
enddatestring="",
@@ -3113,6 +3119,7 @@ def user_multiflex_select(request,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def multiflex_data(request,userid=0,
options={
'includereststrokes':False,
@@ -3366,6 +3373,7 @@ def multiflex_data(request,userid=0,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def multiflex_view(request,userid=0,
options={
'includereststrokes':False,
@@ -3533,6 +3541,7 @@ def multiflex_view(request,userid=0,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def user_boxplot_select(request,
startdatestring="",
enddatestring="",
@@ -3741,6 +3750,7 @@ def user_boxplot_select(request,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def boxplot_view_data(request,userid=0,
options={
'includereststrokes':False,
@@ -3858,6 +3868,7 @@ def boxplot_view_data(request,userid=0,
@user_passes_test(ispromember,login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def boxplot_view(request,userid=0,
options={
'includereststrokes':False,
@@ -3976,7 +3987,8 @@ def boxplot_view(request,userid=0,
# Cumulative stats page
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",redirect_field_name=None)
def cumstats(request,theuser=0,
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def cumstats(request,userid=0,
startdate=timezone.now()-datetime.timedelta(days=30),
enddate=timezone.now(),
deltadays=-1,
@@ -3989,7 +4001,7 @@ def cumstats(request,theuser=0,
'rankingonly':False,
}):
r = getrequestrower(request,userid=theuser)
r = getrequestrower(request,userid=userid)
theuser = r.user
if 'waterboattype' in request.session:
@@ -4107,7 +4119,7 @@ def cumstats(request,theuser=0,
options = {
'modality': modality,
'theuser': theuser.id,
'userid': theuser.id,
'waterboattype':waterboattype,
'startdatestring':startdatestring,
'enddatestring':enddatestring,
@@ -4361,6 +4373,7 @@ def alerts_view(request,userid=0):
@user_passes_test(ispromember, login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def alert_create_view(request,userid=0):
r = getrequestrower(request,userid=userid)
FilterFormSet = formset_factory(ConditionEditForm, formset=BaseConditionFormSet,extra=1)
@@ -4439,6 +4452,7 @@ def alert_create_view(request,userid=0):
# alert report view
@login_required()
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def alert_report_view(request,id=0,userid=0,nperiod=0):
r = getrequestrower(request,userid=userid)
if userid == 0:
@@ -4496,6 +4510,7 @@ def alert_report_view(request,id=0,userid=0,nperiod=0):
@user_passes_test(ispromember, login_url="/rowers/paidplans",
message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def alert_edit_view(request,id=0,userid=0):
r = getrequestrower(request,userid=userid)

View File

@@ -341,12 +341,15 @@ def get_workout_default_page(request,id):
return reverse('workout_workflow_view',kwargs={'id':id})
def get_user_by_userid(*args,**kwargs):
request = args[0]
print(kwargs,request.user.id,'get_user_by_id')
try:
id = kwargs['userid']
except KeyError:
id = request.user.id
return get_object_or_404(User,pk=id)
u = get_object_or_404(User,pk=id)
return u
def get_user_by_id(*args,**kwargs):
request = args[0]
@@ -360,7 +363,7 @@ def get_user_by_id(*args,**kwargs):
return get_object_or_404(User,pk=id)
def get_rower_by_userid(request,id):
def get_rower_by_id(request,id):
u = User.objects.get(id=id)
return u.rower