coverage changes
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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/'
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user