force curve with workstrokesonly
This commit is contained in:
@@ -37,6 +37,8 @@ from minimocktest import MockTestCase
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
import rowers.c2stuff as c2stuff
|
import rowers.c2stuff as c2stuff
|
||||||
|
|
||||||
|
from django.core.urlresolvers import reverse, reverse_lazy
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
|||||||
52
rowers/tests/test_aworkouts.py
Normal file
52
rowers/tests/test_aworkouts.py
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
from statements import *
|
||||||
|
|
||||||
|
nu = datetime.datetime.now()
|
||||||
|
|
||||||
|
class WaterWorkoutViewTest(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.u = UserFactory()
|
||||||
|
|
||||||
|
self.r = Rower.objects.create(user=self.u,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=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()
|
||||||
|
|
||||||
|
result = get_random_file(filename='rowers/tests/testdata/onwater.csv')
|
||||||
|
|
||||||
|
self.wwater = WorkoutFactory(user=self.r,
|
||||||
|
csvfilename=result['filename'],
|
||||||
|
starttime=result['starttime'],
|
||||||
|
startdatetime=result['startdatetime'],
|
||||||
|
duration=result['duration'],
|
||||||
|
distance=result['totaldist']
|
||||||
|
)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@patch('rowers.dataprep.create_engine')
|
||||||
|
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||||
|
def test_forcecurve(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||||
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
|
self.assertTrue(login)
|
||||||
|
|
||||||
|
url = reverse('workout_forcecurve_view',kwargs={'id':self.wwater.id})
|
||||||
|
|
||||||
|
response = self.c.get(url)
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
form_data = {
|
||||||
|
'workstrokesonly': True
|
||||||
|
}
|
||||||
|
|
||||||
|
response = self.c.post(url,form_data)
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
98
rowers/tests/testdata/onwater.csv
vendored
Normal file
98
rowers/tests/testdata/onwater.csv
vendored
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
,index, lapIdx,TimeStamp (sec), Horizontal (meters),GPS Split,GPS Speed, Cadence (stokes/min), HRCur (bpm),Stroke Count,cum_dist, Stroke500mPace (sec/500m), ElapsedTime (sec), Power (watts), DriveLength (meters), StrokeDistance (meters), DriveTime (ms), DragFactor, StrokeRecoveryTime (ms), AverageDriveForce (lbs), AverageBoatSpeed (m/s), PeakDriveForce (lbs), AverageDriveForce (N), PeakDriveForce (N), WorkoutState, Stroke Number,originalvelo,hr_ut2,hr_ut1,hr_at,hr_tr,hr_an,hr_max,lim_ut2,lim_ut1,lim_at,lim_tr,lim_an,lim_max,pw_ut2,pw_ut1,pw_at,pw_tr,pw_an,pw_max,limpw_ut2,limpw_ut1,limpw_at,limpw_tr,limpw_an
|
||||||
|
0,0,0.0,1469705701.0,3.2,0.0,0.74,35.5,112,1,3.2,695.931477516,0.0,0,0,0,0,0,0,0,0.74,0,0.0,0.0,4,0,0.74,0.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
1,1,0.0,1469705702.6,8.6,0.0,2.07,38.5,113,2,8.6,228.8,1.59999990463,0,0,0,0,0,0,0,2.07,0,0.0,0.0,4,1,2.07,113.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
2,2,0.0,1469705704.5,15.1,0.0,3.36,38.5,115,3,15.1,153.336955279,3.5,0,0,0,0,0,0,0,3.36,0,0.0,0.0,4,3,3.35999999999,115.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
3,3,0.0,1469705705.6,21.4,0.0,4.09,39.0,115,4,21.4,124.977058407,4.59999990463,0,0,0,0,0,0,0,4.09,0,0.0,0.0,4,3,4.09,115.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
4,4,0.0,1469705707.5,28.8,0.0,4.43,38.5,118,5,28.8,112.083019815,6.5,0,0,0,0,0,0,0,4.43,0,0.0,0.0,4,5,4.42999999999,118.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
5,5,0.0,1469705708.8,36.2,0.0,4.64,37.5,125,6,36.2,106.442632632,7.79999995232,0,0,0,0,0,0,0,4.64,0,0.0,0.0,4,5,4.63999999999,125.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
6,6,0.0,1469705710.5,43.1,0.0,4.66,36.0,130,7,43.1,104.628021775,9.5,0,0,0,0,0,0,0,4.66,0,0.0,0.0,4,6,4.66,130.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
7,7,0.0,1469705712.2,52.0,0.0,4.76,34.0,135,8,52.0,106.01911804,11.2000000477,0,0,0,0,0,0,0,4.76,0,0.0,0.0,4,7,4.75999999999,135.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
8,8,0.0,1469705714.0,60.1,0.0,4.71,34.5,142,9,60.1,107.565165936,13.0,0,0,0,0,0,0,0,4.71,0,0.0,0.0,4,8,4.70999999998,142.0,0.0,0.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
9,9,0.0,1469705715.8,68.1,0.0,4.53,33.5,148,10,68.1,108.679681206,14.7999999523,0,0,0,0,0,0,0,4.53,0,0.0,0.0,4,9,4.53000000001,0.0,0.0,148.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
10,10,0.0,1469705717.6,76.3,0.0,4.44,32.5,154,11,76.3,109.466700689,16.5999999046,0,0,0,0,0,0,0,4.44,0,0.0,0.0,4,10,4.43999999998,0.0,0.0,154.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
11,11,0.0,1469705719.5,83.8,0.0,4.44,33.0,156,12,83.8,109.893487851,18.5,0,0,0,0,0,0,0,4.44,0,0.0,0.0,4,11,4.43999999998,0.0,0.0,156.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
12,12,0.0,1469705721.2,92.5,0.0,4.62,33.5,159,13,92.5,110.627456239,20.2000000477,0,0,0,0,0,0,0,4.62,0,0.0,0.0,4,12,4.62,0.0,0.0,159.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
13,13,0.0,1469705723.0,100.8,0.0,4.64,33.5,163,14,100.8,110.362782274,22.0,0,0,0,0,0,0,0,4.64,0,0.0,0.0,4,13,4.63999999999,0.0,0.0,0.0,163.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
14,14,0.0,1469705724.8,109.1,0.0,4.59,32.0,166,15,109.1,109.351182981,23.7999999523,0,0,0,0,0,0,0,4.59,0,0.0,0.0,4,14,4.58999999998,0.0,0.0,0.0,166.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
15,15,0.0,1469705726.8,118.1,0.0,4.52,32.5,168,16,118.1,108.636197885,25.7999999523,0,0,0,0,0,0,0,4.52,0,0.0,0.0,4,15,4.51999999998,0.0,0.0,0.0,0.0,168.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
16,16,0.0,1469705728.5,125.1,0.0,4.5,33.0,169,17,125.1,108.494979894,27.5,0,0,0,0,0,0,0,4.5,0,0.0,0.0,4,16,4.5,0.0,0.0,0.0,0.0,169.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
17,17,0.0,1469705730.4,134.7,0.0,4.66,33.5,171,18,134.7,109.232014911,29.4000000954,0,0,0,0,0,0,0,4.66,0,0.0,0.0,4,17,4.66,0.0,0.0,0.0,0.0,171.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
18,18,0.0,1469705732.2,143.0,0.0,4.66,32.5,172,19,143.0,109.4493854,31.2000000477,0,0,0,0,0,0,0,4.66,0,0.0,0.0,4,18,4.66,0.0,0.0,0.0,0.0,172.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
19,19,0.0,1469705734.0,151.2,0.0,4.58,33.0,172,20,151.2,109.222559423,33.0,0,0,0,0,0,0,0,4.58,0,0.0,0.0,4,19,4.57999999999,0.0,0.0,0.0,0.0,172.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
20,20,0.0,1469705735.8,159.4,0.0,4.52,33.0,173,21,159.4,109.097567302,34.7999999523,0,0,0,0,0,0,0,4.52,0,0.0,0.0,4,20,4.51999999998,0.0,0.0,0.0,0.0,173.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
21,21,0.0,1469705737.5,166.1,0.0,4.47,33.5,175,22,166.1,109.622785185,36.5,0,0,0,0,0,0,0,4.47,0,0.0,0.0,4,21,4.47000000001,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
22,22,0.0,1469705739.4,175.7,0.0,4.58,33.5,175,23,175.7,110.908884086,38.4000000954,0,0,0,0,0,0,0,4.58,0,0.0,0.0,4,22,4.57999999999,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
23,23,0.0,1469705741.2,183.8,0.0,4.57,32.5,175,24,183.8,111.571150665,40.2000000477,0,0,0,0,0,0,0,4.57,0,0.0,0.0,4,23,4.57,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
24,24,0.0,1469705743.0,191.8,0.0,4.47,33.0,175,25,191.8,111.781044645,42.0,0,0,0,0,0,0,0,4.47,0,0.0,0.0,4,24,4.47000000001,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
25,25,0.0,1469705744.8,199.8,0.0,4.39,32.0,176,26,199.8,111.973606594,43.7999999523,0,0,0,0,0,0,0,4.39,0,0.0,0.0,4,25,4.39,0.0,0.0,0.0,0.0,176.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
26,26,0.0,1469705746.7,207.8,0.0,4.39,32.5,176,27,207.8,112.082434148,45.7000000477,0,0,0,0,0,0,0,4.39,0,0.0,0.0,4,26,4.39,0.0,0.0,0.0,0.0,176.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
27,27,0.0,1469705748.6,216.7,0.0,4.49,33.0,174,28,216.7,112.462053887,47.5999999046,0,0,0,0,0,0,0,4.49,0,0.0,0.0,4,27,4.49000000001,0.0,0.0,0.0,0.0,174.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
28,28,0.0,1469705750.4,224.8,0.0,4.49,32.0,174,29,224.8,110.702820986,49.4000000954,0,0,0,0,0,0,0,4.49,0,0.0,0.0,4,28,4.49000000001,0.0,0.0,0.0,0.0,174.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
29,29,0.0,1469705752.5,232.9,0.0,4.47,33.0,174,30,232.9,111.287510895,51.5,0,0,0,0,0,0,0,4.47,0,0.0,0.0,4,30,4.47000000001,0.0,0.0,0.0,0.0,174.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
30,30,0.0,1469705754.0,240.9,0.0,4.48,32.0,175,31,240.9,113.880099386,53.0,0,0,0,0,0,0,0,4.48,0,0.0,0.0,4,30,4.48000000001,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
31,31,0.0,1469705755.8,248.9,0.0,4.43,32.0,175,32,248.9,117.397229535,54.7999999523,0,0,0,0,0,0,0,4.43,0,0.0,0.0,4,31,4.42999999999,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
32,32,0.0,1469705756.2,250.4,0.0,4.43,32.0,175,32,250.4,120.181532945,55.2000000477,0,0,0,0,0,0,0,4.43,0,0.0,0.0,4,32,4.42999999999,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
33,33,1.0,1469705757.6,5.7,0.0,3.62,30.5,160,1,256.1,121.464367621,56.5999999046,0,0,0,0,0,0,0,3.62,0,0.0,0.0,4,32,3.62000000001,0.0,0.0,160.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
34,34,1.0,1469705759.4,13.4,0.0,3.85,33.5,161,2,263.8,121.497391629,58.4000000954,0,0,0,0,0,0,0,3.85,0,0.0,0.0,4,33,3.85,0.0,0.0,0.0,161.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
35,35,1.0,1469705761.2,20.7,0.0,4.2,33.5,162,3,271.1,120.37982782,60.2000000477,0,0,0,0,0,0,0,4.2,0,0.0,0.0,4,34,4.19999999999,0.0,0.0,0.0,162.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
36,36,1.0,1469705763.0,29.2,0.0,4.47,33.5,162,4,279.6,118.387283716,62.0,0,0,0,0,0,0,0,4.47,0,0.0,0.0,4,35,4.47000000001,0.0,0.0,0.0,162.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
37,37,1.0,1469705764.8,37.3,0.0,4.47,33.0,164,5,287.7,115.233986774,63.7999999523,0,0,0,0,0,0,0,4.47,0,0.0,0.0,4,36,4.47000000001,0.0,0.0,0.0,164.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
38,38,1.0,1469705766.6,45.3,0.0,4.44,33.5,165,6,295.7,111.287510895,65.5999999046,0,0,0,0,0,0,0,4.44,0,0.0,0.0,4,37,4.43999999998,0.0,0.0,0.0,165.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
39,39,1.0,1469705768.5,53.5,0.0,4.42,33.5,165,7,303.9,111.718168135,67.5,0,0,0,0,0,0,0,4.42,0,0.0,0.0,4,38,4.41999999999,0.0,0.0,0.0,165.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
40,40,1.0,1469705770.2,60.7,0.0,4.38,32.0,167,8,311.1,113.471050335,69.2000000477,0,0,0,0,0,0,0,4.38,0,0.0,0.0,4,39,4.37999999998,0.0,0.0,0.0,167.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
41,41,1.0,1469705772.2,70.1,0.0,4.44,32.0,171,9,320.5,115.140584238,71.2000000477,0,0,0,0,0,0,0,4.44,0,0.0,0.0,4,40,4.43999999998,0.0,0.0,0.0,0.0,171.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
42,42,1.0,1469705774.1,77.8,0.0,4.3,32.0,172,10,328.2,116.273396972,73.0999999046,0,0,0,0,0,0,0,4.3,0,0.0,0.0,4,41,4.30000000002,0.0,0.0,0.0,0.0,172.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
43,43,1.0,1469705776.1,85.2,0.0,4.12,31.0,174,11,335.6,117.556791714,75.0999999046,0,0,0,0,0,0,0,4.12,0,0.0,0.0,4,42,4.12,0.0,0.0,0.0,0.0,174.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
44,44,1.0,1469705777.9,93.4,0.0,4.2,31.5,174,12,343.8,119.395508057,76.9000000954,0,0,0,0,0,0,0,4.2,0,0.0,0.0,4,43,4.19999999999,0.0,0.0,0.0,0.0,174.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
45,45,1.0,1469705779.9,101.5,0.0,4.21,32.0,176,13,351.9,121.165219651,78.9000000954,0,0,0,0,0,0,0,4.21,0,0.0,0.0,4,44,4.20999999999,0.0,0.0,0.0,0.0,176.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
46,46,1.0,1469705781.6,108.9,0.0,4.11,30.5,176,14,359.3,122.757318225,80.5999999046,0,0,0,0,0,0,0,4.11,0,0.0,0.0,4,45,4.10999999998,0.0,0.0,0.0,0.0,176.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
47,47,1.0,1469705783.6,116.9,0.0,4.02,32.0,175,15,367.3,123.722400388,82.5999999046,0,0,0,0,0,0,0,4.02,0,0.0,0.0,4,46,4.01999999999,0.0,0.0,0.0,0.0,175.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
48,48,1.0,1469705785.5,124.1,0.0,3.96,30.5,177,16,374.5,123.80237793,84.5,0,0,0,0,0,0,0,3.96,0,0.0,0.0,4,47,3.95999999999,0.0,0.0,0.0,0.0,177.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
49,49,1.0,1469705787.5,132.1,0.0,4.04,32.0,177,17,382.5,123.700282002,86.5,0,0,0,0,0,0,0,4.04,0,0.0,0.0,4,48,4.03999999999,0.0,0.0,0.0,0.0,177.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
50,50,1.0,1469705789.2,139.7,0.0,4.06,32.0,178,18,390.1,122.672370408,88.2000000477,0,0,0,0,0,0,0,4.06,0,0.0,0.0,4,49,4.05999999999,0.0,0.0,0.0,0.0,178.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
51,51,1.0,1469705791.1,146.7,0.0,4.09,33.0,178,19,397.1,121.011418513,90.0999999046,0,0,0,0,0,0,0,4.09,0,0.0,0.0,4,50,4.09,0.0,0.0,0.0,0.0,178.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
52,52,1.0,1469705793.1,155.4,0.0,4.27,31.0,177,20,405.8,119.62256154,92.0999999046,0,0,0,0,0,0,0,4.27,0,0.0,0.0,4,51,4.27000000001,0.0,0.0,0.0,0.0,177.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
53,53,1.0,1469705794.9,163.1,0.0,4.27,32.0,177,21,413.5,118.342215896,93.9000000954,0,0,0,0,0,0,0,4.27,0,0.0,0.0,4,52,4.27000000001,0.0,0.0,0.0,0.0,177.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
54,54,1.0,1469705797.1,171.6,0.0,4.24,31.5,178,22,422.0,117.740696015,96.0999999046,0,0,0,0,0,0,0,4.24,0,0.0,0.0,4,53,4.24,0.0,0.0,0.0,0.0,178.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
55,55,1.0,1469705798.6,179.3,0.0,4.22,32.0,179,23,429.7,117.599973684,97.5999999046,0,0,0,0,0,0,0,4.22,0,0.0,0.0,4,54,4.22000000001,0.0,0.0,0.0,0.0,179.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
56,56,1.0,1469705800.7,187.9,0.0,4.21,30.5,179,24,438.3,117.565167825,99.7000000477,0,0,0,0,0,0,0,4.21,0,0.0,0.0,4,55,4.20999999999,0.0,0.0,0.0,0.0,179.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
57,57,1.0,1469705802.5,195.8,0.0,4.28,30.5,180,25,446.2,117.967332124,101.5,0,0,0,0,0,0,0,4.28,0,0.0,0.0,4,56,4.27999999998,0.0,0.0,0.0,0.0,180.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
58,58,1.0,1469705804.5,204.3,0.0,4.22,30.5,180,26,454.7,118.489957355,103.5,0,0,0,0,0,0,0,4.22,0,0.0,0.0,4,57,4.22000000001,0.0,0.0,0.0,0.0,180.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
59,59,1.0,1469705806.4,212.2,0.0,4.2,30.5,180,27,462.6,118.763530461,105.400000095,0,0,0,0,0,0,0,4.2,0,0.0,0.0,4,58,4.19999999999,0.0,0.0,0.0,0.0,180.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
60,60,1.0,1469705808.5,221.4,0.0,4.26,29.5,180,28,471.8,117.583212735,107.5,0,0,0,0,0,0,0,4.26,0,0.0,0.0,4,59,4.25999999999,0.0,0.0,0.0,0.0,180.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
61,61,1.0,1469705810.4,229.8,0.0,4.17,30.5,180,29,480.2,119.140852815,109.400000095,0,0,0,0,0,0,0,4.17,0,0.0,0.0,4,60,4.16999999999,0.0,0.0,0.0,0.0,180.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
62,62,1.0,1469705812.3,236.6,0.0,4.11,33.5,181,30,487.0,121.480877381,111.299999952,0,0,0,0,0,0,0,4.11,0,0.0,0.0,4,61,4.10999999998,0.0,0.0,0.0,0.0,0.0,181.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
63,63,1.0,1469705814.0,244.8,0.0,4.24,33.5,181,31,495.2,122.38470448,113.0,0,0,0,0,0,0,0,4.24,0,0.0,0.0,4,62,4.24,0.0,0.0,0.0,0.0,0.0,181.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
64,64,1.0,1469705815.4,250.9,0.0,4.24,33.5,181,31,501.3,122.183234979,114.400000095,0,0,0,0,0,0,0,4.24,0,0.0,0.0,4,63,4.24,0.0,0.0,0.0,0.0,0.0,181.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
65,65,2.0,1469705816.3,0.9,0.0,3.66,28.0,158,1,502.2,121.2563172,115.299999952,0,0,0,0,0,0,0,3.66,0,0.0,0.0,4,63,3.66,0.0,0.0,158.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
66,66,2.0,1469705817.8,9.8,0.0,4.12,33.5,160,2,511.1,119.786227655,116.799999952,0,0,0,0,0,0,0,4.12,0,0.0,0.0,4,64,4.12,0.0,0.0,160.0,0.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
67,67,2.0,1469705819.6,18.0,0.0,4.44,32.5,162,3,519.3,117.678039467,118.599999905,0,0,0,0,0,0,0,4.44,0,0.0,0.0,4,65,4.43999999998,0.0,0.0,0.0,162.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
68,68,2.0,1469705821.5,26.1,0.0,4.47,33.0,161,4,527.4,115.319480659,120.5,0,0,0,0,0,0,0,4.47,0,0.0,0.0,4,66,4.47000000001,0.0,0.0,0.0,161.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
69,69,2.0,1469705823.4,35.0,0.0,4.43,32.0,164,5,536.3,112.531083761,122.400000095,0,0,0,0,0,0,0,4.43,0,0.0,0.0,4,67,4.42999999999,0.0,0.0,0.0,164.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
70,70,2.0,1469705825.1,41.9,0.0,4.43,33.0,165,6,543.2,109.693981917,124.099999905,0,0,0,0,0,0,0,4.43,0,0.0,0.0,4,68,4.42999999999,0.0,0.0,0.0,165.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
71,71,2.0,1469705827.1,51.5,0.0,4.6,33.5,166,7,552.8,110.111805834,126.099999905,0,0,0,0,0,0,0,4.6,0,0.0,0.0,4,69,4.6,0.0,0.0,0.0,166.0,0.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
72,72,2.0,1469705828.9,59.7,0.0,4.59,33.5,168,8,561.0,110.235734879,127.900000095,0,0,0,0,0,0,0,4.59,0,0.0,0.0,4,70,4.58999999998,0.0,0.0,0.0,0.0,168.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
73,73,2.0,1469705830.7,68.1,0.0,4.53,32.0,171,9,569.4,109.674351541,129.700000048,0,0,0,0,0,0,0,4.53,0,0.0,0.0,4,71,4.53000000001,0.0,0.0,0.0,0.0,171.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
74,74,2.0,1469705832.4,76.4,0.0,4.55,33.0,172,10,577.7,109.081478016,131.400000095,0,0,0,0,0,0,0,4.55,0,0.0,0.0,4,72,4.55,0.0,0.0,0.0,0.0,172.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
75,75,2.0,1469705834.3,84.0,0.0,4.54,32.5,173,11,585.3,108.95736186,133.299999952,0,0,0,0,0,0,0,4.54,0,0.0,0.0,4,73,4.54000000001,0.0,0.0,0.0,0.0,173.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
76,76,2.0,1469705836.0,92.9,0.0,4.63,33.0,174,12,594.2,109.581343074,135.0,0,0,0,0,0,0,0,4.63,0,0.0,0.0,4,74,4.63000000001,0.0,0.0,0.0,0.0,174.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
77,77,2.0,1469705837.9,101.3,0.0,4.61,33.5,176,13,602.6,109.437100452,136.900000095,0,0,0,0,0,0,0,4.61,0,0.0,0.0,4,75,4.61000000001,0.0,0.0,0.0,0.0,176.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
78,78,2.0,1469705839.7,109.6,0.0,4.58,33.5,177,14,610.9,108.898173861,138.700000048,0,0,0,0,0,0,0,4.58,0,0.0,0.0,4,76,4.57999999999,0.0,0.0,0.0,0.0,177.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
79,79,2.0,1469705841.5,118.0,0.0,4.54,33.5,178,15,619.3,108.514739286,140.5,0,0,0,0,0,0,0,4.54,0,0.0,0.0,4,77,4.54000000001,0.0,0.0,0.0,0.0,178.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
80,80,2.0,1469705843.1,125.0,0.0,4.54,34.0,178,16,626.3,108.408891045,142.099999905,0,0,0,0,0,0,0,4.54,0,0.0,0.0,4,78,4.54000000001,0.0,0.0,0.0,0.0,178.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
81,81,2.0,1469705845.1,134.8,0.0,4.69,34.5,179,17,636.1,108.970092917,144.099999905,0,0,0,0,0,0,0,4.69,0,0.0,0.0,4,79,4.69000000002,0.0,0.0,0.0,0.0,179.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
82,82,2.0,1469705846.7,142.2,0.0,4.67,34.0,180,18,643.5,108.943527129,145.700000048,0,0,0,0,0,0,0,4.67,0,0.0,0.0,4,80,4.67000000001,0.0,0.0,0.0,0.0,180.0,0.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
83,83,2.0,1469705848.5,150.6,0.0,4.59,34.5,181,19,651.9,108.491687362,147.5,0,0,0,0,0,0,0,4.59,0,0.0,0.0,4,81,4.58999999998,0.0,0.0,0.0,0.0,0.0,181.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
84,84,2.0,1469705850.3,158.8,0.0,4.52,33.5,181,20,660.1,108.195629805,149.299999952,0,0,0,0,0,0,0,4.52,0,0.0,0.0,4,82,4.51999999998,0.0,0.0,0.0,0.0,0.0,181.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
85,85,2.0,1469705852.1,166.4,0.0,4.52,33.5,181,21,667.7,108.474130564,151.099999905,0,0,0,0,0,0,0,4.52,0,0.0,0.0,4,83,4.51999999998,0.0,0.0,0.0,0.0,0.0,181.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
86,86,2.0,1469705853.9,175.2,0.0,4.68,33.5,182,22,676.5,109.550561798,152.900000095,0,0,0,0,0,0,0,4.68,0,0.0,0.0,4,84,4.67999999998,0.0,0.0,0.0,0.0,0.0,182.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
87,87,2.0,1469705855.7,183.2,0.0,4.65,32.0,182,23,684.5,110.12141592,154.700000048,0,0,0,0,0,0,0,4.65,0,0.0,0.0,4,85,4.65000000002,0.0,0.0,0.0,0.0,0.0,182.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
88,88,2.0,1469705857.5,191.2,0.0,4.51,33.0,182,24,692.5,110.388908617,156.5,0,0,0,0,0,0,0,4.51,0,0.0,0.0,4,86,4.51,0.0,0.0,0.0,0.0,0.0,182.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
89,89,2.0,1469705859.4,200.1,0.0,4.42,32.0,183,25,701.4,111.075438088,158.400000095,0,0,0,0,0,0,0,4.42,0,0.0,0.0,4,87,4.41999999999,0.0,0.0,0.0,0.0,0.0,183.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
90,90,2.0,1469705861.2,207.4,0.0,4.38,32.0,183,26,708.7,112.186192469,160.200000048,0,0,0,0,0,0,0,4.38,0,0.0,0.0,4,88,4.37999999998,0.0,0.0,0.0,0.0,0.0,183.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
91,91,2.0,1469705863.0,216.1,0.0,4.47,32.0,183,27,717.4,113.541324808,162.0,0,0,0,0,0,0,0,4.47,0,0.0,0.0,4,89,4.47000000001,0.0,0.0,0.0,0.0,0.0,183.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
92,92,2.0,1469705865.0,224.7,0.0,4.44,32.5,183,28,726.0,113.933934253,164.0,0,0,0,0,0,0,0,4.44,0,0.0,0.0,4,90,4.43999999998,0.0,0.0,0.0,0.0,0.0,183.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
93,93,2.0,1469705867.1,232.4,0.0,4.34,33.0,184,29,733.7,114.217860585,166.099999905,0,0,0,0,0,0,0,4.34,0,0.0,0.0,4,91,4.34,0.0,0.0,0.0,0.0,0.0,184.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
94,94,2.0,1469705868.6,240.6,0.0,4.35,32.0,184,30,741.9,114.508095643,167.599999905,0,0,0,0,0,0,0,4.35,0,0.0,0.0,4,92,4.34999999999,0.0,0.0,0.0,0.0,0.0,184.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
95,95,2.0,1469705870.7,249.0,0.0,4.34,30.5,184,31,750.3,114.922206507,169.700000048,0,0,0,0,0,0,0,4.34,0,0.0,0.0,4,93,4.34,0.0,0.0,0.0,0.0,0.0,184.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
96,96,2.0,1469705871.0,250.4,0.0,4.34,30.5,184,31,751.7,115.581707376,170.0,0,0,0,0,0,0,0,4.34,0,0.0,0.0,4,93,4.34,0.0,0.0,0.0,0.0,0.0,184.0,142,146,160,167,180,192,0.0,0.0,0.0,0.0,0.0,0.0,124.3,169.5,203.4,237.3,271.2
|
||||||
|
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
@@ -1,5 +1,176 @@
|
|||||||
from statements import *
|
from statements import *
|
||||||
|
|
||||||
|
# Histogram for a date/time range
|
||||||
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
|
message="This functionality requires a Pro plan or higher",
|
||||||
|
redirect_field_name=None)
|
||||||
|
def histo(request,theuser=0,
|
||||||
|
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||||
|
enddate=timezone.now(),
|
||||||
|
deltadays=-1,
|
||||||
|
enddatestring=timezone.now().strftime("%Y-%m-%d"),
|
||||||
|
startdatestring=(timezone.now()-datetime.timedelta(days=30)).strftime("%Y-%m-%d"),
|
||||||
|
options={
|
||||||
|
'includereststrokes':False,
|
||||||
|
'workouttypes':[i[0] for i in mytypes.workouttypes],
|
||||||
|
'waterboattype':mytypes.waterboattype,
|
||||||
|
'rankingonly': False,
|
||||||
|
}):
|
||||||
|
|
||||||
|
r = getrequestrower(request,userid=theuser)
|
||||||
|
theuser = r.user
|
||||||
|
|
||||||
|
if 'waterboattype' in request.session:
|
||||||
|
waterboattype = request.session['waterboattype']
|
||||||
|
else:
|
||||||
|
waterboattype = mytypes.waterboattype
|
||||||
|
|
||||||
|
|
||||||
|
if 'rankingonly' in request.session:
|
||||||
|
rankingonly = request.session['rankingonly']
|
||||||
|
else:
|
||||||
|
rankingonly = False
|
||||||
|
|
||||||
|
if 'modalities' in request.session:
|
||||||
|
modalities = request.session['modalities']
|
||||||
|
if len(modalities) > 1:
|
||||||
|
modality = 'all'
|
||||||
|
else:
|
||||||
|
modality = modalities[0]
|
||||||
|
else:
|
||||||
|
modalities = [m[0] for m in mytypes.workouttypes]
|
||||||
|
modality = 'all'
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
rankingonly = options['rankingonly']
|
||||||
|
except KeyError:
|
||||||
|
rankingonly = False
|
||||||
|
|
||||||
|
try:
|
||||||
|
includereststrokes = options['includereststrokes']
|
||||||
|
except KeyError:
|
||||||
|
includereststrokes = False
|
||||||
|
|
||||||
|
|
||||||
|
workstrokesonly = not includereststrokes
|
||||||
|
|
||||||
|
waterboattype = mytypes.waterboattype
|
||||||
|
|
||||||
|
|
||||||
|
if startdatestring != "":
|
||||||
|
startdate = iso8601.parse_date(startdatestring)
|
||||||
|
|
||||||
|
if enddatestring != "":
|
||||||
|
enddate = iso8601.parse_date(enddatestring)
|
||||||
|
|
||||||
|
if enddate < startdate:
|
||||||
|
s = enddate
|
||||||
|
enddate = startdate
|
||||||
|
startdate = s
|
||||||
|
|
||||||
|
|
||||||
|
# get all indoor rows of in date range
|
||||||
|
|
||||||
|
# process form
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = DateRangeForm(request.POST)
|
||||||
|
modalityform = TrendFlexModalForm(request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
startdate = form.cleaned_data['startdate']
|
||||||
|
enddate = form.cleaned_data['enddate']
|
||||||
|
if startdate > enddate:
|
||||||
|
s = enddate
|
||||||
|
enddate = startdate
|
||||||
|
startdate = s
|
||||||
|
startdatestring = startdate.strftime('%Y-%m-%d')
|
||||||
|
enddatestring = enddate.strftime('%Y-%m-%d')
|
||||||
|
if modalityform.is_valid():
|
||||||
|
modality = modalityform.cleaned_data['modality']
|
||||||
|
waterboattype = modalityform.cleaned_data['waterboattype']
|
||||||
|
rankingonly = modalityform.cleaned_data['rankingonly']
|
||||||
|
if modality == 'all':
|
||||||
|
modalities = [m[0] for m in mytypes.workouttypes]
|
||||||
|
else:
|
||||||
|
modalities = [modality]
|
||||||
|
|
||||||
|
if modality != 'water':
|
||||||
|
waterboattype = [b[0] for b in mytypes.boattypes]
|
||||||
|
|
||||||
|
|
||||||
|
request.session['modalities'] = modalities
|
||||||
|
request.session['waterboattype'] = waterboattype
|
||||||
|
request.session['rankingonly'] = rankingonly
|
||||||
|
form = DateRangeForm(initial={
|
||||||
|
'startdate': startdate,
|
||||||
|
'enddate': enddate,
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
form = DateRangeForm(initial={
|
||||||
|
'startdate': startdate,
|
||||||
|
'enddate': enddate,
|
||||||
|
})
|
||||||
|
includereststrokes = False
|
||||||
|
|
||||||
|
workstrokesonly = not includereststrokes
|
||||||
|
modalityform = TrendFlexModalForm(
|
||||||
|
initial={
|
||||||
|
'modality':modality,
|
||||||
|
'waterboattype':waterboattype,
|
||||||
|
'rankingonly':rankingonly,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
negtypes = []
|
||||||
|
for b in mytypes.boattypes:
|
||||||
|
if b[0] not in waterboattype:
|
||||||
|
negtypes.append(b[0])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
div = get_call()
|
||||||
|
js_resources = ''
|
||||||
|
css_resources = ''
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
options = {
|
||||||
|
'modality': modality,
|
||||||
|
'theuser': theuser.id,
|
||||||
|
'waterboattype':waterboattype,
|
||||||
|
'startdatestring':startdatestring,
|
||||||
|
'enddatestring':enddatestring,
|
||||||
|
'rankingonly':rankingonly,
|
||||||
|
'includereststrokes':includereststrokes,
|
||||||
|
}
|
||||||
|
|
||||||
|
request.session['options'] = options
|
||||||
|
|
||||||
|
promember=0
|
||||||
|
mayedit=0
|
||||||
|
if not request.user.is_anonymous():
|
||||||
|
result = request.user.is_authenticated() and ispromember(request.user)
|
||||||
|
if result:
|
||||||
|
promember = 1
|
||||||
|
|
||||||
|
|
||||||
|
request.session['options'] = options
|
||||||
|
|
||||||
|
return render(request, 'histo.html',
|
||||||
|
{'interactiveplot':script,
|
||||||
|
'the_div':div,
|
||||||
|
'id':theuser,
|
||||||
|
'active':'nav-analysis',
|
||||||
|
'theuser':theuser,
|
||||||
|
'rower':r,
|
||||||
|
'startdate':startdate,
|
||||||
|
'enddate':enddate,
|
||||||
|
'form':form,
|
||||||
|
'optionsform':modalityform,
|
||||||
|
'teams':get_my_teams(request.user),
|
||||||
|
})
|
||||||
|
|
||||||
# The Flex plot for a large selection of workouts
|
# The Flex plot for a large selection of workouts
|
||||||
@login_required()
|
@login_required()
|
||||||
|
|||||||
@@ -255,6 +255,15 @@ def getfavorites(r,row):
|
|||||||
|
|
||||||
return favorites,maxfav
|
return favorites,maxfav
|
||||||
|
|
||||||
|
def get_workout_default_page(request,id):
|
||||||
|
if request.user.is_anonymous():
|
||||||
|
return reverse('workout_view',kwargs={'id':str(id)})
|
||||||
|
else:
|
||||||
|
r = Rower.objects.get(user=request.user)
|
||||||
|
if r.defaultlandingpage == 'workout_edit_view':
|
||||||
|
return reverse('workout_edit_view',kwargs={'id':str(id)})
|
||||||
|
else:
|
||||||
|
return reverse('workout_workflow_view',kwargs={'id':str(id)})
|
||||||
|
|
||||||
def getrequestrower(request,rowerid=0,userid=0,notpermanent=False):
|
def getrequestrower(request,rowerid=0,userid=0,notpermanent=False):
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_forcecurve_view,kwargs={'id':id}),
|
'url':reverse('workout_forcecurve_view',kwargs={'id':id}),
|
||||||
'name': 'Empower Force Curve'
|
'name': 'Empower Force Curve'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ def workout_test_task_view(request,id=0):
|
|||||||
res = myqueue(queuehigh,addcomment2,request.user.id,row.id)
|
res = myqueue(queuehigh,addcomment2,request.user.id,row.id)
|
||||||
|
|
||||||
|
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id),
|
'id':int(id),
|
||||||
})
|
})
|
||||||
@@ -111,7 +111,7 @@ def workout_histo_view(request,id=0):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_histo_view,kwargs={'id':id}),
|
'url':reverse('workout_histo_view',kwargs={'id':id}),
|
||||||
'name': 'Histogram'
|
'name': 'Histogram'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,177 +133,6 @@ def workout_histo_view(request,id=0):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Histogram for a date/time range
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
|
||||||
message="This functionality requires a Pro plan or higher",
|
|
||||||
redirect_field_name=None)
|
|
||||||
def histo(request,theuser=0,
|
|
||||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
|
||||||
enddate=timezone.now(),
|
|
||||||
deltadays=-1,
|
|
||||||
enddatestring=timezone.now().strftime("%Y-%m-%d"),
|
|
||||||
startdatestring=(timezone.now()-datetime.timedelta(days=30)).strftime("%Y-%m-%d"),
|
|
||||||
options={
|
|
||||||
'includereststrokes':False,
|
|
||||||
'workouttypes':[i[0] for i in mytypes.workouttypes],
|
|
||||||
'waterboattype':mytypes.waterboattype,
|
|
||||||
'rankingonly': False,
|
|
||||||
}):
|
|
||||||
|
|
||||||
r = getrequestrower(request,userid=theuser)
|
|
||||||
theuser = r.user
|
|
||||||
|
|
||||||
if 'waterboattype' in request.session:
|
|
||||||
waterboattype = request.session['waterboattype']
|
|
||||||
else:
|
|
||||||
waterboattype = mytypes.waterboattype
|
|
||||||
|
|
||||||
|
|
||||||
if 'rankingonly' in request.session:
|
|
||||||
rankingonly = request.session['rankingonly']
|
|
||||||
else:
|
|
||||||
rankingonly = False
|
|
||||||
|
|
||||||
if 'modalities' in request.session:
|
|
||||||
modalities = request.session['modalities']
|
|
||||||
if len(modalities) > 1:
|
|
||||||
modality = 'all'
|
|
||||||
else:
|
|
||||||
modality = modalities[0]
|
|
||||||
else:
|
|
||||||
modalities = [m[0] for m in mytypes.workouttypes]
|
|
||||||
modality = 'all'
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
rankingonly = options['rankingonly']
|
|
||||||
except KeyError:
|
|
||||||
rankingonly = False
|
|
||||||
|
|
||||||
try:
|
|
||||||
includereststrokes = options['includereststrokes']
|
|
||||||
except KeyError:
|
|
||||||
includereststrokes = False
|
|
||||||
|
|
||||||
|
|
||||||
workstrokesonly = not includereststrokes
|
|
||||||
|
|
||||||
waterboattype = mytypes.waterboattype
|
|
||||||
|
|
||||||
|
|
||||||
if startdatestring != "":
|
|
||||||
startdate = iso8601.parse_date(startdatestring)
|
|
||||||
|
|
||||||
if enddatestring != "":
|
|
||||||
enddate = iso8601.parse_date(enddatestring)
|
|
||||||
|
|
||||||
if enddate < startdate:
|
|
||||||
s = enddate
|
|
||||||
enddate = startdate
|
|
||||||
startdate = s
|
|
||||||
|
|
||||||
|
|
||||||
# get all indoor rows of in date range
|
|
||||||
|
|
||||||
# process form
|
|
||||||
if request.method == 'POST':
|
|
||||||
form = DateRangeForm(request.POST)
|
|
||||||
modalityform = TrendFlexModalForm(request.POST)
|
|
||||||
if form.is_valid():
|
|
||||||
startdate = form.cleaned_data['startdate']
|
|
||||||
enddate = form.cleaned_data['enddate']
|
|
||||||
if startdate > enddate:
|
|
||||||
s = enddate
|
|
||||||
enddate = startdate
|
|
||||||
startdate = s
|
|
||||||
startdatestring = startdate.strftime('%Y-%m-%d')
|
|
||||||
enddatestring = enddate.strftime('%Y-%m-%d')
|
|
||||||
if modalityform.is_valid():
|
|
||||||
modality = modalityform.cleaned_data['modality']
|
|
||||||
waterboattype = modalityform.cleaned_data['waterboattype']
|
|
||||||
rankingonly = modalityform.cleaned_data['rankingonly']
|
|
||||||
if modality == 'all':
|
|
||||||
modalities = [m[0] for m in mytypes.workouttypes]
|
|
||||||
else:
|
|
||||||
modalities = [modality]
|
|
||||||
|
|
||||||
if modality != 'water':
|
|
||||||
waterboattype = [b[0] for b in mytypes.boattypes]
|
|
||||||
|
|
||||||
|
|
||||||
request.session['modalities'] = modalities
|
|
||||||
request.session['waterboattype'] = waterboattype
|
|
||||||
request.session['rankingonly'] = rankingonly
|
|
||||||
form = DateRangeForm(initial={
|
|
||||||
'startdate': startdate,
|
|
||||||
'enddate': enddate,
|
|
||||||
})
|
|
||||||
else:
|
|
||||||
form = DateRangeForm(initial={
|
|
||||||
'startdate': startdate,
|
|
||||||
'enddate': enddate,
|
|
||||||
})
|
|
||||||
includereststrokes = False
|
|
||||||
|
|
||||||
workstrokesonly = not includereststrokes
|
|
||||||
modalityform = TrendFlexModalForm(
|
|
||||||
initial={
|
|
||||||
'modality':modality,
|
|
||||||
'waterboattype':waterboattype,
|
|
||||||
'rankingonly':rankingonly,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
negtypes = []
|
|
||||||
for b in mytypes.boattypes:
|
|
||||||
if b[0] not in waterboattype:
|
|
||||||
negtypes.append(b[0])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
script = ''
|
|
||||||
div = get_call()
|
|
||||||
js_resources = ''
|
|
||||||
css_resources = ''
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
options = {
|
|
||||||
'modality': modality,
|
|
||||||
'theuser': theuser.id,
|
|
||||||
'waterboattype':waterboattype,
|
|
||||||
'startdatestring':startdatestring,
|
|
||||||
'enddatestring':enddatestring,
|
|
||||||
'rankingonly':rankingonly,
|
|
||||||
'includereststrokes':includereststrokes,
|
|
||||||
}
|
|
||||||
|
|
||||||
request.session['options'] = options
|
|
||||||
|
|
||||||
promember=0
|
|
||||||
mayedit=0
|
|
||||||
if not request.user.is_anonymous():
|
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
|
||||||
if result:
|
|
||||||
promember = 1
|
|
||||||
|
|
||||||
|
|
||||||
request.session['options'] = options
|
|
||||||
|
|
||||||
return render(request, 'histo.html',
|
|
||||||
{'interactiveplot':script,
|
|
||||||
'the_div':div,
|
|
||||||
'id':theuser,
|
|
||||||
'active':'nav-analysis',
|
|
||||||
'theuser':theuser,
|
|
||||||
'rower':r,
|
|
||||||
'startdate':startdate,
|
|
||||||
'enddate':enddate,
|
|
||||||
'form':form,
|
|
||||||
'optionsform':modalityform,
|
|
||||||
'teams':get_my_teams(request.user),
|
|
||||||
})
|
|
||||||
|
|
||||||
# add a workout manually
|
# add a workout manually
|
||||||
@login_required()
|
@login_required()
|
||||||
@@ -316,7 +145,7 @@ def addmanual_view(request):
|
|||||||
'name':'Workouts'
|
'name':'Workouts'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(addmanual_view),
|
'url':reverse('addmanual_view'),
|
||||||
'name': 'Add Manual Entry'
|
'name': 'Add Manual Entry'
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@@ -418,7 +247,7 @@ def addmanual_view(request):
|
|||||||
messages.info(request,'New workout created')
|
messages.info(request,'New workout created')
|
||||||
|
|
||||||
url = reverse(
|
url = reverse(
|
||||||
workout_edit_view,
|
'workout_edit_view',
|
||||||
kwargs={'id':id}
|
kwargs={'id':id}
|
||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
@@ -457,7 +286,7 @@ def fitness_metric_view(request,mode='rower',days=42):
|
|||||||
# test if not something already done
|
# test if not something already done
|
||||||
ms = PowerTimeFitnessMetric.objects.filter(user=request.user)
|
ms = PowerTimeFitnessMetric.objects.filter(user=request.user)
|
||||||
if not ms:
|
if not ms:
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
max_workout_id = max([m.last_workout for m in ms])
|
max_workout_id = max([m.last_workout for m in ms])
|
||||||
@@ -502,7 +331,7 @@ def workout_update_cp_view(request,id=0):
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -529,7 +358,7 @@ def workout_recalcsummary_view(request,id=0):
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -540,14 +369,14 @@ def workout_recalcsummary_view(request,id=0):
|
|||||||
row.save()
|
row.save()
|
||||||
successmessage = "Summary Updated"
|
successmessage = "Summary Updated"
|
||||||
messages.info(request,successmessage)
|
messages.info(request,successmessage)
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id),
|
'id':int(id),
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
message = "Something went wrong. Could not update summary"
|
message = "Something went wrong. Could not update summary"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id),
|
'id':int(id),
|
||||||
})
|
})
|
||||||
@@ -599,7 +428,7 @@ def workouts_join_view(request):
|
|||||||
return HttpResponse("form is not valid")
|
return HttpResponse("form is not valid")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
url = reverse(workouts_join_select)
|
url = reverse('workouts_join_select')
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
@@ -1082,11 +911,11 @@ def virtualevent_compare_view(request,id=0):
|
|||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
'url': reverse(virtualevents_view),
|
'url': reverse('virtualevents_view'),
|
||||||
'name': 'Racing'
|
'name': 'Racing'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(virtualevent_view,
|
'url':reverse('virtualevent_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'id':race.id,
|
'id':race.id,
|
||||||
}
|
}
|
||||||
@@ -1094,7 +923,7 @@ def virtualevent_compare_view(request,id=0):
|
|||||||
'name': race.name
|
'name': race.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(virtualevent_compare_view,
|
'url':reverse('virtualevent_compare_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'id':race.id,
|
'id':race.id,
|
||||||
}
|
}
|
||||||
@@ -1159,7 +988,7 @@ def plannedsession_compare_view(request,id=0,userid=0):
|
|||||||
request.session['plottype'] = plottype
|
request.session['plottype'] = plottype
|
||||||
request.session['ps'] = ps.id
|
request.session['ps'] = ps.id
|
||||||
|
|
||||||
url = reverse(multi_compare_view,kwargs={'userid':userid,'id':ids[0]})
|
url = reverse('multi_compare_view',kwargs={'userid':userid,'id':ids[0]})
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -1237,7 +1066,7 @@ def multi_compare_view(request,id=0,userid=0):
|
|||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
url = reverse(team_comparison_select,
|
url = reverse('team_comparison_select',
|
||||||
kwargs={
|
kwargs={
|
||||||
'id':id,
|
'id':id,
|
||||||
'teamid':0})
|
'teamid':0})
|
||||||
@@ -1262,11 +1091,11 @@ def multi_compare_view(request,id=0,userid=0):
|
|||||||
'name':'Workouts'
|
'name':'Workouts'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(team_comparison_select,kwargs={'teamid':teamid}),
|
'url':reverse('team_comparison_select',kwargs={'teamid':teamid}),
|
||||||
'name': 'Compare Select'
|
'name': 'Compare Select'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(multi_compare_view),
|
'url':reverse('multi_compare_view'),
|
||||||
'name': 'Comparison Chart'
|
'name': 'Comparison Chart'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1275,12 +1104,12 @@ def multi_compare_view(request,id=0,userid=0):
|
|||||||
ps = PlannedSession.objects.get(id=int(request.session['ps']))
|
ps = PlannedSession.objects.get(id=int(request.session['ps']))
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
'url': reverse(plannedsessions_view,
|
'url': reverse('plannedsessions_view',
|
||||||
kwargs={'userid':userid}),
|
kwargs={'userid':userid}),
|
||||||
'name': 'Sessions'
|
'name': 'Sessions'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(plannedsession_view,
|
'url':reverse('plannedsession_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'userid':userid,
|
'userid':userid,
|
||||||
'id':ps.id,
|
'id':ps.id,
|
||||||
@@ -1289,7 +1118,7 @@ def multi_compare_view(request,id=0,userid=0):
|
|||||||
'name': ps.id
|
'name': ps.id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(plannedsession_compare_view,
|
'url':reverse('plannedsession_compare_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'userid':userid,
|
'userid':userid,
|
||||||
'id':ps.id,
|
'id':ps.id,
|
||||||
@@ -1610,7 +1439,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='',
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_fusion_list,kwargs={'id':id}),
|
'url':reverse('workout_fusion_list',kwargs={'id':id}),
|
||||||
'name': 'Sensor Fusion'
|
'name': 'Sensor Fusion'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1703,7 +1532,7 @@ def workout_view(request,id=0):
|
|||||||
'name':'Workouts'
|
'name':'Workouts'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_view,kwargs={'id':id}),
|
'url':reverse('workout_view',kwargs={'id':id}),
|
||||||
'name': row.name,
|
'name': row.name,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1745,7 +1574,7 @@ def workout_undo_smoothenpace_view(
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -1785,7 +1614,7 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -1841,7 +1670,7 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_crewnerd_summary_view,kwargs={'id':id}),
|
'url':reverse('workout_crewnerd_summary_view',kwargs={'id':id}),
|
||||||
'name': 'CrewNerd Summary'
|
'name': 'CrewNerd Summary'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1860,7 +1689,7 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
|||||||
os.remove(fname)
|
os.remove(fname)
|
||||||
successmessage = "CrewNerd summary added"
|
successmessage = "CrewNerd summary added"
|
||||||
messages.info(request,successmessage)
|
messages.info(request,successmessage)
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id),
|
'id':int(id),
|
||||||
})
|
})
|
||||||
@@ -1873,7 +1702,7 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
|||||||
pass
|
pass
|
||||||
message = "Something went wrong (workout_crewnerd_summary_view)"
|
message = "Something went wrong (workout_crewnerd_summary_view)"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id),
|
'id':int(id),
|
||||||
})
|
})
|
||||||
@@ -1914,7 +1743,7 @@ def workout_downloadwind_view(request,id=0,
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -1954,7 +1783,7 @@ def workout_downloadwind_view(request,id=0,
|
|||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id)}
|
'id':int(id)}
|
||||||
|
|
||||||
url = reverse(workout_wind_view,kwargs=kwargs)
|
url = reverse('workout_wind_view',kwargs=kwargs)
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
message = "No latitude/longitude data"
|
message = "No latitude/longitude data"
|
||||||
@@ -1962,7 +1791,7 @@ def workout_downloadwind_view(request,id=0,
|
|||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id)
|
'id':int(id)
|
||||||
}
|
}
|
||||||
url = reverse(workout_wind_view,kwargs=kwargs)
|
url = reverse('workout_wind_view',kwargs=kwargs)
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
@@ -1980,7 +1809,7 @@ def workout_downloadmetar_view(request,id=0,
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -2020,7 +1849,7 @@ def workout_downloadmetar_view(request,id=0,
|
|||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id)}
|
'id':int(id)}
|
||||||
|
|
||||||
url = reverse(workout_wind_view,kwargs=kwargs)
|
url = reverse('workout_wind_view',kwargs=kwargs)
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
message = "No latitude/longitude data"
|
message = "No latitude/longitude data"
|
||||||
@@ -2028,7 +1857,7 @@ def workout_downloadmetar_view(request,id=0,
|
|||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id)
|
'id':int(id)
|
||||||
}
|
}
|
||||||
url = reverse(workout_wind_view,kwargs=kwargs)
|
url = reverse('workout_wind_view',kwargs=kwargs)
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
@@ -2051,7 +1880,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_wind_view,kwargs={'id':id}),
|
'url':reverse('workout_wind_view',kwargs={'id':id}),
|
||||||
'name': 'Wind'
|
'name': 'Wind'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2060,7 +1889,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""):
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -2132,7 +1961,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""):
|
|||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id)
|
'id':int(id)
|
||||||
}
|
}
|
||||||
url = reverse(workout_wind_view,kwargs=kwargs)
|
url = reverse('workout_wind_view',kwargs=kwargs)
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -2181,7 +2010,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
|
|||||||
if (checkworkoutuser(request.user,row)==False):
|
if (checkworkoutuser(request.user,row)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -2218,7 +2047,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
|
|||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id)}
|
'id':int(id)}
|
||||||
url = reverse(workout_wind_view,kwargs=kwargs)
|
url = reverse('workout_wind_view',kwargs=kwargs)
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -2239,7 +2068,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_stream_view,kwargs={'id':id}),
|
'url':reverse('workout_stream_view',kwargs={'id':id}),
|
||||||
'name': 'Stream'
|
'name': 'Stream'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2273,7 +2102,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
|||||||
if (checkworkoutuser(request.user,w)==False):
|
if (checkworkoutuser(request.user,w)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -2345,7 +2174,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
|||||||
try:
|
try:
|
||||||
url = request.session['referer']
|
url = request.session['referer']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
url = reverse(workout_advanced_view,kwargs=kwargs)
|
url = reverse('workout_edit_view',kwargs=kwargs)
|
||||||
|
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
return response
|
return response
|
||||||
@@ -2355,7 +2184,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
|||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id)}
|
'id':int(id)}
|
||||||
url = reverse(workout_otwsetpower_view,kwargs=kwargs)
|
url = reverse('workout_otwsetpower_view',kwargs=kwargs)
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -2371,7 +2200,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_otwsetpower_view,kwargs={'id':id}),
|
'url':reverse('workout_otwsetpower_view',kwargs={'id':id}),
|
||||||
'name': 'OTW Power'
|
'name': 'OTW Power'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2411,7 +2240,7 @@ def instroke_view(request,id=0):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(instroke_view,kwargs={'id':id}),
|
'url':reverse('instroke_view',kwargs={'id':id}),
|
||||||
'name': 'In-Stroke Metrics'
|
'name': 'In-Stroke Metrics'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2424,7 +2253,7 @@ def instroke_view(request,id=0):
|
|||||||
if (checkworkoutuser(request.user,w)==False):
|
if (checkworkoutuser(request.user,w)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -2456,7 +2285,7 @@ def instroke_chart(request,id=0,metric=''):
|
|||||||
if (checkworkoutuser(request.user,w)==False):
|
if (checkworkoutuser(request.user,w)==False):
|
||||||
message = "You are not allowed to edit this workout"
|
message = "You are not allowed to edit this workout"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -2526,7 +2355,7 @@ def workout_data_view(request, id=0):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_data_view,kwargs={'id':id}),
|
'url':reverse('workout_data_view',kwargs={'id':id}),
|
||||||
'name': 'Data Explorer'
|
'name': 'Data Explorer'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2628,7 +2457,7 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_stats_view,kwargs={'id':id}),
|
'url':reverse('workout_stats_view',kwargs={'id':id}),
|
||||||
'name': 'Stats'
|
'name': 'Stats'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2786,19 +2615,10 @@ def workflow_default_view(request):
|
|||||||
|
|
||||||
r.save()
|
r.save()
|
||||||
|
|
||||||
url = reverse(workout_workflow_config2_view)
|
url = reverse('workout_workflow_config2_view')
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
def get_workout_default_page(request,id):
|
|
||||||
if request.user.is_anonymous():
|
|
||||||
return reverse(workout_view,kwargs={'id':str(id)})
|
|
||||||
else:
|
|
||||||
r = Rower.objects.get(user=request.user)
|
|
||||||
if r.defaultlandingpage == 'workout_edit_view':
|
|
||||||
return reverse(workout_edit_view,kwargs={'id':str(id)})
|
|
||||||
else:
|
|
||||||
return reverse(workout_workflow_view,kwargs={'id':str(id)})
|
|
||||||
|
|
||||||
# Workflow configuration
|
# Workflow configuration
|
||||||
@login_required()
|
@login_required()
|
||||||
@@ -2946,7 +2766,7 @@ def workout_workflow_view(request,id):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_workflow_view,kwargs={'id':id}),
|
'url':reverse('workout_workflow_view',kwargs={'id':id}),
|
||||||
'name': 'View'
|
'name': 'View'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3232,7 +3052,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_flexchart3_view,kwargs=kwargs),
|
'url':reverse('workout_flexchart3_view',kwargs=kwargs),
|
||||||
'name': 'Flex Chart'
|
'name': 'Flex Chart'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3286,7 +3106,7 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_otwpowerplot_view,kwargs={'id':id}),
|
'url':reverse('workout_otwpowerplot_view',kwargs={'id':id}),
|
||||||
'name': 'Interactive OTW Power Plot'
|
'name': 'Interactive OTW Power Plot'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3387,7 +3207,7 @@ def workout_comment_view(request,id=0):
|
|||||||
c = WorkoutComment(workout=w,user=request.user,comment=comment,
|
c = WorkoutComment(workout=w,user=request.user,comment=comment,
|
||||||
notification=notification)
|
notification=notification)
|
||||||
c.save()
|
c.save()
|
||||||
url = reverse(workout_comment_view,
|
url = reverse('workout_comment_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'id':id
|
'id':id
|
||||||
})
|
})
|
||||||
@@ -3428,7 +3248,8 @@ def workout_comment_view(request,id=0):
|
|||||||
emailbounced = ocr.emailbounced
|
emailbounced = ocr.emailbounced
|
||||||
)
|
)
|
||||||
|
|
||||||
url = reverse(workout_comment_view,kwargs = {
|
url = reverse('workout_comment_view',
|
||||||
|
kwargs = {
|
||||||
'id':id})
|
'id':id})
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -3456,7 +3277,7 @@ def workout_comment_view(request,id=0):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_comment_view,kwargs={'id':id}),
|
'url':reverse('workout_comment_view',kwargs={'id':id}),
|
||||||
'name': 'Comments'
|
'name': 'Comments'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3600,7 +3421,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
|
|||||||
dataprep.runcpupdate(row.user,type=row.workouttype)
|
dataprep.runcpupdate(row.user,type=row.workouttype)
|
||||||
|
|
||||||
messages.info(request,successmessage)
|
messages.info(request,successmessage)
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':str(row.id),
|
'id':str(row.id),
|
||||||
})
|
})
|
||||||
@@ -3665,7 +3486,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_edit_view,kwargs={'id':id}),
|
'url':reverse('workout_edit_view',kwargs={'id':id}),
|
||||||
'name': 'Edit'
|
'name': 'Edit'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3713,7 +3534,7 @@ def workout_map_view(request,id=0):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_map_view,kwargs={'id':id}),
|
'url':reverse('workout_map_view',kwargs={'id':id}),
|
||||||
'name': 'Map'
|
'name': 'Map'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3789,7 +3610,7 @@ def workout_uploadimage_view(request,id):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_uploadimage_view,kwargs={'id':id}),
|
'url':reverse('workout_uploadimage_view',kwargs={'id':id}),
|
||||||
'name': 'Upload Image'
|
'name': 'Upload Image'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3825,7 +3646,7 @@ def workout_uploadimage_view(request,id):
|
|||||||
message = "Not a valid image"
|
message = "Not a valid image"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
os.remove(path_and_filename)
|
os.remove(path_and_filename)
|
||||||
url = reverse(workout_uploadimage_view,
|
url = reverse('workout_uploadimage_view',
|
||||||
kwargs = {'id':id})
|
kwargs = {'id':id})
|
||||||
|
|
||||||
if is_ajax:
|
if is_ajax:
|
||||||
@@ -3847,7 +3668,7 @@ def workout_uploadimage_view(request,id):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
else:
|
else:
|
||||||
messages.error(request,'Something went wrong - no file attached')
|
messages.error(request,'Something went wrong - no file attached')
|
||||||
url = reverse(workout_uploadimage_view,
|
url = reverse('workout_uploadimage_view',
|
||||||
kwargs = {'id':id})
|
kwargs = {'id':id})
|
||||||
|
|
||||||
if is_ajax:
|
if is_ajax:
|
||||||
@@ -3929,7 +3750,7 @@ def workout_toggle_ranking(request,id=0):
|
|||||||
|
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
@@ -3961,7 +3782,7 @@ def workout_upload_view(request,
|
|||||||
'name':'Workouts'
|
'name':'Workouts'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url': reverse(workout_upload_view),
|
'url': reverse('workout_upload_view'),
|
||||||
'name': 'Upload'
|
'name': 'Upload'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -4063,7 +3884,7 @@ def workout_upload_view(request,
|
|||||||
else:
|
else:
|
||||||
messages.error(request,
|
messages.error(request,
|
||||||
"Something went wrong - no file attached")
|
"Something went wrong - no file attached")
|
||||||
url = reverse(workout_upload_view)
|
url = reverse('workout_upload_view')
|
||||||
if is_ajax:
|
if is_ajax:
|
||||||
return JSONResponse({'result':0,'url':0})
|
return JSONResponse({'result':0,'url':0})
|
||||||
else:
|
else:
|
||||||
@@ -4151,7 +3972,7 @@ def workout_upload_view(request,
|
|||||||
messages.info(
|
messages.info(
|
||||||
request,
|
request,
|
||||||
"The file was too large to process in real time. It will be processed in a background process. You will receive an email when it is ready")
|
"The file was too large to process in real time. It will be processed in a background process. You will receive an email when it is ready")
|
||||||
url = reverse(workout_upload_view)
|
url = reverse('workout_upload_view')
|
||||||
if is_ajax:
|
if is_ajax:
|
||||||
return JSONResponse({'result':1,'url':url})
|
return JSONResponse({'result':1,'url':url})
|
||||||
else:
|
else:
|
||||||
@@ -4160,7 +3981,7 @@ def workout_upload_view(request,
|
|||||||
|
|
||||||
if not id:
|
if not id:
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(workout_upload_view)
|
url = reverse('workout_upload_view')
|
||||||
if is_ajax:
|
if is_ajax:
|
||||||
return JSONResponse({'result':0,'url':url})
|
return JSONResponse({'result':0,'url':url})
|
||||||
else:
|
else:
|
||||||
@@ -4169,7 +3990,7 @@ def workout_upload_view(request,
|
|||||||
elif id == -1:
|
elif id == -1:
|
||||||
message = 'The zip archive will be processed in the background. The files in the archive will only be uploaded without the extra actions. You will receive email when the workouts are ready.'
|
message = 'The zip archive will be processed in the background. The files in the archive will only be uploaded without the extra actions. You will receive email when the workouts are ready.'
|
||||||
messages.info(request,message)
|
messages.info(request,message)
|
||||||
url = reverse(workout_upload_view)
|
url = reverse('workout_upload_view')
|
||||||
if is_ajax:
|
if is_ajax:
|
||||||
return JSONResponse({'result':1,'url':url})
|
return JSONResponse({'result':1,'url':url})
|
||||||
else:
|
else:
|
||||||
@@ -4179,7 +4000,7 @@ def workout_upload_view(request,
|
|||||||
if message:
|
if message:
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
|
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':int(id),
|
'id':int(id),
|
||||||
})
|
})
|
||||||
@@ -4387,7 +4208,7 @@ def team_workout_upload_view(request,message="",
|
|||||||
'name':'Workouts'
|
'name':'Workouts'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url': reverse(team_workout_upload_view),
|
'url': reverse('team_workout_upload_view'),
|
||||||
'name': 'Team Upload'
|
'name': 'Team Upload'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -4477,20 +4298,20 @@ def team_workout_upload_view(request,message="",
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
url = reverse(team_workout_upload_view)
|
url = reverse('team_workout_upload_view')
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
if not id:
|
if not id:
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
url = reverse(team_workout_upload_view)
|
url = reverse('team_workout_upload_view')
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
return response
|
return response
|
||||||
elif id == -1:
|
elif id == -1:
|
||||||
message = 'The zip archive will be processed in the background. The files in the archive will only be uploaded without the extra actions. You will receive email when the workouts are ready.'
|
message = 'The zip archive will be processed in the background. The files in the archive will only be uploaded without the extra actions. You will receive email when the workouts are ready.'
|
||||||
messages.info(request,message)
|
messages.info(request,message)
|
||||||
url = reverse(team_workout_upload_view)
|
url = reverse('team_workout_upload_view')
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@@ -4498,7 +4319,7 @@ def team_workout_upload_view(request,message="",
|
|||||||
successmessage = "The workout was added to the user's account"
|
successmessage = "The workout was added to the user's account"
|
||||||
messages.info(request,successmessage)
|
messages.info(request,successmessage)
|
||||||
|
|
||||||
url = reverse(team_workout_upload_view)
|
url = reverse('team_workout_upload_view')
|
||||||
|
|
||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
w = Workout.objects.get(id=id)
|
w = Workout.objects.get(id=id)
|
||||||
@@ -4546,7 +4367,7 @@ def team_workout_upload_view(request,message="",
|
|||||||
# A page with all the recent graphs (searchable on workout name)
|
# A page with all the recent graphs (searchable on workout name)
|
||||||
@login_required()
|
@login_required()
|
||||||
def graphs_view(request):
|
def graphs_view(request):
|
||||||
request.session['referer'] = reverse(graphs_view)
|
request.session['referer'] = reverse('graphs_view')
|
||||||
try:
|
try:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
workouts = Workout.objects.filter(user=r).order_by("-date", "-starttime")
|
workouts = Workout.objects.filter(user=r).order_by("-date", "-starttime")
|
||||||
@@ -4611,7 +4432,7 @@ def graph_show_view(request,id):
|
|||||||
'name': w.name
|
'name': w.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(graph_show_view,kwargs={'id':id}),
|
'url':reverse('graph_show_view',kwargs={'id':id}),
|
||||||
'name': 'Chart'
|
'name': 'Chart'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4679,7 +4500,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
|
|||||||
|
|
||||||
|
|
||||||
messages.info(request,'Original Interval Data Restored')
|
messages.info(request,'Original Interval Data Restored')
|
||||||
url = reverse(workout_summary_edit_view,
|
url = reverse('workout_summary_edit_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'id':int(id),
|
'id':int(id),
|
||||||
}
|
}
|
||||||
@@ -4703,7 +4524,8 @@ def workout_split_view(request,id=id):
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(graph_show_view,kwargs={'id':id}),
|
'url':reverse('graph_show_view',
|
||||||
|
kwargs={'id':id}),
|
||||||
'name': 'Chart'
|
'name': 'Chart'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4729,7 +4551,7 @@ def workout_split_view(request,id=id):
|
|||||||
|
|
||||||
|
|
||||||
if request.user == r:
|
if request.user == r:
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
else:
|
else:
|
||||||
mgrids = [team.id for team in Team.objects.filter(manager=request.user)]
|
mgrids = [team.id for team in Team.objects.filter(manager=request.user)]
|
||||||
rwrids = [team.id for team in r.team.all()]
|
rwrids = [team.id for team in r.team.all()]
|
||||||
@@ -4737,13 +4559,13 @@ def workout_split_view(request,id=id):
|
|||||||
if len(teamids) > 0:
|
if len(teamids) > 0:
|
||||||
teamid = teamids[0]
|
teamid = teamids[0]
|
||||||
|
|
||||||
url = reverse(workouts_view,
|
url = reverse('workouts_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'teamid':int(teamid),
|
'teamid':int(teamid),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
url = reverse(workouts_view)
|
url = reverse('workouts_view')
|
||||||
|
|
||||||
rowname = row.name
|
rowname = row.name
|
||||||
if isinstance(rowname,unicode):
|
if isinstance(rowname,unicode):
|
||||||
@@ -4817,7 +4639,7 @@ def workout_fusion_view(request,id1=0,id2=1):
|
|||||||
successmessage = 'Data fused'
|
successmessage = 'Data fused'
|
||||||
messages.info(request,message)
|
messages.info(request,message)
|
||||||
|
|
||||||
url = reverse(workout_edit_view,
|
url = reverse('workout_edit_view',
|
||||||
kwargs={
|
kwargs={
|
||||||
'id':idnew,
|
'id':idnew,
|
||||||
})
|
})
|
||||||
@@ -4836,11 +4658,12 @@ def workout_fusion_view(request,id1=0,id2=1):
|
|||||||
'name': str(w1.id)
|
'name': str(w1.id)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_fusion_list,kwargs={'id':id1}),
|
'url':reverse('workout_fusion_list',kwargs={'id':id1}),
|
||||||
'name': 'Sensor Fusion'
|
'name': 'Sensor Fusion'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_fusion_view,kwargs={'id1':id1,'id2':id2}),
|
'url':reverse('workout_fusion_view',
|
||||||
|
kwargs={'id1':id1,'id2':id2}),
|
||||||
'name': str(w2.id)
|
'name': str(w2.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4874,7 +4697,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
'name': row.name
|
'name': row.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(workout_summary_edit_view,kwargs={'id':id}),
|
'url':reverse('workout_summary_edit_view',kwargs={'id':id}),
|
||||||
'name': 'Edit Intervals'
|
'name': 'Edit Intervals'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5296,7 +5119,7 @@ class GraphDelete(DeleteView):
|
|||||||
'name': str(self.object.workout.id)
|
'name': str(self.object.workout.id)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url':reverse(graph_show_view,kwargs={'id':self.object.pk}),
|
'url':reverse('graph_show_view',kwargs={'id':self.object.pk}),
|
||||||
'name': 'Chart'
|
'name': 'Chart'
|
||||||
},
|
},
|
||||||
{ 'url':reverse('graph_delete',kwargs={'pk':str(self.object.pk)}),
|
{ 'url':reverse('graph_delete',kwargs={'pk':str(self.object.pk)}),
|
||||||
@@ -5314,7 +5137,7 @@ class GraphDelete(DeleteView):
|
|||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
w = self.object.workout
|
w = self.object.workout
|
||||||
return reverse(workout_edit_view,kwargs={'id':str(w.id)})
|
return reverse('workout_edit_view',kwargs={'id':str(w.id)})
|
||||||
|
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super(GraphDelete, self).get_object(*args, **kwargs)
|
obj = super(GraphDelete, self).get_object(*args, **kwargs)
|
||||||
@@ -5368,7 +5191,7 @@ class WorkoutDelete(DeleteView):
|
|||||||
|
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return reverse(workouts_view)
|
return reverse('workouts_view')
|
||||||
|
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super(WorkoutDelete, self).get_object(*args, **kwargs)
|
obj = super(WorkoutDelete, self).get_object(*args, **kwargs)
|
||||||
|
|||||||
Reference in New Issue
Block a user