adding tests related to planviews
This commit is contained in:
@@ -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
|
have_link = True
|
||||||
|
|
||||||
workout_download_details = pd.json_normalize(response.json()['data']['download'])
|
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
|
counter += 1
|
||||||
|
|
||||||
if counter>max_attempts:
|
if counter>max_attempts: # pragma: no cover
|
||||||
have_link = True
|
have_link = True
|
||||||
|
|
||||||
time.sleep(waittime)
|
time.sleep(waittime)
|
||||||
|
|
||||||
if download_url == '':
|
if download_url == '': # pragma: no cover
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
filename = 'media/RP3Import_'+str(rp3id)+'.csv'
|
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)
|
res = requests.get(download_url,headers=headers)
|
||||||
|
|
||||||
|
|
||||||
if not startdatetime:
|
if not startdatetime: # pragma: no cover
|
||||||
startdatetime = str(timezone.now())
|
startdatetime = str(timezone.now())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
startdatetime = str(startdatetime)
|
startdatetime = str(startdatetime)
|
||||||
except:
|
except: # pragma: no cover
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if res.status_code != 200:
|
if res.status_code != 200: # pragma: no cover
|
||||||
return 0
|
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)
|
response = session.post(UPLOAD_SERVICE_URL,json=uploadoptions)
|
||||||
|
|
||||||
if response.status_code != 200:
|
if response.status_code != 200: # pragma: no cover
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
workoutid = response.json()['id']
|
workoutid = response.json()['id']
|
||||||
@@ -2902,7 +2902,7 @@ def handle_nk_async_workout(alldata,userid,nktoken,nkid,delaysec,defaulttimezone
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
data = alldata[nkid]
|
data = alldata[nkid]
|
||||||
except KeyError:
|
except KeyError: # pragma: no cover
|
||||||
data = alldata[int(nkid)]
|
data = alldata[int(nkid)]
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
@@ -3001,7 +3001,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
|
|||||||
try:
|
try:
|
||||||
t = data['comments'].split('\n', 1)[0]
|
t = data['comments'].split('\n', 1)[0]
|
||||||
title += t[:40]
|
title += t[:40]
|
||||||
except:
|
except: # pragma: no cover
|
||||||
title = ''
|
title = ''
|
||||||
|
|
||||||
weightcategory = 'hwt'
|
weightcategory = 'hwt'
|
||||||
@@ -3033,7 +3033,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
|
|||||||
try:
|
try:
|
||||||
notes = data['comments']
|
notes = data['comments']
|
||||||
name = notes[:40]
|
name = notes[:40]
|
||||||
except (KeyError,TypeError):
|
except (KeyError,TypeError): # pragma: no cover
|
||||||
notes = 'C2 Import Workout from {startdatetime}'.format(startdatetime=startdatetime)
|
notes = 'C2 Import Workout from {startdatetime}'.format(startdatetime=startdatetime)
|
||||||
name = notes
|
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"
|
url = "https://log.concept2.com/api/users/me/results/"+str(c2id)+"/strokes"
|
||||||
try:
|
try:
|
||||||
s = requests.get(url,headers=headers)
|
s = requests.get(url,headers=headers)
|
||||||
except ConnectionError:
|
except ConnectionError: # pragma: no cover
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if s.status_code != 200:
|
if s.status_code != 200: # pragma: no cover
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
strokedata = pd.DataFrame.from_dict(s.json()['data'])
|
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)
|
nr_rows = len(unixtime)
|
||||||
|
|
||||||
try:
|
try: # pragma: no cover
|
||||||
latcoord = strokedata.loc[:,'lat']
|
latcoord = strokedata.loc[:,'lat']
|
||||||
loncoord = strokedata.loc[:,'lon']
|
loncoord = strokedata.loc[:,'lon']
|
||||||
except:
|
except:
|
||||||
@@ -3075,19 +3075,19 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
strokelength = strokedata.loc[:,'strokelength']
|
strokelength = strokedata.loc[:,'strokelength']
|
||||||
except:
|
except: # pragma: no cover
|
||||||
strokelength = np.zeros(nr_rows)
|
strokelength = np.zeros(nr_rows)
|
||||||
|
|
||||||
dist2 = 0.1*strokedata.loc[:,'d']
|
dist2 = 0.1*strokedata.loc[:,'d']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
spm = strokedata.loc[:,'spm']
|
spm = strokedata.loc[:,'spm']
|
||||||
except KeyError:
|
except KeyError: # pragma: no cover
|
||||||
spm = 0*dist2
|
spm = 0*dist2
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hr = strokedata.loc[:,'hr']
|
hr = strokedata.loc[:,'hr']
|
||||||
except KeyError:
|
except KeyError: # pragma: no cover
|
||||||
hr = 0*spm
|
hr = 0*spm
|
||||||
|
|
||||||
pace = strokedata.loc[:,'p']/10.
|
pace = strokedata.loc[:,'p']/10.
|
||||||
@@ -3096,7 +3096,7 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
|
|||||||
|
|
||||||
velo = 500./pace
|
velo = 500./pace
|
||||||
power = 2.8*velo**3
|
power = 2.8*velo**3
|
||||||
if workouttype == 'bike':
|
if workouttype == 'bike': # pragma: no cover
|
||||||
velo = 1000./pace
|
velo = 1000./pace
|
||||||
|
|
||||||
df = pd.DataFrame({'TimeStamp (sec)':unixtime,
|
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)
|
response = session.post(UPLOAD_SERVICE_URL,json=uploadoptions)
|
||||||
|
|
||||||
if response.status_code != 200:
|
if response.status_code != 200: # pragma: no cover
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
workoutid = response.json()['id']
|
workoutid = response.json()['id']
|
||||||
|
|
||||||
if debug:
|
if debug: # pragma: no cover
|
||||||
engine = create_engine(database_url_debug, echo=False)
|
engine = create_engine(database_url_debug, echo=False)
|
||||||
else:
|
else:
|
||||||
engine = create_engine(database_url, echo=False)
|
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():
|
with engine.connect() as conn, conn.begin():
|
||||||
result = conn.execute(query)
|
result = conn.execute(query)
|
||||||
tdata = result.fetchall()
|
tdata = result.fetchall()
|
||||||
if tdata:
|
if tdata: # pragma: no cover
|
||||||
newc2id = tdata[0][0]
|
newc2id = tdata[0][0]
|
||||||
|
|
||||||
conn.close()
|
conn.close()
|
||||||
@@ -3185,16 +3185,16 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
|
|||||||
|
|
||||||
# summary
|
# summary
|
||||||
if 'workout' in data:
|
if 'workout' in data:
|
||||||
if 'splits' in data['workout']:
|
if 'splits' in data['workout']: # pragma: no cover
|
||||||
splitdata = data['workout']['splits']
|
splitdata = data['workout']['splits']
|
||||||
elif 'intervals' in data['workout']:
|
elif 'intervals' in data['workout']: # pragma: no cover
|
||||||
splitdata = data['workout']['intervals']
|
splitdata = data['workout']['intervals']
|
||||||
else:
|
else: # pragma: no cover
|
||||||
splitdata = False
|
splitdata = False
|
||||||
else:
|
else:
|
||||||
splitdata = False
|
splitdata = False
|
||||||
|
|
||||||
if splitdata:
|
if splitdata: # pragma: no cover
|
||||||
summary,sa,results = summaryfromsplitdata(splitdata,data,csvfilename,workouttype=workouttype)
|
summary,sa,results = summaryfromsplitdata(splitdata,data,csvfilename,workouttype=workouttype)
|
||||||
|
|
||||||
query = "UPDATE `rowers_workout` SET `summary` = '%s' WHERE `id` = %s" % (summary, workoutid)
|
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:
|
try:
|
||||||
power = strokedata.loc[:,'power']
|
power = strokedata.loc[:,'power']
|
||||||
except KeyError:
|
except KeyError: # pragma: no cover
|
||||||
power = 2.8*velo**3
|
power = 2.8*velo**3
|
||||||
|
|
||||||
#if power.std() == 0 and power.mean() == 0:
|
#if power.std() == 0 and power.mean() == 0:
|
||||||
|
|||||||
@@ -292,6 +292,20 @@ class C2Objects(DjangoTestCase):
|
|||||||
|
|
||||||
res = add_workout_from_strokedata(self.u,1,data,strokedata,source='c2')
|
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)
|
@override_settings(TESTING=True)
|
||||||
class C2ObjectsTokenExpired(DjangoTestCase):
|
class C2ObjectsTokenExpired(DjangoTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
@@ -182,6 +182,99 @@ class TrainingPlanTest(TestCase):
|
|||||||
# status_code=302,target_status_code=200)
|
# 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)
|
@override_settings(TESTING=True)
|
||||||
class SessionLinkTest(TestCase):
|
class SessionLinkTest(TestCase):
|
||||||
@@ -1335,6 +1428,7 @@ class PlannedSessionsView(TestCase):
|
|||||||
self.ps_trimp.save()
|
self.ps_trimp.save()
|
||||||
added = plannedsessions.add_rower_session(self.u.rower,self.ps_trimp)
|
added = plannedsessions.add_rower_session(self.u.rower,self.ps_trimp)
|
||||||
added = plannedsessions.add_team_session(self.team,self.ps_trimp)
|
added = plannedsessions.add_team_session(self.team,self.ps_trimp)
|
||||||
|
self.ps_trimp.save()
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
try:
|
try:
|
||||||
@@ -1359,6 +1453,53 @@ class PlannedSessionsView(TestCase):
|
|||||||
# expected_url=expected_url,
|
# expected_url=expected_url,
|
||||||
# status_code=302,target_status_code=200)
|
# 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):
|
def test_multiclone_view(self):
|
||||||
login = self.c.login(username=self.u.username, password=self.password)
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -1441,6 +1582,7 @@ class PlannedSessionsView(TestCase):
|
|||||||
|
|
||||||
form_data = {
|
form_data = {
|
||||||
'team':[self.team.id],
|
'team':[self.team.id],
|
||||||
|
'members': [self.r.id],
|
||||||
'startdate': self.w1.startdatetime.date(),
|
'startdate': self.w1.startdatetime.date(),
|
||||||
'enddate': (self.w1.startdatetime+datetime.timedelta(days=5)).date(),
|
'enddate': (self.w1.startdatetime+datetime.timedelta(days=5)).date(),
|
||||||
'preferreddate': self.w1.startdatetime.date(),
|
'preferreddate': self.w1.startdatetime.date(),
|
||||||
@@ -1466,6 +1608,21 @@ class PlannedSessionsView(TestCase):
|
|||||||
response = self.c.post(url,form_data,follow=True)
|
response = self.c.post(url,form_data,follow=True)
|
||||||
self.assertEqual(response.status_code,200)
|
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):
|
def test_teamedit_view(self):
|
||||||
login = self.c.login(username=self.u.username, password=self.password)
|
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)
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
|
|
||||||
url = '/rowers/sessions/{id}/edit/'.format(
|
url = reverse('plannedsession_edit_view',kwargs={'id':self.ps_time.id})
|
||||||
id=self.ps_time.id,
|
|
||||||
)
|
|
||||||
|
|
||||||
response = self.c.get(url)
|
response = self.c.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
@@ -1658,7 +1813,7 @@ class PlannedSessionsView(TestCase):
|
|||||||
|
|
||||||
self.assertTrue(form.is_valid())
|
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)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -761,16 +761,20 @@ urlpatterns = [
|
|||||||
name='plannedsession_edit_view'),
|
name='plannedsession_edit_view'),
|
||||||
re_path(r'^sessions/(?P<id>\d+)/templateedit/',views.plannedsession_templateedit_view,
|
re_path(r'^sessions/(?P<id>\d+)/templateedit/',views.plannedsession_templateedit_view,
|
||||||
name='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/$',
|
re_path(r'^sessions/(?P<id>\d+)/compare/$',
|
||||||
views.plannedsession_compare_view,
|
views.plannedsession_compare_view,
|
||||||
name='plannedsession_compare_view'),
|
name='plannedsession_compare_view'),
|
||||||
re_path(r'^sessions/(?P<id>\d+)/compare/user/(?P<userid>\d+)/$',
|
re_path(r'^sessions/(?P<id>\d+)/compare/user/(?P<userid>\d+)/$',
|
||||||
views.plannedsession_compare_view,
|
views.plannedsession_compare_view,
|
||||||
name='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+)/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),
|
name='plannedsession_edit_view'),
|
||||||
re_path(r'^sessions/(?P<id>\d+)/clone/team/$',views.plannedsession_teamclone_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<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)/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),
|
re_path(r'^sessions/(?P<psid>\d+)/detach/(?P<id>\b[0-9A-Fa-f]+\b)/$',views.plannedsession_detach_view),
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ def plannedsession_comment_view(request,id=0,userid=0):
|
|||||||
comment = cd['comment']
|
comment = cd['comment']
|
||||||
comment = bleach.clean(comment)
|
comment = bleach.clean(comment)
|
||||||
try:
|
try:
|
||||||
if isinstance(comment,unicode):
|
if isinstance(comment,unicode): # pragma: no cover
|
||||||
comment = comment.encode('utf8')
|
comment = comment.encode('utf8')
|
||||||
elif isinstance(comment, str):
|
elif isinstance(comment, str): # pragma: no cover
|
||||||
comment = comment.decode('utf8')
|
comment = comment.decode('utf8')
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
@@ -45,13 +45,13 @@ def plannedsession_comment_view(request,id=0,userid=0):
|
|||||||
comment = comment,
|
comment = comment,
|
||||||
url = url,
|
url = url,
|
||||||
)
|
)
|
||||||
if request.user != manager:
|
if request.user != manager: # pragma: no cover
|
||||||
a_messages.info(r.user,message.encode('ascii','ignore'))
|
a_messages.info(r.user,message.encode('ascii','ignore'))
|
||||||
|
|
||||||
sessiontype = 'training session'
|
sessiontype = 'training session'
|
||||||
if ps.sessiontype == 'race':
|
if ps.sessiontype == 'race': # pragma: no cover
|
||||||
sessiontype = 'online virtual race'
|
sessiontype = 'online virtual race'
|
||||||
elif ps.sessiontype == 'indoorrace':
|
elif ps.sessiontype == 'indoorrace': # pragma: no cover
|
||||||
sessiontype = 'indoor online virtual race'
|
sessiontype = 'indoor online virtual race'
|
||||||
|
|
||||||
res = myqueue(queuehigh,
|
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}
|
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(
|
registrations = VirtualRaceResult.objects.filter(
|
||||||
race__id=ps.id,
|
race__id=ps.id,
|
||||||
emailnotifications=True)
|
emailnotifications=True)
|
||||||
ids = [rg.userid for rg in registrations]
|
ids = [rg.userid for rg in registrations]
|
||||||
rwrs = Rower.objects.filter(id__in= ids)
|
rwrs = Rower.objects.filter(id__in= ids)
|
||||||
rowers = {u.user for u in rwrs}
|
rowers = {u.user for u in rwrs}
|
||||||
elif ps.sessiontype=='indoorrace':
|
elif ps.sessiontype=='indoorrace': # pragma: no cover
|
||||||
registrations = IndoorVirtualRaceResult.objects.filter(
|
registrations = IndoorVirtualRaceResult.objects.filter(
|
||||||
race__id=ps.id,
|
race__id=ps.id,
|
||||||
emailnotifications=True)
|
emailnotifications=True)
|
||||||
@@ -87,9 +87,9 @@ def plannedsession_comment_view(request,id=0,userid=0):
|
|||||||
for u in commenters:
|
for u in commenters:
|
||||||
try:
|
try:
|
||||||
a_messages.info(u,message)
|
a_messages.info(u,message)
|
||||||
except ValueError:
|
except ValueError: # pragma: no cover
|
||||||
pass
|
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)
|
ocr = Rower.objects.get(user=u)
|
||||||
res = myqueue(queue,
|
res = myqueue(queue,
|
||||||
handle_sendemailnewresponse,
|
handle_sendemailnewresponse,
|
||||||
@@ -106,7 +106,7 @@ def plannedsession_comment_view(request,id=0,userid=0):
|
|||||||
sessiontype = sessiontype,
|
sessiontype = sessiontype,
|
||||||
commentlink = url
|
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)
|
followers = VirtualRaceFollower.objects.filter(race__id=ps.id)
|
||||||
for follower in followers:
|
for follower in followers:
|
||||||
othername = ''
|
othername = ''
|
||||||
@@ -133,7 +133,7 @@ def plannedsession_comment_view(request,id=0,userid=0):
|
|||||||
|
|
||||||
rower = getrower(request.user)
|
rower = getrower(request.user)
|
||||||
|
|
||||||
if ps.sessiontype in ['race','indoorrace']:
|
if ps.sessiontype in ['race','indoorrace']: # pragma: no cover
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
'url':reverse('virtualevents_view'),
|
'url':reverse('virtualevents_view'),
|
||||||
@@ -209,12 +209,14 @@ def plannedsession_message_view(request,id=0,userid=0):
|
|||||||
message,
|
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)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
if ps.sessiontype in ['race','indoorrace']:
|
if ps.sessiontype in ['race','indoorrace']: # pragma: no cover
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
'url':reverse('virtualevents_view'),
|
'url':reverse('virtualevents_view'),
|
||||||
@@ -274,7 +276,7 @@ def plannedsession_multiclone_view(
|
|||||||
startdate,enddate = get_dates_timeperiod(request)
|
startdate,enddate = get_dates_timeperiod(request)
|
||||||
teamid = get_team(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)
|
dateform = DateRangeForm(request.POST)
|
||||||
if dateform.is_valid():
|
if dateform.is_valid():
|
||||||
startdate = dateform.cleaned_data['startdate']
|
startdate = dateform.cleaned_data['startdate']
|
||||||
@@ -337,7 +339,7 @@ def plannedsession_multiclone_view(
|
|||||||
"startdate","preferreddate","enddate").exclude(
|
"startdate","preferreddate","enddate").exclude(
|
||||||
sessiontype='race')
|
sessiontype='race')
|
||||||
|
|
||||||
if teamid:
|
if teamid: # pragma: no cover
|
||||||
sps = sps.filter(team__in=[teamid])
|
sps = sps.filter(team__in=[teamid])
|
||||||
try:
|
try:
|
||||||
team = Team.objects.get(id=teamid)
|
team = Team.objects.get(id=teamid)
|
||||||
@@ -349,7 +351,7 @@ def plannedsession_multiclone_view(
|
|||||||
team = None
|
team = None
|
||||||
|
|
||||||
query = request.GET.get('q')
|
query = request.GET.get('q')
|
||||||
if query:
|
if query: # pragma: no cover
|
||||||
query_list = query.split()
|
query_list = query.split()
|
||||||
sps = sps.filter(
|
sps = sps.filter(
|
||||||
reduce(operator.and_,
|
reduce(operator.and_,
|
||||||
@@ -390,7 +392,7 @@ def plannedsession_multiclone_view(
|
|||||||
|
|
||||||
if Team.objects.filter(manager=request.user).count()>=1:
|
if Team.objects.filter(manager=request.user).count()>=1:
|
||||||
teamform = RowerTeamForm(request.user)
|
teamform = RowerTeamForm(request.user)
|
||||||
if teamid:
|
if teamid: # pragma: no cover
|
||||||
teamform = RowerTeamForm(request.user,initial={'team':teamid})
|
teamform = RowerTeamForm(request.user,initial={'team':teamid})
|
||||||
else:
|
else:
|
||||||
teamform = None
|
teamform = None
|
||||||
@@ -422,7 +424,7 @@ def template_share_view(request,id=0,userid=0):
|
|||||||
if ps.can_be_shared:
|
if ps.can_be_shared:
|
||||||
ps.is_public = True
|
ps.is_public = True
|
||||||
ps.save()
|
ps.save()
|
||||||
else:
|
else: # pragma: no cover
|
||||||
messages.error(request,'This planned session comes from a third party and cannot be shared')
|
messages.error(request,'This planned session comes from a third party and cannot be shared')
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse(template_library_view))
|
return HttpResponseRedirect(reverse(template_library_view))
|
||||||
@@ -471,7 +473,7 @@ def template_library_view(request,userid=0):
|
|||||||
alltags = uniqify(alltags)
|
alltags = uniqify(alltags)
|
||||||
|
|
||||||
tag = request.GET.get('tag')
|
tag = request.GET.get('tag')
|
||||||
if tag:
|
if tag: # pragma: no cover
|
||||||
tags = [tag]
|
tags = [tag]
|
||||||
templates = templates.filter(tags__name__in=tags).distinct()
|
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={
|
url = reverse('plannedsession_edit_view',kwargs={
|
||||||
'id':ps.id,
|
'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 = reverse('plannedsession_create_view',kwargs={'userid':userid})
|
||||||
|
|
||||||
url = url+'?when='+timeperiod
|
url = url+'?when='+timeperiod
|
||||||
@@ -551,7 +553,7 @@ def plannedsession_create_view(request,
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if 'fstartdate' in request.session:
|
if 'fstartdate' in request.session: # pragma: no cover
|
||||||
try:
|
try:
|
||||||
fstartdate = arrow.get(request.session['fstartdate']).date()
|
fstartdate = arrow.get(request.session['fstartdate']).date()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -586,7 +588,7 @@ def plannedsession_create_view(request,
|
|||||||
preferreddate = startdate.date()
|
preferreddate = startdate.date()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
preferreddate = startdate
|
preferreddate = startdate
|
||||||
if preferreddate < timezone.now().date():
|
if preferreddate < timezone.now().date(): # pragma: no cover
|
||||||
preferreddate = timezone.now().date()
|
preferreddate = timezone.now().date()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -594,7 +596,7 @@ def plannedsession_create_view(request,
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if preferreddate > enddate:
|
if preferreddate > enddate: # pragma: no cover
|
||||||
preferreddate = enddate
|
preferreddate = enddate
|
||||||
|
|
||||||
forminitial = {
|
forminitial = {
|
||||||
@@ -626,7 +628,7 @@ def plannedsession_create_view(request,
|
|||||||
sessiontemplates = sessiontemplates.order_by("name")
|
sessiontemplates = sessiontemplates.order_by("name")
|
||||||
|
|
||||||
alltags = []
|
alltags = []
|
||||||
for t in sessiontemplates:
|
for t in sessiontemplates: # pragma: no cover
|
||||||
tags = t.tags.all()
|
tags = t.tags.all()
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
alltags.append(tag)
|
alltags.append(tag)
|
||||||
@@ -634,7 +636,7 @@ def plannedsession_create_view(request,
|
|||||||
alltags = uniqify(alltags)
|
alltags = uniqify(alltags)
|
||||||
|
|
||||||
tag = request.GET.get('tag')
|
tag = request.GET.get('tag')
|
||||||
if tag:
|
if tag: # pragma: no cover
|
||||||
tags = [tag]
|
tags = [tag]
|
||||||
sessiontemplates = sessiontemplates.filter(tags__name__in=tags).distinct()
|
sessiontemplates = sessiontemplates.filter(tags__name__in=tags).distinct()
|
||||||
|
|
||||||
@@ -709,11 +711,11 @@ def plannedsession_createtemplate_view(request,
|
|||||||
|
|
||||||
url = reverse('template_library_view')
|
url = reverse('template_library_view')
|
||||||
|
|
||||||
if '_continue' in request.POST:
|
if '_continue' in request.POST: # pragma: no cover
|
||||||
url = reverse('plannedsession_templateedit_view',kwargs={
|
url = reverse('plannedsession_templateedit_view',kwargs={
|
||||||
'id':ps.id,
|
'id':ps.id,
|
||||||
})
|
})
|
||||||
elif '_addanother' in request.POST:
|
elif '_addanother' in request.POST: # pragma: no cover
|
||||||
url = reverse('plannedsession_createtemplate_view')
|
url = reverse('plannedsession_createtemplate_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
@@ -733,7 +735,7 @@ def plannedsession_createtemplate_view(request,
|
|||||||
sessiontemplates = sessiontemplates.order_by("name")
|
sessiontemplates = sessiontemplates.order_by("name")
|
||||||
|
|
||||||
alltags = []
|
alltags = []
|
||||||
for t in sessiontemplates:
|
for t in sessiontemplates: # pragma: no cover
|
||||||
tags = t.tags.all()
|
tags = t.tags.all()
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
alltags.append(tag)
|
alltags.append(tag)
|
||||||
@@ -806,7 +808,7 @@ def plannedsession_multicreate_view(request,
|
|||||||
).order_by("startdate","preferreddate","enddate").exclude(
|
).order_by("startdate","preferreddate","enddate").exclude(
|
||||||
sessiontype='race')
|
sessiontype='race')
|
||||||
|
|
||||||
if teamid:
|
if teamid: # pragma: no cover
|
||||||
qset = qset.filter(team__in=[teamid])
|
qset = qset.filter(team__in=[teamid])
|
||||||
try:
|
try:
|
||||||
team = Team.objects.get(id=teamid)
|
team = Team.objects.get(id=teamid)
|
||||||
@@ -844,10 +846,10 @@ def plannedsession_multicreate_view(request,
|
|||||||
for ps in instances:
|
for ps in instances:
|
||||||
ps.save()
|
ps.save()
|
||||||
add_rower_session(r,ps)
|
add_rower_session(r,ps)
|
||||||
if team:
|
if team: # pragma: no cover
|
||||||
add_team_session(team,ps)
|
add_team_session(team,ps)
|
||||||
messages.info(request,"Saved changes for Planned Session "+str(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))
|
messages.info(request,"Deleted Planned Session "+str(obj))
|
||||||
obj.delete()
|
obj.delete()
|
||||||
|
|
||||||
@@ -862,7 +864,7 @@ def plannedsession_multicreate_view(request,
|
|||||||
enddatestring = enddate.strftime('%Y-%m-%d')
|
enddatestring = enddate.strftime('%Y-%m-%d')
|
||||||
url += '?when='+startdatestring+'/'+enddatestring
|
url += '?when='+startdatestring+'/'+enddatestring
|
||||||
|
|
||||||
if team:
|
if team: # pragma: no cover
|
||||||
url += '&team={teamid}'.format(teamid=team.id)
|
url += '&team={teamid}'.format(teamid=team.id)
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
@@ -888,7 +890,7 @@ def plannedsession_multicreate_view(request,
|
|||||||
|
|
||||||
if Team.objects.filter(manager=request.user).count()>=1:
|
if Team.objects.filter(manager=request.user).count()>=1:
|
||||||
teamform = RowerTeamForm(request.user)
|
teamform = RowerTeamForm(request.user)
|
||||||
if teamid:
|
if teamid: # pragma: no cover
|
||||||
teamform = RowerTeamForm(request.user,initial={'team':teamid})
|
teamform = RowerTeamForm(request.user,initial={'team':teamid})
|
||||||
else:
|
else:
|
||||||
teamform = None
|
teamform = None
|
||||||
@@ -975,11 +977,11 @@ def plannedsession_teamcreate_view(request,
|
|||||||
'userid':userid,
|
'userid':userid,
|
||||||
})
|
})
|
||||||
|
|
||||||
if '_continue' in request.POST:
|
if '_continue' in request.POST: # pragma: no cover
|
||||||
url = reverse('plannedsession_edit_view',kwargs={
|
url = reverse('plannedsession_edit_view',kwargs={
|
||||||
'id':ps.id,
|
'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 = reverse('plannedsession_teamcreate_view',kwargs={'userid':userid})
|
||||||
|
|
||||||
url = url+'?when='+timeperiod
|
url = url+'?when='+timeperiod
|
||||||
@@ -995,7 +997,7 @@ def plannedsession_teamcreate_view(request,
|
|||||||
#next = request.GET.get('next', url)
|
#next = request.GET.get('next', url)
|
||||||
|
|
||||||
#return HttpResponseRedirect(next)
|
#return HttpResponseRedirect(next)
|
||||||
else:
|
else: # pragma: no cover
|
||||||
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
@@ -1035,7 +1037,7 @@ def plannedsession_teamcreate_view(request,
|
|||||||
'preferreddate':startdate,
|
'preferreddate':startdate,
|
||||||
}
|
}
|
||||||
|
|
||||||
if 'teams' in request.session:
|
if 'teams' in request.session: # pragma: no cover
|
||||||
teams = request.session['teams']
|
teams = request.session['teams']
|
||||||
theteams = Team.objects.filter(id__in=teams)
|
theteams = Team.objects.filter(id__in=teams)
|
||||||
initialteam = {
|
initialteam = {
|
||||||
@@ -1113,7 +1115,7 @@ def plannedsession_teamedit_view(request,
|
|||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rowers = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError: # pragma: no cover
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
|
|
||||||
sps = []
|
sps = []
|
||||||
@@ -1138,11 +1140,10 @@ def plannedsession_teamedit_view(request,
|
|||||||
)
|
)
|
||||||
sessionrowerform = PlannedSessionTeamMemberForm(ps,request.POST)
|
sessionrowerform = PlannedSessionTeamMemberForm(ps,request.POST)
|
||||||
|
|
||||||
|
|
||||||
if sessioncreateform.is_valid():
|
if sessioncreateform.is_valid():
|
||||||
cd = sessioncreateform.cleaned_data
|
cd = sessioncreateform.cleaned_data
|
||||||
|
|
||||||
if cd['sessionunit'] == 'min':
|
if cd['sessionunit'] == 'min': # pragma: no cover
|
||||||
cd['sessionmode'] = 'time'
|
cd['sessionmode'] = 'time'
|
||||||
elif cd['sessionunit'] in ['km','m']:
|
elif cd['sessionunit'] in ['km','m']:
|
||||||
cd['sessionmode'] = 'distance'
|
cd['sessionmode'] = 'distance'
|
||||||
@@ -1152,7 +1153,7 @@ def plannedsession_teamedit_view(request,
|
|||||||
|
|
||||||
if res:
|
if res:
|
||||||
messages.info(request,message)
|
messages.info(request,message)
|
||||||
else:
|
else: # pragma: no cover
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
|
|
||||||
|
|
||||||
@@ -1166,14 +1167,15 @@ def plannedsession_teamedit_view(request,
|
|||||||
rs = Rower.objects.filter(team__in=[team])
|
rs = Rower.objects.filter(team__in=[team])
|
||||||
for r in rs:
|
for r in rs:
|
||||||
add_rower_session(r,ps)
|
add_rower_session(r,ps)
|
||||||
else:
|
else: # pragma: no cover
|
||||||
remove_team_session(team,ps)
|
remove_team_session(team,ps)
|
||||||
else:
|
else: # pragma: no cover
|
||||||
selectedteams = []
|
selectedteams = []
|
||||||
for team in teams:
|
for team in teams:
|
||||||
remove_team_session(team,ps)
|
remove_team_session(team,ps)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if sessionrowerform.is_valid():
|
if sessionrowerform.is_valid():
|
||||||
cd = sessionrowerform.cleaned_data
|
cd = sessionrowerform.cleaned_data
|
||||||
selectedrowers = cd['members']
|
selectedrowers = cd['members']
|
||||||
@@ -1279,7 +1281,7 @@ def plannedsessions_coach_view(request,
|
|||||||
|
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
|
|
||||||
if teamid != 0:
|
if teamid != 0:# pragma: no cover
|
||||||
try:
|
try:
|
||||||
theteam = Team.objects.get(id=teamid)
|
theteam = Team.objects.get(id=teamid)
|
||||||
except Team.DoesNotExist:
|
except Team.DoesNotExist:
|
||||||
@@ -1297,7 +1299,7 @@ def plannedsessions_coach_view(request,
|
|||||||
|
|
||||||
if therower.rowerplan != 'freecoach':
|
if therower.rowerplan != 'freecoach':
|
||||||
rowers = [therower]
|
rowers = [therower]
|
||||||
else:
|
else:# pragma: no cover
|
||||||
rowers = []
|
rowers = []
|
||||||
|
|
||||||
for ps in sps:
|
for ps in sps:
|
||||||
@@ -1356,7 +1358,7 @@ def plannedsessions_coach_view(request,
|
|||||||
})
|
})
|
||||||
|
|
||||||
ttemplate = 'plannedsessionscoach.html'
|
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'
|
ttemplate = 'plannedsessionscoach2.html'
|
||||||
|
|
||||||
|
|
||||||
@@ -1386,16 +1388,16 @@ def plannedsessions_view(request,
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
r = getrequestplanrower(request,userid=userid)
|
r = getrequestplanrower(request,userid=userid)
|
||||||
except PermissionDenied:
|
except PermissionDenied: # pragma: no cover
|
||||||
r = request.user.rower
|
r = request.user.rower
|
||||||
|
|
||||||
if startdatestring:
|
if startdatestring: # pragma: no cover
|
||||||
try:
|
try:
|
||||||
startdate = iso8601.parse_date(startdatestring)
|
startdate = iso8601.parse_date(startdatestring)
|
||||||
except ParseError:
|
except ParseError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if enddatestring:
|
if enddatestring: # pragma: no cover
|
||||||
try:
|
try:
|
||||||
enddate = iso8601.parse_date(enddatestring)
|
enddate = iso8601.parse_date(enddatestring)
|
||||||
except ParseError:
|
except ParseError:
|
||||||
@@ -1454,7 +1456,7 @@ def plannedsessions_view(request,
|
|||||||
tss = hrtss
|
tss = hrtss
|
||||||
totals['distance'] += w.distance
|
totals['distance'] += w.distance
|
||||||
totals['time'] += timefield_to_seconds_duration(w.duration)
|
totals['time'] += timefield_to_seconds_duration(w.duration)
|
||||||
if w.plannedsession:
|
if w.plannedsession: # pragma: no cover
|
||||||
if w.plannedsession.sessionmode == 'distance':
|
if w.plannedsession.sessionmode == 'distance':
|
||||||
totals['actualdistance'] += w.distance
|
totals['actualdistance'] += w.distance
|
||||||
elif w.plannedsession.sessionmode == 'time':
|
elif w.plannedsession.sessionmode == 'time':
|
||||||
@@ -1464,7 +1466,7 @@ def plannedsessions_view(request,
|
|||||||
elif w.plannedsession.sessionmode == 'TRIMP':
|
elif w.plannedsession.sessionmode == 'TRIMP':
|
||||||
totals['actualtrimp'] += thetrimp
|
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,
|
messages.error(request,
|
||||||
"You must purchase Coach or Self-coach plans or be part of a team to get planned sessions")
|
"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
|
totals['planneddistance'] += ps.sessionvalue
|
||||||
elif ps.sessionmode == 'time':
|
elif ps.sessionmode == 'time':
|
||||||
totals['plannedtime'] += ps.sessionvalue
|
totals['plannedtime'] += ps.sessionvalue
|
||||||
elif ps.sessionmode == 'rScore':
|
elif ps.sessionmode == 'rScore': # pragma: no cover
|
||||||
totals['plannedrscore'] += ps.sessionvalue
|
totals['plannedrscore'] += ps.sessionvalue
|
||||||
elif ps.sessionmode == 'TRIMP':
|
elif ps.sessionmode == 'TRIMP': # pragma: no cover
|
||||||
totals['plannedtrimp'] += ps.sessionvalue
|
totals['plannedtrimp'] += ps.sessionvalue
|
||||||
|
|
||||||
totals['time'] = int(totals['time']/60.)
|
totals['time'] = int(totals['time']/60.)
|
||||||
@@ -1572,7 +1574,7 @@ def plannedsessions_manage_view(request,userid=0,
|
|||||||
initialsession=0):
|
initialsession=0):
|
||||||
|
|
||||||
is_ajax = False
|
is_ajax = False
|
||||||
if request.is_ajax():
|
if request.is_ajax(): # pragma: no cover
|
||||||
is_ajax = True
|
is_ajax = True
|
||||||
|
|
||||||
r = getrequestrower(request,userid=userid)
|
r = getrequestrower(request,userid=userid)
|
||||||
@@ -1614,7 +1616,7 @@ def plannedsessions_manage_view(request,userid=0,
|
|||||||
|
|
||||||
linkedworkouts = []
|
linkedworkouts = []
|
||||||
for w in ws:
|
for w in ws:
|
||||||
if w.plannedsession is not None:
|
if w.plannedsession is not None: # pragma: no cover
|
||||||
linkedworkouts.append(w.id)
|
linkedworkouts.append(w.id)
|
||||||
|
|
||||||
plannedsessionstuple = []
|
plannedsessionstuple = []
|
||||||
@@ -1672,7 +1674,7 @@ def plannedsessions_manage_view(request,userid=0,
|
|||||||
w_form = WorkoutSessionSelectForm(workoutdata=workoutdata)
|
w_form = WorkoutSessionSelectForm(workoutdata=workoutdata)
|
||||||
|
|
||||||
|
|
||||||
if is_ajax:
|
if is_ajax: # pragma: no cover
|
||||||
ajax_workouts = []
|
ajax_workouts = []
|
||||||
for id,name in workoutdata['choices']:
|
for id,name in workoutdata['choices']:
|
||||||
ininitial = id in initialworkouts
|
ininitial = id in initialworkouts
|
||||||
@@ -1746,7 +1748,7 @@ def plannedsession_clone_view(request,id=0,userid=0):
|
|||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rowers = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError: # pragma: no cover
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
|
|
||||||
ps = get_object_or_404(PlannedSession,pk=id)
|
ps = get_object_or_404(PlannedSession,pk=id)
|
||||||
@@ -1773,7 +1775,7 @@ def plannedsession_clone_view(request,id=0,userid=0):
|
|||||||
if rowers:
|
if rowers:
|
||||||
for rower in rowers:
|
for rower in rowers:
|
||||||
add_rower_session(rower,ps)
|
add_rower_session(rower,ps)
|
||||||
else:
|
else: # pragma: no cover
|
||||||
add_rower_session(r,ps)
|
add_rower_session(r,ps)
|
||||||
for team in teams:
|
for team in teams:
|
||||||
add_team_session(team,ps)
|
add_team_session(team,ps)
|
||||||
@@ -2010,7 +2012,7 @@ def plannedsession_edit_view(request,id=0,userid=0):
|
|||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rowers = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError: # pragma: no cover
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
|
|
||||||
ps = get_object_or_404(PlannedSession,pk=id)
|
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)
|
r = getrequestplanrower(request,userid=userid)
|
||||||
|
|
||||||
ps = get_object_or_404(PlannedSession,pk=id)
|
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
|
jsons = ps.steps
|
||||||
else:
|
else:
|
||||||
jsons = {}
|
jsons = {}
|
||||||
|
|
||||||
|
|
||||||
try:
|
try: # pragma: no cover
|
||||||
r = VirtualRace.objects.get(id=ps.id)
|
r = VirtualRace.objects.get(id=ps.id)
|
||||||
url = reverse('virtualevent_view',
|
url = reverse('virtualevent_view',
|
||||||
kwargs={'id':ps.id}
|
kwargs={'id':ps.id}
|
||||||
@@ -2162,7 +2164,7 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
except VirtualRace.DoesNotExist:
|
except VirtualRace.DoesNotExist:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if ps.course:
|
if ps.course: # pragma: no cover
|
||||||
coursescript,coursediv = course_map(ps.course)
|
coursescript,coursediv = course_map(ps.course)
|
||||||
else:
|
else:
|
||||||
coursescript = ''
|
coursescript = ''
|
||||||
@@ -2208,7 +2210,7 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
'sessionresult':0,
|
'sessionresult':0,
|
||||||
'workoutid':w.id,
|
'workoutid':w.id,
|
||||||
}
|
}
|
||||||
if ps.sessiontype == 'coursetest':
|
if ps.sessiontype == 'coursetest': # pragma: no cover
|
||||||
vs = CourseTestResult.objects.filter(plannedsession=ps,
|
vs = CourseTestResult.objects.filter(plannedsession=ps,
|
||||||
workoutid=w.id)
|
workoutid=w.id)
|
||||||
|
|
||||||
@@ -2257,7 +2259,7 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
if ps.sessiontype == 'coursetest':
|
if ps.sessiontype == 'coursetest':
|
||||||
ranking = sorted(ranking, key=lambda k: k['time'])
|
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)
|
vs = CourseTestResult.objects.filter(plannedsession=ps)
|
||||||
|
|
||||||
if vs:
|
if vs:
|
||||||
@@ -2293,7 +2295,7 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
ranking = sorted(ranking, key=lambda k: k['time'])
|
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)
|
vs = CourseTestResult.objects.filter(plannedsession=ps)
|
||||||
|
|
||||||
if vs:
|
if vs:
|
||||||
@@ -2363,7 +2365,7 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
comments = PlannedSessionComment.objects.filter(plannedsession=ps).order_by("created")
|
comments = PlannedSessionComment.objects.filter(plannedsession=ps).order_by("created")
|
||||||
|
|
||||||
steps = ''
|
steps = ''
|
||||||
if ps.steps:
|
if ps.steps: # pragma: no cover
|
||||||
d = ps.steps
|
d = ps.steps
|
||||||
steps = ps_dict_get_description_html(d,short=False)
|
steps = ps_dict_get_description_html(d,short=False)
|
||||||
|
|
||||||
@@ -2407,7 +2409,7 @@ class PlannedSessionDelete(DeleteView):
|
|||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(PlannedSessionDelete,self).get_context_data(**kwargs)
|
context = super(PlannedSessionDelete,self).get_context_data(**kwargs)
|
||||||
|
|
||||||
if 'userid' in kwargs:
|
if 'userid' in kwargs: # pragma: no cover
|
||||||
userid = kwargs['userid']
|
userid = kwargs['userid']
|
||||||
else:
|
else:
|
||||||
userid = 0
|
userid = 0
|
||||||
@@ -2455,7 +2457,7 @@ class PlannedSessionDelete(DeleteView):
|
|||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
ws = Workout.objects.filter(plannedsession=self.object)
|
ws = Workout.objects.filter(plannedsession=self.object)
|
||||||
for w in ws:
|
for w in ws: # pragma: no cover
|
||||||
w.plannedsession = None
|
w.plannedsession = None
|
||||||
w.save()
|
w.save()
|
||||||
|
|
||||||
@@ -2468,7 +2470,7 @@ class PlannedSessionDelete(DeleteView):
|
|||||||
|
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super(PlannedSessionDelete, self).get_object(*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')
|
raise PermissionDenied('You are not allowed to delete this planned session')
|
||||||
|
|
||||||
return obj
|
return obj
|
||||||
|
|||||||
Reference in New Issue
Block a user