Private
Public Access
1
0

further test coverage improvements

This commit is contained in:
Sander Roosendaal
2021-04-13 11:48:42 +02:00
parent 5b199a8b07
commit 08dbd43b61
4 changed files with 223 additions and 55 deletions

View File

@@ -308,6 +308,27 @@ class WorkoutViewTest(TestCase):
response = self.c.get(url,follow=True) response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
url = reverse('workout_erase_column_view',kwargs={'id':encoder.encode_hex(self.wwater.id),'column':'hr'})
expected_url = reverse('workout_data_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200)
form_data = {}
response = self.c.post(url,form_data,follow=True)
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
url = expected_url
form_data = {
'cols':['driveenergy','spm']
}
form = DataFrameColumnsForm(form_data)
self.assertTrue(form.is_valid())
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db') @patch('rowers.dataprep.getsmallrowdata_db')
def test_smoothen(self, mocked_sqlalchemy, mocked_getsmallrowdata_db): def test_smoothen(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):

View File

@@ -12,6 +12,9 @@ from rowers.utils import allmonths,allsundays
import rowers.plannedsessions as plannedsessions import rowers.plannedsessions as plannedsessions
from django.db import transaction from django.db import transaction
from rowers.views.workoutviews import plannedsession_compare_view
from rowers.opaque import encoder
@override_settings(TESTING=True) @override_settings(TESTING=True)
class TrainingPlanTest(TestCase): class TrainingPlanTest(TestCase):
def setUp(self): def setUp(self):
@@ -311,6 +314,71 @@ class SessionLinkTest(TestCase):
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
url = reverse(plannedsession_compare_view,kwargs={'id':ps.id,'userid':self.u.id})
response = self.c.get(url,follow=True)
expected_url = reverse('plannedsession_view',kwargs={'id':ps.id})
self.assertRedirects(response,expected_url=expected_url,
status_code=302,target_status_code=200)
# need a workout attached to the session, to get correct redirect below
w.plannedsession = ps
w.save()
url = reverse(plannedsession_compare_view,kwargs={'id':ps.id,'userid':self.u.id})
response = self.c.get(url,follow=True)
expected_url = reverse('multi_compare_view',kwargs={'userid':self.u.id,'id':encoder.encode_hex(w.id)})
self.assertRedirects(response,expected_url=expected_url,
status_code=302,target_status_code=200)
# while we're here, let's submit a POST request to multi compare view
url = expected_url
form_data = {
'xparam': 'distance',
'yparam': 'spm',
'plottype': 'line',
'teamid':0,
}
form = ChartParamChoiceForm(form_data)
self.assertTrue(form.is_valid())
request = self.factory.post(url,
data=form_data)
# adding session
middleware = SessionMiddleware()
middleware.process_request(request)
request.session.save()
session = request.session
session['ids'] = [w.id]
session.save()
request.user = self.u
response = multi_compare_view(request,id=str(w.id))
self.assertEqual(response.status_code,200)
# and adding a get
request = self.factory.get(url)
# adding session
middleware = SessionMiddleware()
middleware.process_request(request)
request.session.save()
session = request.session
session['ids'] = [w.id]
session['plottype'] = 'line'
session['xparam'] = 'distance'
session['yparam'] = 'spm'
session.save()
request.user = self.u
response = multi_compare_view(request,id=str(w.id))
self.assertEqual(response.status_code,200)
def test_multiplesessions(self): def test_multiplesessions(self):
with transaction.atomic(): with transaction.atomic():
login = self.c.login(username=self.u.username, password=self.password) login = self.c.login(username=self.u.username, password=self.password)

View File

@@ -16,9 +16,10 @@ import rowers.courses as courses
import rowers.tasks as tasks import rowers.tasks as tasks
from rowers.views.racesviews import * from rowers.views.racesviews import *
from rowers.utils import calculate_age from rowers.utils import calculate_age
from rowers.views import addmanual_view from rowers.views import addmanual_view, virtualevent_compare_view
from django.contrib.messages.storage.fallback import FallbackStorage from django.contrib.messages.storage.fallback import FallbackStorage
from django.contrib.sessions.middleware import SessionMiddleware
from base64 import b64encode from base64 import b64encode
import base64 import base64
@@ -61,6 +62,13 @@ class ChallengesTest(TestCase):
gdproptindate=timezone.now(), gdproptindate=timezone.now(),
rowerplan='coach') rowerplan='coach')
self.u2 = UserFactory()
self.r2 = Rower.objects.create(user=self.u2,
birthdate=datetime.datetime.now()-datetime.timedelta(days=28*365),
gdproptin=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
self.c = Client() self.c = Client()
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r) self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
self.factory = RequestFactory() self.factory = RequestFactory()
@@ -93,6 +101,22 @@ class ChallengesTest(TestCase):
self.wthyro.date = nu.date() self.wthyro.date = nu.date()
self.wthyro.save() self.wthyro.save()
result = get_random_file(filename='rowers/tests/testdata/thyro.csv')
self.wthyro2 = WorkoutFactory(user=self.r2,
csvfilename=result['filename'],
starttime=result['starttime'],
startdatetime=result['startdatetime'],
duration=result['duration'],
distance=result['totaldist'],
workouttype = 'water',
)
self.wthyro2.startdatetime = nu
self.wthyro2.date = nu.date()
self.wthyro2.save()
startdate = arrow.get(datetime.datetime.now()-datetime.timedelta(days=1)).datetime startdate = arrow.get(datetime.datetime.now()-datetime.timedelta(days=1)).datetime
start_time = datetime.time() start_time = datetime.time()
enddate = startdate+datetime.timedelta(days=5) enddate = startdate+datetime.timedelta(days=5)
@@ -125,6 +149,21 @@ class ChallengesTest(TestCase):
) )
self.SpeedOrder.save() self.SpeedOrder.save()
self.result = VirtualRaceResult(
userid = self.u2.id,
username = self.u2.username,
race = self.SpeedOrder,
distance = 300,
duration = datetime.time(0,1,20),
points = 75,
coursecompleted = True,
age = 28,
startsecond = 0,
endsecond = 120,
workoutid = self.wthyro2.id
)
self.result.save()
def tearDown(self): def tearDown(self):
for workout in self.user_workouts: for workout in self.user_workouts:
@@ -604,6 +643,60 @@ class ChallengesTest(TestCase):
record.workoutid = self.wthyro.id record.workoutid = self.wthyro.id
record.save() record.save()
# map compare
url = reverse('virtualevent_mapcompare_view',kwargs={'id':race.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
# compare
url = reverse('virtualevent_compare_view',kwargs={'id':race.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
# post to compare
form_data = {
'workouts':[self.wthyro2.id],
'xparam': 'distance',
'yparam': 'spm',
'plottype': 'line',
'teamid':0,
}
form = ChartParamChoiceForm(form_data)
self.assertTrue(form.is_valid())
form = WorkoutMultipleCompareForm(form_data)
self.assertTrue(form.is_valid())
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
# post2 to compare
form_data = {
'xparam': 'distance',
'yparam': 'spm',
'plottype': 'line',
'teamid':0,
}
form = ChartParamChoiceForm(form_data)
self.assertTrue(form.is_valid())
request = self.factory.post(url,
data=form_data)
# adding session
middleware = SessionMiddleware()
middleware.process_request(request)
request.session.save()
session = request.session
session['ids'] = [self.wthyro2.id]
session.save()
request.user = self.u
response = virtualevent_compare_view(request,id=str(race.id))
self.assertEqual(response.status_code,200)
url = reverse('virtualevent_disqualify_view',kwargs={'id':race.id,'recordid':record.id}) url = reverse('virtualevent_disqualify_view',kwargs={'id':race.id,'recordid':record.id})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -635,10 +728,8 @@ class ChallengesTest(TestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
# map compare
url = reverse('virtualevent_mapcompare_view',kwargs={'id':race.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
# add boat # add boat

View File

@@ -715,7 +715,6 @@ def addmanual_view(request,raceid=0):
messages.error(request,er) messages.error(request,er)
if result: if result:
print('mies')
otherrecords = IndoorVirtualRaceResult.objects.filter( otherrecords = IndoorVirtualRaceResult.objects.filter(
race = race race = race
).exclude(userid=r.id) ).exclude(userid=r.id)
@@ -992,7 +991,7 @@ def video_selectworkout(request,userid=0):
).exclude(boattype__in=negtypes) ).exclude(boattype__in=negtypes)
if rankingonly: # pragma : no cover if rankingonly: # pragma: no cover
workouts = workouts.exclude(rankingpiece=False) workouts = workouts.exclude(rankingpiece=False)
startdatestring = startdate.strftime('%Y-%m-%d') startdatestring = startdate.strftime('%Y-%m-%d')
@@ -1475,7 +1474,7 @@ def virtualevent_mapcompare_view(request,id=0):
for result in results: for result in results:
startenddict[result.workoutid] = (result.startsecond,result.endsecond) startenddict[result.workoutid] = (result.startsecond,result.endsecond)
if len(workoutids) == 0: if len(workoutids) == 0: # pragma: no cover
url = reverse('virtualevent_view', url = reverse('virtualevent_view',
kwargs={ kwargs={
'id':race.id, 'id':race.id,
@@ -1489,7 +1488,7 @@ def virtualevent_mapcompare_view(request,id=0):
for id in workoutids: for id in workoutids:
try: try:
workouts.append(Workout.objects.get(id=id)) workouts.append(Workout.objects.get(id=id))
except Workout.DoesNotExist: except Workout.DoesNotExist: # pragma: no cover
pass pass
labeldict = { labeldict = {
@@ -1545,18 +1544,18 @@ def virtualevent_compare_view(request,id=0):
result = request.user.is_authenticated and ispromember(request.user) result = request.user.is_authenticated and ispromember(request.user)
if result: if result:
promember=1 promember=1
else: else: # pragma: no cover
r = None r = None
try: try:
race = VirtualRace.objects.get(id=id) race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist: except VirtualRace.DoesNotExist: # pragma: no cover
raise Http404("Virtual Challenge does not exist") raise Http404("Virtual Challenge does not exist")
if race.sessiontype == 'race': if race.sessiontype == 'race':
script,div = course_map(race.course) script,div = course_map(race.course)
resultobj = VirtualRaceResult resultobj = VirtualRaceResult
else: else: # pragma: no cover
script = '' script = ''
div = '' div = ''
resultobj = IndoorVirtualRaceResult resultobj = IndoorVirtualRaceResult
@@ -1569,18 +1568,12 @@ def virtualevent_compare_view(request,id=0):
workoutids = [result.workoutid for result in results] workoutids = [result.workoutid for result in results]
startenddict = {} startenddict = {}
if race.sessiontype == 'race': if race.sessiontype == 'race':
for result in results: for result in results:
startenddict[result.workoutid] = (result.startsecond,result.endsecond) startenddict[result.workoutid] = (result.startsecond,result.endsecond)
if len(workoutids) == 0: # pragma: no cover
if len(workoutids) == 0:
url = reverse('virtualevent_view', url = reverse('virtualevent_view',
kwargs={ kwargs={
'id':race.id, 'id':race.id,
@@ -1590,7 +1583,6 @@ def virtualevent_compare_view(request,id=0):
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
if request.method == 'GET': if request.method == 'GET':
xparam = 'time' xparam = 'time'
if race.sessionmode == 'distance': if race.sessionmode == 'distance':
@@ -1612,7 +1604,7 @@ def virtualevent_compare_view(request,id=0):
for id in workoutids: for id in workoutids:
try: try:
workouts.append(Workout.objects.get(id=id)) workouts.append(Workout.objects.get(id=id))
except Workout.DoesNotExist: except Workout.DoesNotExist: # pragma: no cover
pass pass
form = WorkoutMultipleCompareForm() form = WorkoutMultipleCompareForm()
@@ -1653,6 +1645,7 @@ def virtualevent_compare_view(request,id=0):
form.fields["workouts"].queryset = Workout.objects.filter(id__in=workoutids) form.fields["workouts"].queryset = Workout.objects.filter(id__in=workoutids)
request.session['ids'] = workoutids request.session['ids'] = workoutids
chartform = ChartParamChoiceForm(request.POST) chartform = ChartParamChoiceForm(request.POST)
if chartform.is_valid(): if chartform.is_valid():
xparam = chartform.cleaned_data['xparam'] xparam = chartform.cleaned_data['xparam']
@@ -1661,15 +1654,16 @@ def virtualevent_compare_view(request,id=0):
teamid = chartform.cleaned_data['teamid'] teamid = chartform.cleaned_data['teamid']
try: try:
workoutids = request.session['ids'] workoutids = request.session['ids']
except KeyError: except KeyError: # pragma: no cover
pass pass
workouts = [] workouts = []
for id in workoutids: for id in workoutids:
try: try:
workouts.append(Workout.objects.get( workouts.append(Workout.objects.get(
id=id)) id=id))
except Workout.DoesNotExist: except Workout.DoesNotExist: # pragma: no cover
pass pass
labeldict = { labeldict = {
@@ -1684,7 +1678,7 @@ def virtualevent_compare_view(request,id=0):
script = res[0] script = res[0]
div = res[1] div = res[1]
errormessage = res[3] errormessage = res[3]
if errormessage != '': if errormessage != '': # pragma: no cover
messages.error(request,errormessage) messages.error(request,errormessage)
breadcrumbs = [ breadcrumbs = [
@@ -1734,7 +1728,7 @@ def plannedsession_compare_view(request,id=0,userid=0):
try: try:
ps = PlannedSession.objects.get(id=id) ps = PlannedSession.objects.get(id=id)
except PlannedSession.DoesNotExist: except PlannedSession.DoesNotExist: # pragma: no cover
raise Http404("Planned session does not exist") raise Http404("Planned session does not exist")
@@ -1791,7 +1785,7 @@ def multi_compare_view(request,id=0,userid=0):
int(w.id): w.__str__() for w in workouts int(w.id): w.__str__() for w in workouts
} }
else: else: # pragma: no cover
return HttpResponse("Form is not valid") return HttpResponse("Form is not valid")
elif request.method == 'POST' and 'ids' in request.session: elif request.method == 'POST' and 'ids' in request.session:
chartform = ChartParamChoiceForm(request.POST) chartform = ChartParamChoiceForm(request.POST)
@@ -1806,7 +1800,7 @@ def multi_compare_view(request,id=0,userid=0):
for id in ids: for id in ids:
try: try:
workouts.append(Workout.objects.get(id=id)) workouts.append(Workout.objects.get(id=id))
except Workout.DoesNotExist: except Workout.DoesNotExist: # pragma: no cover
pass pass
labeldict = { labeldict = {
@@ -1822,7 +1816,7 @@ def multi_compare_view(request,id=0,userid=0):
for id in ids: for id in ids:
try: try:
workouts.append(Workout.objects.get(id=id)) workouts.append(Workout.objects.get(id=id))
except Workout.DoesNotExist: except Workout.DoesNotExist: # pragma: no cover
pass pass
labeldict = { labeldict = {
@@ -1852,7 +1846,7 @@ def multi_compare_view(request,id=0,userid=0):
script = res[0] script = res[0]
div = res[1] div = res[1]
errormessage = res[3] errormessage = res[3]
if errormessage != '': if errormessage != '': # pragma: no cover
messages.error(request,errormessage) messages.error(request,errormessage)
r = getrower(request.user) r = getrower(request.user)
@@ -1872,7 +1866,7 @@ def multi_compare_view(request,id=0,userid=0):
} }
] ]
if 'ps' in request.session: if 'ps' in request.session: # pragma: no cover
ps = PlannedSession.objects.get(id=int(request.session['ps'])) ps = PlannedSession.objects.get(id=int(request.session['ps']))
breadcrumbs = [ breadcrumbs = [
{ {
@@ -1995,7 +1989,7 @@ def workouts_view(request,message='',successmessage='',
startdatetime__lte=activity_enddate, startdatetime__lte=activity_enddate,
duplicate=False, duplicate=False,
privacy='visible').order_by("-date", "-starttime") privacy='visible').order_by("-date", "-starttime")
elif theteam.viewing == 'coachonly': elif theteam.viewing == 'coachonly': # pragma: no cover
workouts = Workout.objects.filter( workouts = Workout.objects.filter(
team=theteam,user=r, team=theteam,user=r,
startdatetime__gte=startdate, startdatetime__gte=startdate,
@@ -2141,14 +2135,13 @@ def workouts_view(request,message='',successmessage='',
redirect_field_name=None) redirect_field_name=None)
@permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True) @permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True)
def workout_fusion_list(request,id=0, def workout_fusion_list(request,id=0,
startdatestring="",enddatestring="",
startdate=timezone.now()-datetime.timedelta(days=365), startdate=timezone.now()-datetime.timedelta(days=365),
enddate=timezone.now()): enddate=timezone.now()):
r = getrequestrower(request) r = getrequestrower(request)
u = r.user u = r.user
if request.method == 'POST': if request.method == 'POST': # pragma: no cover
dateform = DateRangeForm(request.POST) dateform = DateRangeForm(request.POST)
if dateform.is_valid(): if dateform.is_valid():
startdate = dateform.cleaned_data['startdate'] startdate = dateform.cleaned_data['startdate']
@@ -2159,11 +2152,6 @@ def workout_fusion_list(request,id=0,
'enddate':enddate, 'enddate':enddate,
}) })
if startdatestring:
startdate = iso8601.parse_date(startdatestring)
if enddatestring:
enddate = iso8601.parse_date(enddatestring)
startdate = datetime.datetime.combine(startdate,datetime.time()) startdate = datetime.datetime.combine(startdate,datetime.time())
enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59))
#enddate = enddate+datetime.timedelta(days=1) #enddate = enddate+datetime.timedelta(days=1)
@@ -2200,7 +2188,7 @@ def workout_fusion_list(request,id=0,
try: try:
workouts = paginator.page(page) workouts = paginator.page(page)
except EmptyPage: except EmptyPage: # pragma: no cover
workouts = paginator.page(paginator.num_pages) workouts = paginator.page(paginator.num_pages)
row = get_workoutuser(id, request) row = get_workoutuser(id, request)
@@ -2259,7 +2247,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime") g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime")
for i in g: for i in g: # pragma: no cover
try: try:
width,height = Image.open(i.filename).size width,height = Image.open(i.filename).size
i.width = width i.width = width
@@ -2270,7 +2258,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
# get raceresult or session result # get raceresult or session result
intervaldata = {} intervaldata = {}
if sessionresult != 0: if sessionresult != 0: # pragma: no cover
try: try:
result = CourseTestResult.objects.get(id=sessionresult) result = CourseTestResult.objects.get(id=sessionresult)
startsecond = result.startsecond startsecond = result.startsecond
@@ -2289,7 +2277,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
except CourseTestResult.DoesNotExist: except CourseTestResult.DoesNotExist:
pass pass
if nocourseraceresult != 0: if nocourseraceresult != 0: # pragma: no cover
try: try:
result = IndoorVirtualRaceResult.objects.get(id=nocourseraceresult) result = IndoorVirtualRaceResult.objects.get(id=nocourseraceresult)
startsecond = result.startsecond startsecond = result.startsecond
@@ -2309,7 +2297,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
pass pass
if raceresult != 0: if raceresult != 0: # pragma: no cover
try: try:
result = VirtualRaceResult.objects.get(id=raceresult) result = VirtualRaceResult.objects.get(id=raceresult)
startsecond = result.startsecond startsecond = result.startsecond
@@ -2337,17 +2325,17 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
if rowdata != 0: if rowdata != 0:
try: try:
latitude = rowdata.df[' latitude'] latitude = rowdata.df[' latitude']
if not latitude.std(): if not latitude.std(): # pragma: no cover
hascoordinates = 0 hascoordinates = 0
except (KeyError,AttributeError): except (KeyError,AttributeError):
hascoordinates = 0 hascoordinates = 0
else: else: # pragma: no cover
hascoordinates = 0 hascoordinates = 0
if hascoordinates: if hascoordinates:
if intervaldata: if intervaldata: # pragma: no cover
rowdata.df['reltime'] = rowdata.df['TimeStamp (sec)']-rowdata.df.loc[0,'TimeStamp (sec)'] rowdata.df['reltime'] = rowdata.df['TimeStamp (sec)']-rowdata.df.loc[0,'TimeStamp (sec)']
mask = (rowdata.df['reltime']>startsecond) & (rowdata.df['reltime']<endsecond) mask = (rowdata.df['reltime']>startsecond) & (rowdata.df['reltime']<endsecond)
latitudes = rowdata.df.loc[mask,' latitude'] latitudes = rowdata.df.loc[mask,' latitude']
@@ -2481,7 +2469,7 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
messages.info(request,'A smoothening filter was applied to your pace data') messages.info(request,'A smoothening filter was applied to your pace data')
if previousurl: if previousurl: # pragma: no cover
url = previousurl url = previousurl
else: else:
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
@@ -3028,7 +3016,7 @@ def instroke_view(request,id=0):
# generate instroke chart # generate instroke chart
@permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True) @permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True)
def instroke_chart(request,id=0,metric=''): def instroke_chart(request,id=0,metric=''): # pragma: no cover
w = get_workoutuser(id, request) w = get_workoutuser(id, request)
@@ -3085,7 +3073,7 @@ def workout_erase_column_view(request, id=0,column=''):
w = get_workoutuser(id,request) w = get_workoutuser(id,request)
protected = ['time','pace','velo','cumdist','ftime','fpace',] protected = ['time','pace','velo','cumdist','ftime','fpace',]
if column in protected: if column in protected: # pragma: no cover
messages.error(request,'You cannot erase this protected column') messages.error(request,'You cannot erase this protected column')
url = reverse('workout_data_view',kwargs={ url = reverse('workout_data_view',kwargs={
'id':encoder.encode_hex(w.id) 'id':encoder.encode_hex(w.id)
@@ -3095,7 +3083,7 @@ def workout_erase_column_view(request, id=0,column=''):
try: try:
data = dataprep.getsmallrowdata_db([column],ids=[w.id]) data = dataprep.getsmallrowdata_db([column],ids=[w.id])
except: except: # pragma: no cover
messages.error(request,'Invalid column') messages.error(request,'Invalid column')
url = reverse('workout_data_view',kwargs={ url = reverse('workout_data_view',kwargs={
'id':encoder.encode_hex(w.id) 'id':encoder.encode_hex(w.id)
@@ -3105,7 +3093,7 @@ def workout_erase_column_view(request, id=0,column=''):
try: try:
cdata = data[column] cdata = data[column]
except KeyError: except KeyError: # pragma: no cover
url = reverse('workout_data_view',kwargs={ url = reverse('workout_data_view',kwargs={
'id':encoder.encode_hex(w.id) 'id':encoder.encode_hex(w.id)
}) })
@@ -3113,7 +3101,7 @@ def workout_erase_column_view(request, id=0,column=''):
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
if not column: if not column: # pragma: no cover
url = reverse('workout_data_view',kwargs={ url = reverse('workout_data_view',kwargs={
'id':encoder.encode_hex(w.id) 'id':encoder.encode_hex(w.id)
}) })
@@ -3129,7 +3117,7 @@ def workout_erase_column_view(request, id=0,column=''):
try: try:
defaultvalue = mms[column]['default'] defaultvalue = mms[column]['default']
except KeyError: except KeyError:
if not mms[column]['null']: if not mms[column]['null']: # pragma: no cover
messages.error(request,'You cannot erase this protected column') messages.error(request,'You cannot erase this protected column')
url = reverse('workout_data_view',kwargs={ url = reverse('workout_data_view',kwargs={
'id':encoder.encode_hex(w.id) 'id':encoder.encode_hex(w.id)
@@ -3140,7 +3128,7 @@ def workout_erase_column_view(request, id=0,column=''):
try: try:
columnl = dataprep.columndict[column] columnl = dataprep.columndict[column]
except KeyError: except KeyError: # pragma: no cover
messages.error(request,'You cannot erase this column') messages.error(request,'You cannot erase this column')
url = reverse('workout_data_view',kwargs={ url = reverse('workout_data_view',kwargs={
'id':encoder.encode_hex(w.id) 'id':encoder.encode_hex(w.id)
@@ -3165,7 +3153,7 @@ def workout_erase_column_view(request, id=0,column=''):
w.trimp = 0 w.trimp = 0
w.save() w.save()
if column == 'power': if column == 'power': # pragma: no cover
w.rscore = 0 w.rscore = 0
w.normp = 0 w.normp = 0
w.goldmedalstandard = -1 w.goldmedalstandard = -1