Private
Public Access
1
0

coverage changes

This commit is contained in:
Sander Roosendaal
2021-04-12 22:03:40 +02:00
parent bfd7a5b664
commit 60c657f639
4 changed files with 125 additions and 111 deletions

View File

@@ -29,16 +29,16 @@
{{ middlepanel_formset.as_table }}
</table>
{% csrf_token %}
<input class="grid_2 alpha button green" type="submit" value="Save">
<input class="grid_2 alpha button" type="submit" value="Save">
</form>
</li>
<li>
{% if rower.defaultlandingpage == 'workout_edit_view' %}
<p>Default landing page is Edit View. Set default landing page to</p>
<a class="button green small" href="/rowers/me/workflowdefault/">Workflow View</a>
<a class="button small" href="/rowers/me/workflowdefault/">Workflow View</a>
{% else %}
<p>Default landing page is Workflow View. Set default landing page to</p>
<a class="button green small" href="/rowers/me/workflowdefault/">Edit View</a>
<a class="button small" href="/rowers/me/workflowdefault/">Edit View</a>
{% endif %}
</li>
</ul>

View File

@@ -63,6 +63,7 @@ class TeamTest(TestCase):
self.c = Client()
self.u = self.users[0]
self.r = self.users[0].rower
self.password = self.user_passwords[0]
self.t = TeamFactory(manager=self.u)
@@ -83,6 +84,29 @@ class TeamTest(TestCase):
)
self.rekwest.save()
result = get_random_file(filename='rowers/tests/testdata/erg1.csv')
self.werg1 = WorkoutFactory(user=self.r,
csvfilename=result['filename'],
starttime=result['starttime'],
startdatetime=result['startdatetime'],
duration=result['duration'],
distance=result['totaldist'],
workouttype = 'rower',
)
result = get_random_file(filename='rowers/tests/testdata/erg2.csv')
self.werg2 = WorkoutFactory(user=self.r,
csvfilename=result['filename'],
starttime=result['starttime'],
startdatetime=result['startdatetime'],
duration=result['duration'],
distance=result['totaldist'],
workouttype = 'rower',
)
def tearDown(self):
for csvfilename in self.csvfilenames:
try:
@@ -126,6 +150,71 @@ class TeamTest(TestCase):
response = self.c.get(url)
self.assertEqual(response.status_code, 200)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
@patch('rowers.middleware.myqueue')
def test_compares(self, mocked_sqlalchemy, mocked_getsmallrowdata_db,
mocked_myqueue):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
session = self.c.session
session['ids'] = [self.werg1.id,self.werg2.id]
session.save()
response = self.c.get('/')
url = reverse('team_comparison_select',kwargs={'teamid':self.t.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
d1 = self.werg1.date-timedelta(days=2)
d2 = self.werg2.date+timedelta(days=2)
form_data = {
'startdate': d1.strftime('%Y-%m-%d'),
'enddate': d2.strftime('%Y-%m-%d'),
'modality':'water',
'waterboattype':['1x'],
}
form = DateRangeForm(form_data)
self.assertTrue(form.is_valid())
form = TrendFlexModalForm(form_data)
self.assertTrue(form.is_valid())
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
url = reverse('multi_compare_view',kwargs={
'userid':self.u.id,
'id':encoder.encode_hex(self.werg1.id),
})
form_data = {
'xparam':'time',
'yparam':'power',
'plottype':'line',
'teamid': '',
}
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)
session['plottype'] = 'scatter'
session['xparam'] = 'time'
session['yparam'] = 'hr'
session.save()
response = self.c.get('/')
response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200)
def test_teamsview(self):
url = '/rowers/me/teams/'

View File

