Private
Public Access
1
0

adding tests related to planviews

This commit is contained in:
Sander Roosendaal
2021-04-19 14:10:19 +02:00
parent ed5af7d8b7
commit c494fdca2c
5 changed files with 278 additions and 103 deletions

View File

@@ -2834,7 +2834,7 @@ def handle_rp3_async_workout(userid,rp3token,rp3id,startdatetime,max_attempts,de
)
if response.status_code != 200:
if response.status_code != 200: # pragma: no cover
have_link = True
workout_download_details = pd.json_normalize(response.json()['data']['download'])
@@ -2845,12 +2845,12 @@ def handle_rp3_async_workout(userid,rp3token,rp3id,startdatetime,max_attempts,de
counter += 1
if counter>max_attempts:
if counter>max_attempts: # pragma: no cover
have_link = True
time.sleep(waittime)
if download_url == '':
if download_url == '': # pragma: no cover
return 0
filename = 'media/RP3Import_'+str(rp3id)+'.csv'
@@ -2858,15 +2858,15 @@ def handle_rp3_async_workout(userid,rp3token,rp3id,startdatetime,max_attempts,de
res = requests.get(download_url,headers=headers)
if not startdatetime:
if not startdatetime: # pragma: no cover
startdatetime = str(timezone.now())
try:
startdatetime = str(startdatetime)
except:
except: # pragma: no cover
pass
if res.status_code != 200:
if res.status_code != 200: # pragma: no cover
return 0
@@ -2889,7 +2889,7 @@ def handle_rp3_async_workout(userid,rp3token,rp3id,startdatetime,max_attempts,de
response = session.post(UPLOAD_SERVICE_URL,json=uploadoptions)
if response.status_code != 200:
if response.status_code != 200: # pragma: no cover
return 0
workoutid = response.json()['id']
@@ -2902,7 +2902,7 @@ def handle_nk_async_workout(alldata,userid,nktoken,nkid,delaysec,defaulttimezone
try:
data = alldata[nkid]
except KeyError:
except KeyError: # pragma: no cover
data = alldata[int(nkid)]
params = {
@@ -3001,7 +3001,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
try:
t = data['comments'].split('\n', 1)[0]
title += t[:40]
except:
except: # pragma: no cover
title = ''
weightcategory = 'hwt'
@@ -3033,7 +3033,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
try:
notes = data['comments']
name = notes[:40]
except (KeyError,TypeError):
except (KeyError,TypeError): # pragma: no cover
notes = 'C2 Import Workout from {startdatetime}'.format(startdatetime=startdatetime)
name = notes
@@ -3044,10 +3044,10 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
url = "https://log.concept2.com/api/users/me/results/"+str(c2id)+"/strokes"
try:
s = requests.get(url,headers=headers)
except ConnectionError:
except ConnectionError: # pragma: no cover
return 0
if s.status_code != 200:
if s.status_code != 200: # pragma: no cover
return 0
strokedata = pd.DataFrame.from_dict(s.json()['data'])
@@ -3065,7 +3065,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
nr_rows = len(unixtime)
try:
try: # pragma: no cover
latcoord = strokedata.loc[:,'lat']
loncoord = strokedata.loc[:,'lon']
except:
@@ -3075,19 +3075,19 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
try:
strokelength = strokedata.loc[:,'strokelength']
except:
except: # pragma: no cover
strokelength = np.zeros(nr_rows)
dist2 = 0.1*strokedata.loc[:,'d']
try:
spm = strokedata.loc[:,'spm']
except KeyError:
except KeyError: # pragma: no cover
spm = 0*dist2
try:
hr = strokedata.loc[:,'hr']
except KeyError:
except KeyError: # pragma: no cover
hr = 0*spm
pace = strokedata.loc[:,'p']/10.
@@ -3096,7 +3096,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
velo = 500./pace
power = 2.8*velo**3
if workouttype == 'bike':
if workouttype == 'bike': # pragma: no cover
velo = 1000./pace
df = pd.DataFrame({'TimeStamp (sec)':unixtime,
@@ -3142,12 +3142,12 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
response = session.post(UPLOAD_SERVICE_URL,json=uploadoptions)
if response.status_code != 200:
if response.status_code != 200: # pragma: no cover
return 0
workoutid = response.json()['id']
if debug:
if debug: # pragma: no cover
engine = create_engine(database_url_debug, echo=False)
else:
engine = create_engine(database_url, echo=False)
@@ -3158,7 +3158,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
with engine.connect() as conn, conn.begin():
result = conn.execute(query)
tdata = result.fetchall()
if tdata:
if tdata: # pragma: no cover
newc2id = tdata[0][0]
conn.close()
@@ -3185,16 +3185,16 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
# summary
if 'workout' in data:
if 'splits' in data['workout']:
if 'splits' in data['workout']: # pragma: no cover
splitdata = data['workout']['splits']
elif 'intervals' in data['workout']:
elif 'intervals' in data['workout']: # pragma: no cover
splitdata = data['workout']['intervals']
else:
else: # pragma: no cover
splitdata = False
else:
splitdata = False
if splitdata:
if splitdata: # pragma: no cover
summary,sa,results = summaryfromsplitdata(splitdata,data,csvfilename,workouttype=workouttype)
query = "UPDATE `rowers_workout` SET `summary` = '%s' WHERE `id` = %s" % (summary, workoutid)
@@ -3440,7 +3440,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
try:
power = strokedata.loc[:,'power']
except KeyError:
except KeyError: # pragma: no cover
power = 2.8*velo**3
#if power.std() == 0 and power.mean() == 0:

View File

@@ -292,6 +292,20 @@ class C2Objects(DjangoTestCase):
res = add_workout_from_strokedata(self.u,1,data,strokedata,source='c2')
@patch('rowers.tasks.requests.get',side_effect=mocked_requests)
@patch('rowers.tasks.requests.post',side_effect=mocked_requests)
@patch('rowers.tasks.requests.session', side_effect=mocked_requests)
def test_handle_c2_get_workouts(self, mock_get, mockpost,MockSession):
with open('rowers/tests/testdata/c2workoutlist.txt','r') as infile:
c2workoutdata = json.load(infile)
alldata = {}
for item in c2workoutdata['data']:
alldata[item['id']] = item
res = tasks.handle_c2_async_workout(alldata,self.u.id,self.r.c2token,33991243,0,self.r.defaulttimezone)
self.assertEqual(res,1)
@override_settings(TESTING=True)
class C2ObjectsTokenExpired(DjangoTestCase):
def setUp(self):

View File

@@ -182,6 +182,99 @@ class TrainingPlanTest(TestCase):
# status_code=302,target_status_code=200)
@override_settings(TESTING=True)
class SessionTemplateTest(TestCase):
def setUp(self):
self.u = UserFactory()
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
self.c = Client()
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
self.factory = RequestFactory()
self.password = faker.word()
self.u.set_password(self.password)
self.u.save()
self.pss = []
for w in self.user_workouts:
startdatetime = w.startdatetime
startdate = (startdatetime-datetime.timedelta(days=1)).date()
enddate = (startdatetime+datetime.timedelta(days=1)).date()
preferreddate = startdatetime.date()
ps = SessionFactory(startdate=startdate,enddate=enddate,
sessiontype='session',
sessionmode = 'time',
criterium = 'none',
sessionvalue = 60,
sessionunit='min',
preferreddate=preferreddate,
manager=self.u,
)
ps.save()
self.pss.append(ps)
result = plannedsessions.add_rower_session(self.r,ps)
def tearDown(self):
for workout in self.user_workouts:
try:
os.remove(workout.csvfilename)
except (IOError, FileNotFoundError,OSError):
pass
def test_createtemplate_view(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('plannedsession_createtemplate_view')
response = self.c.get(url)
self.assertEqual(response.status_code,200)
post_data = {
'comment': faker.text(),
'criterium': 'none',
'sessionsport': 'water',
'sessionmode':'time',
'sessiontype':'session',
'sessionunit':'min',
'sessionvalue': '60',
'name': faker.word(),
}
form = PlannedSessionTemplateForm(post_data)
self.assertTrue(form.is_valid())
expected_url = reverse('template_library_view')
response = self.c.post(url,post_data,follow=True)
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
templates = PlannedSession.objects.filter(is_template=True)
self.assertEqual(templates.count(),1)
t = templates[0]
t.tags.add('test')
url = reverse('template_share_view',kwargs={'id':t.id})
response = self.c.get(url,follow=True)
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
url = reverse('template_makeprivate_view',kwargs={'id':t.id})
response = self.c.get(url,follow=True)
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
@override_settings(TESTING=True)
class SessionLinkTest(TestCase):
@@ -1335,6 +1428,7 @@ class PlannedSessionsView(TestCase):
self.ps_trimp.save()
added = plannedsessions.add_rower_session(self.u.rower,self.ps_trimp)
added = plannedsessions.add_team_session(self.team,self.ps_trimp)
self.ps_trimp.save()
def tearDown(self):
try:
@@ -1359,6 +1453,53 @@ class PlannedSessionsView(TestCase):
# expected_url=expected_url,
# status_code=302,target_status_code=200)
def test_teamclone_view(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('plannedsession_teamclone_view',kwargs={'id':self.ps_trimp.id})
today = datetime.date.today()
b = datetime.date.today()-timezone.timedelta(today.weekday())
e = b+timezone.timedelta(days=6)
expected_url = '/rowers/sessions/teamedit/5/'
response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200)
def test_totemplate_view(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('plannedsession_totemplate_view',kwargs={'id':self.ps_trimp.id})
response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200)
def test_message_view(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('plannedsession_message_view',kwargs={'id':self.ps_trimp.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
form_data = {
'rower':[self.r.id],
'subject':'test',
'message':'apestaart en knokroos'
}
form = VirtualRaceAthleteForm(form_data,instance=self.ps_trimp)
self.assertTrue(form.is_valid())
response = self.c.post(url,form_data,follow=True)
expected_url = reverse('plannedsession_view',kwargs={'id':self.ps_trimp.id})
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
def test_multiclone_view(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
@@ -1441,6 +1582,7 @@ class PlannedSessionsView(TestCase):
form_data = {
'team':[self.team.id],
'members': [self.r.id],
'startdate': self.w1.startdatetime.date(),
'enddate': (self.w1.startdatetime+datetime.timedelta(days=5)).date(),
'preferreddate': self.w1.startdatetime.date(),
@@ -1466,6 +1608,21 @@ class PlannedSessionsView(TestCase):
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)
pss = PlannedSession.objects.filter(name=form_data['name'],comment=form_data['comment'])
self.assertEqual(pss.count(),1)
ps = pss[0]
url = reverse('plannedsession_teamedit_view',kwargs={'id':ps.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
form_data['name'] = faker.word()
plannedsessionform = PlannedSessionForm(form_data,instance=ps)
self.assertTrue(plannedsessionform.is_valid())
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)
def test_teamedit_view(self):
login = self.c.login(username=self.u.username, password=self.password)
@@ -1630,9 +1787,7 @@ class PlannedSessionsView(TestCase):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = '/rowers/sessions/{id}/edit/'.format(
id=self.ps_time.id,
)
url = reverse('plannedsession_edit_view',kwargs={'id':self.ps_time.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
@@ -1658,7 +1813,7 @@ class PlannedSessionsView(TestCase):
self.assertTrue(form.is_valid())
response = self.c.post(url,follow=True)
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)

View File

@@ -761,16 +761,20 @@ urlpatterns = [
name='plannedsession_edit_view'),
re_path(r'^sessions/(?P<id>\d+)/templateedit/',views.plannedsession_templateedit_view,
name='plannedsession_templateedit_view'),
re_path(r'^sessions/(?P<id>\d+)/maketemplate/$',views.plannedsession_totemplate_view),
re_path(r'^sessions/(?P<id>\d+)/maketemplate/$',views.plannedsession_totemplate_view,
name='plannedsession_totemplate_view'),
re_path(r'^sessions/(?P<id>\d+)/compare/$',
views.plannedsession_compare_view,
name='plannedsession_compare_view'),
re_path(r'^sessions/(?P<id>\d+)/compare/user/(?P<userid>\d+)/$',
views.plannedsession_compare_view,
name='plannedsession_compare_view'),
re_path(r'^sessions/(?P<id>\d+)/edit/user/(?P<userid>\d+)/$',views.plannedsession_edit_view),
re_path(r'^sessions/(?P<id>\d+)/clone/user/(?P<userid>\d+)/$',views.plannedsession_clone_view),
re_path(r'^sessions/(?P<id>\d+)/clone/team/$',views.plannedsession_teamclone_view),
re_path(r'^sessions/(?P<id>\d+)/edit/user/(?P<userid>\d+)/$',views.plannedsession_edit_view,
name='plannedsession_edit_view'),
re_path(r'^sessions/(?P<id>\d+)/clone/user/(?P<userid>\d+)/$',views.plannedsession_clone_view,
name='plannedsession_clone_view'),
re_path(r'^sessions/(?P<id>\d+)/clone/team/$',views.plannedsession_teamclone_view,
name='plannedsession_teamclone_view'),
re_path(r'^sessions/(?P<id>\d+)/clone/$',views.plannedsession_clone_view),
re_path(r'^sessions/(?P<psid>\d+)/detach/(?P<id>\b[0-9A-Fa-f]+\b)/user/(?P<userid>\d+)/$',views.plannedsession_detach_view),
re_path(r'^sessions/(?P<psid>\d+)/detach/(?P<id>\b[0-9A-Fa-f]+\b)/$',views.plannedsession_detach_view),

View File

@@ -25,9 +25,9 @@ def plannedsession_comment_view(request,id=0,userid=0):
comment = cd['comment']
comment = bleach.clean(comment)
try:
if isinstance(comment,unicode):
if isinstance(comment,unicode): # pragma: no cover
comment = comment.encode('utf8')
elif isinstance(comment, str):
elif isinstance(comment, str): # pragma: no cover
comment = comment.decode('utf8')
except:
pass
@@ -45,13 +45,13 @@ def plannedsession_comment_view(request,id=0,userid=0):
comment = comment,
url = url,
)
if request.user != manager:
if request.user != manager: # pragma: no cover
a_messages.info(r.user,message.encode('ascii','ignore'))
sessiontype = 'training session'
if ps.sessiontype == 'race':
if ps.sessiontype == 'race': # pragma: no cover
sessiontype = 'online virtual race'
elif ps.sessiontype == 'indoorrace':
elif ps.sessiontype == 'indoorrace': # pragma: no cover
sessiontype = 'indoor online virtual race'
res = myqueue(queuehigh,
@@ -67,14 +67,14 @@ def plannedsession_comment_view(request,id=0,userid=0):
)
commenters = {oc.user for oc in comments if oc.notification}
if ps.sessiontype=='race':
if ps.sessiontype=='race': # pragma: no cover
registrations = VirtualRaceResult.objects.filter(
race__id=ps.id,
emailnotifications=True)
ids = [rg.userid for rg in registrations]
rwrs = Rower.objects.filter(id__in= ids)
rowers = {u.user for u in rwrs}
elif ps.sessiontype=='indoorrace':
elif ps.sessiontype=='indoorrace': # pragma: no cover
registrations = IndoorVirtualRaceResult.objects.filter(
race__id=ps.id,
emailnotifications=True)
@@ -87,9 +87,9 @@ def plannedsession_comment_view(request,id=0,userid=0):
for u in commenters:
try:
a_messages.info(u,message)
except ValueError:
except ValueError: # pragma: no cover
pass
if u != request.user and u != r.user:
if u != request.user and u != r.user: # pragma: no cover
ocr = Rower.objects.get(user=u)
res = myqueue(queue,
handle_sendemailnewresponse,
@@ -106,7 +106,7 @@ def plannedsession_comment_view(request,id=0,userid=0):
sessiontype = sessiontype,
commentlink = url
)
if ps.sessiontype in ['race','indoorrace']:
if ps.sessiontype in ['race','indoorrace']: # pragma: no cover
followers = VirtualRaceFollower.objects.filter(race__id=ps.id)
for follower in followers:
othername = ''
@@ -133,7 +133,7 @@ def plannedsession_comment_view(request,id=0,userid=0):
rower = getrower(request.user)
if ps.sessiontype in ['race','indoorrace']:
if ps.sessiontype in ['race','indoorrace']: # pragma: no cover
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -209,12 +209,14 @@ def plannedsession_message_view(request,id=0,userid=0):
message,
)
url = reverse('plannedsession_view',kwargs={'id':ps.id})
if ps.sessiontype in ['race','indoorrace']: # pragma: no cover
url = reverse('virtualevent_view',kwargs={'id':ps.id})
url = reverse('virtualevent_view',kwargs={'id':ps.id})
return HttpResponseRedirect(url)
if ps.sessiontype in ['race','indoorrace']:
if ps.sessiontype in ['race','indoorrace']: # pragma: no cover
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -274,7 +276,7 @@ def plannedsession_multiclone_view(
startdate,enddate = get_dates_timeperiod(request)
teamid = get_team(request)
if request.method == 'POST' and 'daterange' in request.POST:
if request.method == 'POST' and 'daterange' in request.POST: # pragma: no cover
dateform = DateRangeForm(request.POST)
if dateform.is_valid():
startdate = dateform.cleaned_data['startdate']
@@ -337,7 +339,7 @@ def plannedsession_multiclone_view(
"startdate","preferreddate","enddate").exclude(
sessiontype='race')
if teamid:
if teamid: # pragma: no cover
sps = sps.filter(team__in=[teamid])
try:
team = Team.objects.get(id=teamid)
@@ -349,7 +351,7 @@ def plannedsession_multiclone_view(
team = None
query = request.GET.get('q')
if query:
if query: # pragma: no cover
query_list = query.split()
sps = sps.filter(
reduce(operator.and_,
@@ -390,7 +392,7 @@ def plannedsession_multiclone_view(
if Team.objects.filter(manager=request.user).count()>=1:
teamform = RowerTeamForm(request.user)
if teamid:
if teamid: # pragma: no cover
teamform = RowerTeamForm(request.user,initial={'team':teamid})
else:
teamform = None
@@ -422,7 +424,7 @@ def template_share_view(request,id=0,userid=0):
if ps.can_be_shared:
ps.is_public = True
ps.save()
else:
else: # pragma: no cover
messages.error(request,'This planned session comes from a third party and cannot be shared')
return HttpResponseRedirect(reverse(template_library_view))
@@ -471,7 +473,7 @@ def template_library_view(request,userid=0):
alltags = uniqify(alltags)
tag = request.GET.get('tag')
if tag:
if tag: # pragma: no cover
tags = [tag]
templates = templates.filter(tags__name__in=tags).distinct()
@@ -539,11 +541,11 @@ def plannedsession_create_view(request,
})
if '_continue' in request.POST:
if '_continue' in request.POST: # pragma: no cover
url = reverse('plannedsession_edit_view',kwargs={
'id':ps.id,
})
elif '_addanother' in request.POST:
elif '_addanother' in request.POST: # pragma: no cover
url = reverse('plannedsession_create_view',kwargs={'userid':userid})
url = url+'?when='+timeperiod
@@ -551,7 +553,7 @@ def plannedsession_create_view(request,
return HttpResponseRedirect(url)
else:
if 'fstartdate' in request.session:
if 'fstartdate' in request.session: # pragma: no cover
try:
fstartdate = arrow.get(request.session['fstartdate']).date()
except KeyError:
@@ -586,7 +588,7 @@ def plannedsession_create_view(request,
preferreddate = startdate.date()
except AttributeError:
preferreddate = startdate
if preferreddate < timezone.now().date():
if preferreddate < timezone.now().date(): # pragma: no cover
preferreddate = timezone.now().date()
try:
@@ -594,7 +596,7 @@ def plannedsession_create_view(request,
except AttributeError:
pass
if preferreddate > enddate:
if preferreddate > enddate: # pragma: no cover
preferreddate = enddate
forminitial = {
@@ -626,7 +628,7 @@ def plannedsession_create_view(request,
sessiontemplates = sessiontemplates.order_by("name")
alltags = []
for t in sessiontemplates:
for t in sessiontemplates: # pragma: no cover
tags = t.tags.all()
for tag in tags:
alltags.append(tag)
@@ -634,7 +636,7 @@ def plannedsession_create_view(request,
alltags = uniqify(alltags)
tag = request.GET.get('tag')
if tag:
if tag: # pragma: no cover
tags = [tag]
sessiontemplates = sessiontemplates.filter(tags__name__in=tags).distinct()
@@ -709,11 +711,11 @@ def plannedsession_createtemplate_view(request,
url = reverse('template_library_view')
if '_continue' in request.POST:
if '_continue' in request.POST: # pragma: no cover
url = reverse('plannedsession_templateedit_view',kwargs={
'id':ps.id,
})
elif '_addanother' in request.POST:
elif '_addanother' in request.POST: # pragma: no cover
url = reverse('plannedsession_createtemplate_view')
return HttpResponseRedirect(url)
@@ -733,7 +735,7 @@ def plannedsession_createtemplate_view(request,
sessiontemplates = sessiontemplates.order_by("name")
alltags = []
for t in sessiontemplates:
for t in sessiontemplates: # pragma: no cover
tags = t.tags.all()
for tag in tags:
alltags.append(tag)
@@ -806,7 +808,7 @@ def plannedsession_multicreate_view(request,
).order_by("startdate","preferreddate","enddate").exclude(
sessiontype='race')
if teamid:
if teamid: # pragma: no cover
qset = qset.filter(team__in=[teamid])
try:
team = Team.objects.get(id=teamid)
@@ -844,10 +846,10 @@ def plannedsession_multicreate_view(request,
for ps in instances:
ps.save()
add_rower_session(r,ps)
if team:
if team: # pragma: no cover
add_team_session(team,ps)
messages.info(request,"Saved changes for Planned Session "+str(ps))
for obj in ps_formset.deleted_objects:
for obj in ps_formset.deleted_objects: # pragma: no cover
messages.info(request,"Deleted Planned Session "+str(obj))
obj.delete()
@@ -862,7 +864,7 @@ def plannedsession_multicreate_view(request,
enddatestring = enddate.strftime('%Y-%m-%d')
url += '?when='+startdatestring+'/'+enddatestring
if team:
if team: # pragma: no cover
url += '&team={teamid}'.format(teamid=team.id)
return HttpResponseRedirect(url)
@@ -888,7 +890,7 @@ def plannedsession_multicreate_view(request,
if Team.objects.filter(manager=request.user).count()>=1:
teamform = RowerTeamForm(request.user)
if teamid:
if teamid: # pragma: no cover
teamform = RowerTeamForm(request.user,initial={'team':teamid})
else:
teamform = None
@@ -975,11 +977,11 @@ def plannedsession_teamcreate_view(request,
'userid':userid,
})
if '_continue' in request.POST:
if '_continue' in request.POST: # pragma: no cover
url = reverse('plannedsession_edit_view',kwargs={
'id':ps.id,
})
elif '_addanother' in request.POST:
elif '_addanother' in request.POST: # pragma: no cover
url = reverse('plannedsession_teamcreate_view',kwargs={'userid':userid})
url = url+'?when='+timeperiod
@@ -995,7 +997,7 @@ def plannedsession_teamcreate_view(request,
#next = request.GET.get('next', url)
#return HttpResponseRedirect(next)
else:
else: # pragma: no cover
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
breadcrumbs = [
{
@@ -1035,7 +1037,7 @@ def plannedsession_teamcreate_view(request,
'preferreddate':startdate,
}
if 'teams' in request.session:
if 'teams' in request.session: # pragma: no cover
teams = request.session['teams']
theteams = Team.objects.filter(id__in=teams)
initialteam = {
@@ -1113,7 +1115,7 @@ def plannedsession_teamedit_view(request,
startdate__lte = startdate,
rowers = r,
enddate__gte = enddate)[0]
except IndexError:
except IndexError: # pragma: no cover
trainingplan = None
sps = []
@@ -1138,11 +1140,10 @@ def plannedsession_teamedit_view(request,
)
sessionrowerform = PlannedSessionTeamMemberForm(ps,request.POST)
if sessioncreateform.is_valid():
cd = sessioncreateform.cleaned_data
if cd['sessionunit'] == 'min':
if cd['sessionunit'] == 'min': # pragma: no cover
cd['sessionmode'] = 'time'
elif cd['sessionunit'] in ['km','m']:
cd['sessionmode'] = 'distance'
@@ -1152,7 +1153,7 @@ def plannedsession_teamedit_view(request,
if res:
messages.info(request,message)
else:
else: # pragma: no cover
messages.error(request,message)
@@ -1166,14 +1167,15 @@ def plannedsession_teamedit_view(request,
rs = Rower.objects.filter(team__in=[team])
for r in rs:
add_rower_session(r,ps)
else:
else: # pragma: no cover
remove_team_session(team,ps)
else:
else: # pragma: no cover
selectedteams = []
for team in teams:
remove_team_session(team,ps)
if sessionrowerform.is_valid():
cd = sessionrowerform.cleaned_data
selectedrowers = cd['members']
@@ -1279,7 +1281,7 @@ def plannedsessions_coach_view(request,
trainingplan = None
if teamid != 0:
if teamid != 0:# pragma: no cover
try:
theteam = Team.objects.get(id=teamid)
except Team.DoesNotExist:
@@ -1297,7 +1299,7 @@ def plannedsessions_coach_view(request,
if therower.rowerplan != 'freecoach':
rowers = [therower]
else:
else:# pragma: no cover
rowers = []
for ps in sps:
@@ -1356,7 +1358,7 @@ def plannedsessions_coach_view(request,
})
ttemplate = 'plannedsessionscoach.html'
if len(rowers) > 5 and len(rowers) > len(sps):
if len(rowers) > 5 and len(rowers) > len(sps): # pragma: no cover
ttemplate = 'plannedsessionscoach2.html'
@@ -1386,16 +1388,16 @@ def plannedsessions_view(request,
try:
r = getrequestplanrower(request,userid=userid)
except PermissionDenied:
except PermissionDenied: # pragma: no cover
r = request.user.rower
if startdatestring:
if startdatestring: # pragma: no cover
try:
startdate = iso8601.parse_date(startdatestring)
except ParseError:
pass
if enddatestring:
if enddatestring: # pragma: no cover
try:
enddate = iso8601.parse_date(enddatestring)
except ParseError:
@@ -1454,7 +1456,7 @@ def plannedsessions_view(request,
tss = hrtss
totals['distance'] += w.distance
totals['time'] += timefield_to_seconds_duration(w.duration)
if w.plannedsession:
if w.plannedsession: # pragma: no cover
if w.plannedsession.sessionmode == 'distance':
totals['actualdistance'] += w.distance
elif w.plannedsession.sessionmode == 'time':
@@ -1464,7 +1466,7 @@ def plannedsessions_view(request,
elif w.plannedsession.sessionmode == 'TRIMP':
totals['actualtrimp'] += thetrimp
if not sps and request.user.rower.rowerplan == 'basic':
if not sps and request.user.rower.rowerplan == 'basic': # pragma: no cover
messages.error(request,
"You must purchase Coach or Self-coach plans or be part of a team to get planned sessions")
@@ -1479,9 +1481,9 @@ def plannedsessions_view(request,
totals['planneddistance'] += ps.sessionvalue
elif ps.sessionmode == 'time':
totals['plannedtime'] += ps.sessionvalue
elif ps.sessionmode == 'rScore':
elif ps.sessionmode == 'rScore': # pragma: no cover
totals['plannedrscore'] += ps.sessionvalue
elif ps.sessionmode == 'TRIMP':
elif ps.sessionmode == 'TRIMP': # pragma: no cover
totals['plannedtrimp'] += ps.sessionvalue
totals['time'] = int(totals['time']/60.)
@@ -1572,7 +1574,7 @@ def plannedsessions_manage_view(request,userid=0,
initialsession=0):
is_ajax = False
if request.is_ajax():
if request.is_ajax(): # pragma: no cover
is_ajax = True
r = getrequestrower(request,userid=userid)
@@ -1614,7 +1616,7 @@ def plannedsessions_manage_view(request,userid=0,
linkedworkouts = []
for w in ws:
if w.plannedsession is not None:
if w.plannedsession is not None: # pragma: no cover
linkedworkouts.append(w.id)
plannedsessionstuple = []
@@ -1672,7 +1674,7 @@ def plannedsessions_manage_view(request,userid=0,
w_form = WorkoutSessionSelectForm(workoutdata=workoutdata)
if is_ajax:
if is_ajax: # pragma: no cover
ajax_workouts = []
for id,name in workoutdata['choices']:
ininitial = id in initialworkouts
@@ -1746,7 +1748,7 @@ def plannedsession_clone_view(request,id=0,userid=0):
startdate__lte = startdate,
rowers = r,
enddate__gte = enddate)[0]
except IndexError:
except IndexError: # pragma: no cover
trainingplan = None
ps = get_object_or_404(PlannedSession,pk=id)
@@ -1773,7 +1775,7 @@ def plannedsession_clone_view(request,id=0,userid=0):
if rowers:
for rower in rowers:
add_rower_session(rower,ps)
else:
else: # pragma: no cover
add_rower_session(r,ps)
for team in teams:
add_team_session(team,ps)
@@ -2010,7 +2012,7 @@ def plannedsession_edit_view(request,id=0,userid=0):
startdate__lte = startdate,
rowers = r,
enddate__gte = enddate)[0]
except IndexError:
except IndexError: # pragma: no cover
trainingplan = None
ps = get_object_or_404(PlannedSession,pk=id)
@@ -2147,13 +2149,13 @@ def plannedsession_view(request,id=0,userid=0):
r = getrequestplanrower(request,userid=userid)
ps = get_object_or_404(PlannedSession,pk=id)
if ps.steps is not None:
if ps.steps is not None: # pragma: no cover
jsons = ps.steps
else:
jsons = {}
try:
try: # pragma: no cover
r = VirtualRace.objects.get(id=ps.id)
url = reverse('virtualevent_view',
kwargs={'id':ps.id}
@@ -2162,7 +2164,7 @@ def plannedsession_view(request,id=0,userid=0):
except VirtualRace.DoesNotExist:
pass
if ps.course:
if ps.course: # pragma: no cover
coursescript,coursediv = course_map(ps.course)
else:
coursescript = ''
@@ -2208,7 +2210,7 @@ def plannedsession_view(request,id=0,userid=0):
'sessionresult':0,
'workoutid':w.id,
}
if ps.sessiontype == 'coursetest':
if ps.sessiontype == 'coursetest': # pragma: no cover
vs = CourseTestResult.objects.filter(plannedsession=ps,
workoutid=w.id)
@@ -2257,7 +2259,7 @@ def plannedsession_view(request,id=0,userid=0):
if ps.sessiontype == 'coursetest':
ranking = sorted(ranking, key=lambda k: k['time'])
if ps.sessiontype == 'fastest_distance':
if ps.sessiontype == 'fastest_distance': # pragma: no cover
vs = CourseTestResult.objects.filter(plannedsession=ps)
if vs:
@@ -2293,7 +2295,7 @@ def plannedsession_view(request,id=0,userid=0):
pass
ranking = sorted(ranking, key=lambda k: k['time'])
if ps.sessiontype == 'fastest_time':
if ps.sessiontype == 'fastest_time': # pragma: no cover
vs = CourseTestResult.objects.filter(plannedsession=ps)
if vs:
@@ -2363,7 +2365,7 @@ def plannedsession_view(request,id=0,userid=0):
comments = PlannedSessionComment.objects.filter(plannedsession=ps).order_by("created")
steps = ''
if ps.steps:
if ps.steps: # pragma: no cover
d = ps.steps
steps = ps_dict_get_description_html(d,short=False)
@@ -2407,7 +2409,7 @@ class PlannedSessionDelete(DeleteView):
def get_context_data(self, **kwargs):
context = super(PlannedSessionDelete,self).get_context_data(**kwargs)
if 'userid' in kwargs:
if 'userid' in kwargs: # pragma: no cover
userid = kwargs['userid']
else:
userid = 0
@@ -2455,7 +2457,7 @@ class PlannedSessionDelete(DeleteView):
def get_success_url(self):
ws = Workout.objects.filter(plannedsession=self.object)
for w in ws:
for w in ws: # pragma: no cover
w.plannedsession = None
w.save()
@@ -2468,7 +2470,7 @@ class PlannedSessionDelete(DeleteView):
def get_object(self, *args, **kwargs):
obj = super(PlannedSessionDelete, self).get_object(*args, **kwargs)
if not can_delete_session(self.request.user,obj):
if not can_delete_session(self.request.user,obj): # pragma: no cover
raise PermissionDenied('You are not allowed to delete this planned session')
return obj