@@ -344,7 +344,7 @@ urlpatterns = [
# name='workouts_join_select'),
re_path(r'^workouts-join/$',views.workouts_join_view,name='workouts_join_view'),
re_path(r'^workouts-join/user/(?P<userid>\d+)$',views.workouts_join_view,name='workouts_join_view'),
re_path(r'^workouts-join-select/team/(?P<teamid>\d+)/$',views.workouts_join_select,name='workouts_join_select'),
#re_path(r'^workouts-join-select/team/(?P<teamid>\d+)/$',views.workouts_join_select,name='workouts_join_select'),
# re_path(r'^workouts-join-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workouts_join_select,name='workouts_join_select'),
re_path(r'^workouts-join-select/$',views.workouts_join_select,name='workouts_join_select'),
re_path(r'^workouts-join-select/user/(?P<userid>\d+)/$',views.workouts_join_select,name='workouts_join_select'),
@@ -454,7 +454,7 @@ urlpatterns = [
name='workout_edit_view'),
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/map/$',views.workout_map_view,name='workout_map_view'),
# re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/setprivate/$',views.workout_setprivate_view),
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/updatecp/$',views.workout_update_cp_view,name='workout_update_cp_view'),
# re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/updatecp/$',views.workout_update_cp_view,name='workout_update_cp_view'),
# re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/makepublic/$',views.workout_makepublic_view),
# re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/geeky/$',views.workout_geeky_view),
# re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/advanced/$',views.workout_advanced_view),

View File

@@ -744,7 +744,7 @@ def addmanual_view(request,raceid=0):
kwargs={'id':encoder.encode_hex(id)}
)
return HttpResponseRedirect(url)
else:
else: # pragma: no cover
iform = ImageForm()
return render(request,'manualadd.html',
{'form':form,
@@ -777,27 +777,6 @@ def addmanual_view(request,raceid=0):
@permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
@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. If you are already a Pro user, please log in to access this functionality",
redirect_field_name=None)
def workout_update_cp_view(request,id=0):
row = get_workoutuser(id, request)
row.rankingpiece = True
row.save()
r = getrower(request.user)
dataprep.runcpupdate(r)
if row.workouttype in mytypes.otwtypes:
url = reverse('otwrankings_view')
else:
url = reverse('oterankings_view')
return HttpResponseRedirect(url)
# Reload the workout and calculate the summary from the stroke data (lapIDx)
@@ -872,12 +851,11 @@ def workouts_join_view(request,userid=0):
return HttpResponseRedirect(url)
else:
return HttpResponse("form is not valid")
else: # pragma: no cover
messages.error("Form is not valid")
else:
url = reverse('workouts_join_select')
return HttpResponseRedirect(url)
url = reverse('workouts_join_select')
return HttpResponseRedirect(url)
defaultoptions = {
'includereststrokes': False,
@@ -891,17 +869,12 @@ defaultoptions = {
message="This functionality requires a Pro plan or higher",
redirect_field_name=None)
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def video_selectworkout(request,userid=0,teamid=0):
def video_selectworkout(request,userid=0):
r = getrequestrower(request, userid=userid)
user = r.user
userid = user.id
workouts = Workout.objects.filter(user=r).order_by('-date')
try:
theteam = Team.objects.get(id=teamid)
except Team.DoesNotExist:
theteam = None
if 'options' in request.session:
options = request.session['options']
@@ -914,7 +887,7 @@ def video_selectworkout(request,userid=0,teamid=0):
except KeyError: # pragma: no cover
workouttypes = ['rower','dynamic','slides']
try:
try: # pragma: no cover
modalities = options['modalities']
modality = modalities[0]
except KeyError: # pragma: no cover
@@ -975,7 +948,7 @@ def video_selectworkout(request,userid=0,teamid=0):
url = reverse('workout_video_create_view',
kwargs={'id':encoder.encode_hex(selectedworkout.id)})
return HttpResponseRedirect(url)
else:
else: # pragma: no cover
id = 0
else:
form = WorkoutSingleSelectForm(workouts=workouts)
@@ -989,7 +962,7 @@ def video_selectworkout(request,userid=0,teamid=0):
negtypes = []
for b in mytypes.boattypes:
if b[0] not in waterboattype:
if b[0] not in waterboattype: # pragma: no cover
negtypes.append(b[0])
@@ -1003,29 +976,16 @@ def video_selectworkout(request,userid=0,teamid=0):
negtypes = []
for b in mytypes.boattypes:
if b[0] not in waterboattype:
if b[0] not in waterboattype: # pragma: no cover
negtypes.append(b[0])
if theteam is not None and (theteam.viewing == 'allmembers' or theteam.manager == request.user):
workouts = Workout.objects.filter(team=theteam,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities,
)
elif theteam is not None and theteam.viewing == 'coachonly':
workouts = Workout.objects.filter(team=theteam,user=r,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities,
)
else:
workouts = Workout.objects.filter(user=r,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities,
)
workouts = Workout.objects.filter(user=r,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities,
)
workouts = workouts.order_by(
"-date", "-starttime"
@@ -1035,17 +995,6 @@ def video_selectworkout(request,userid=0,teamid=0):
if rankingonly:
workouts = workouts.exclude(rankingpiece=False)
optionsform = AnalysisOptionsForm(initial={
'modality':modality,
'waterboattype':waterboattype,
'rankingonly':rankingonly,
})
startdatestring = startdate.strftime('%Y-%m-%d')
enddatestring = enddate.strftime('%Y-%m-%d')
request.session['startdate'] = startdatestring
@@ -1091,7 +1040,7 @@ def workouts_join_select(request,
userid=0,
startdate=timezone.now()-datetime.timedelta(days=30),
enddate=timezone.now()+datetime.timedelta(days=1),
teamid=0):
):
@@ -1105,7 +1054,7 @@ def workouts_join_select(request,
if 'modalities' in request.session:
modalities = request.session['modalities']
if len(modalities) > 1:
if len(modalities) > 1: # pragma: no cover
modality = 'all'
else:
modality = modalities[0]
@@ -1126,12 +1075,12 @@ def workouts_join_select(request,
if modalityform.is_valid():
modality = modalityform.cleaned_data['modality']
waterboattype = modalityform.cleaned_data['waterboattype']
if modality == 'all':
if modality == 'all': # pragma: no cover
modalities = [m[0] for m in mytypes.workouttypes]
else:
modalities = [modality]
if modality != 'water':
if modality != 'water': # pragma: no cover
waterboattype = [b[0] for b in mytypes.boattypes]
@@ -1164,32 +1113,14 @@ def workouts_join_select(request,
enddate = startdate
startdate = s
try:
theteam = Team.objects.get(id=teamid)
except Team.DoesNotExist:
theteam = 0
if theteam and (theteam.viewing == 'allmembers' or theteam.manager == request.user):
workouts = Workout.objects.filter(team=theteam,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities).order_by("-date", "-starttime").exclude(boattype__in=negtypes)
elif theteam and theteam.viewing == 'coachonly':
workouts = Workout.objects.filter(team=theteam,user=r,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities).order_by("-date","-starttime").exclude(boattype__in=negtypes)
else:
theteam = None
workouts = Workout.objects.filter(user=r,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities).order_by("-date", "-starttime").exclude(boattype__in=negtypes)
workouts = Workout.objects.filter(user=r,
startdatetime__gte=startdate,
startdatetime__lte=enddate,
workouttype__in=modalities).order_by("-date", "-starttime").exclude(boattype__in=negtypes)
query = request.GET.get('q')
if query:
if query: # pragma: no cover
query_list = query.split()
workouts = workouts.filter(
reduce(operator.and_,
@@ -1204,10 +1135,6 @@ def workouts_join_select(request,
form = WorkoutMultipleCompareForm()
form.fields["workouts"].queryset = workouts
if theteam:
theid = theteam.id
else:
theid = 0
joinparamform = WorkoutJoinParamForm()
modalityform = TrendFlexModalForm(initial={
@@ -1226,7 +1153,6 @@ def workouts_join_select(request,
'startdate':startdate,
'enddate':enddate,
'active':'nav-workouts',
'team':theteam,
'form':form,
'joinparamform':joinparamform,
'modalityform':modalityform,
@@ -1330,14 +1256,14 @@ def team_comparison_select(request,
else:
waterboattype = mytypes.waterboattype
if 'rankingonly' in request.session:
if 'rankingonly' in request.session: # pragma: no cover
rankingonly = request.session['rankingonly']
else:
rankingonly = False
if 'modalities' in request.session:
modalities = request.session['modalities']
if len(modalities) > 1:
if len(modalities) > 1: # pragma: no cover
modality = 'all'
else:
modality = modalities[0]
@@ -1359,18 +1285,18 @@ def team_comparison_select(request,
if modalityform.is_valid():
modality = modalityform.cleaned_data['modality']
waterboattype = modalityform.cleaned_data['waterboattype']
if modality == 'all':
if modality == 'all': # pragma: no cover
modalities = [m[0] for m in mytypes.workouttypes]
else:
modalities = [modality]
if modality != 'water':
if modality != 'water': # pragma: no cover
waterboattype = [b[0] for b in mytypes.boattypes]
if 'rankingonly' in modalityform.cleaned_data:
rankingonly = modalityform.cleaned_data['rankingonly']
else:
else: # pragma: no cover
rankingonly = False
request.session['modalities'] = modalities
@@ -1432,7 +1358,7 @@ def team_comparison_select(request,
startdatetime__lte=enddate,
workouttype__in=modalities).order_by("-date", "-starttime").exclude(boattype__in=negtypes)
if rankingonly:
if rankingonly: # pragma: no cover
workouts = workouts.exclude(rankingpiece=False)
query = request.GET.get('q')
@@ -1450,8 +1376,7 @@ def team_comparison_select(request,
if id:
firstworkout = get_workout(id)
if not is_workout_team(request.user,firstworkout):
if not is_workout_team(request.user,firstworkout): # pragma: no cover
raise PermissionDenied("You are not allowed to use this workout")
firstworkoutquery = Workout.objects.filter(id=encoder.decode_hex(id))