going through tests
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
from rowers.courseutils import coursetime_paths, coursetime_first, time_in_path
|
||||
import pandas as pd
|
||||
from rowers.models import (
|
||||
Rower, Workout,
|
||||
GeoPoint, GeoPolygon, GeoCourse,
|
||||
@@ -420,62 +419,6 @@ def createcourse(
|
||||
return c
|
||||
|
||||
|
||||
def get_time_course(ws, course): # pragma: no cover
|
||||
coursetimeseconds = 0.0
|
||||
coursecompleted = False
|
||||
|
||||
w = ws[0]
|
||||
columns = ['time', ' latitude', ' longitude', 'cum_dist']
|
||||
rowdata = dataprep.getsmallrowdata_db(
|
||||
columns,
|
||||
ids=[w.id],
|
||||
doclean=False,
|
||||
workstrokesonly=False
|
||||
)
|
||||
|
||||
rowdata.rename(columns={
|
||||
' latitude': 'latitude',
|
||||
' longitude': 'longitude',
|
||||
}, inplace=True)
|
||||
|
||||
rowdata['time'] = rowdata['time']/1000.
|
||||
|
||||
rowdata.fillna(method='backfill', inplace=True)
|
||||
|
||||
rowdata['time'] = rowdata['time']-rowdata.ix[0, 'time']
|
||||
# we may want to expand the time (interpolate)
|
||||
rowdata['dt'] = rowdata['time'].apply(
|
||||
lambda x: timedelta(seconds=x)
|
||||
)
|
||||
rowdata = rowdata.resample('100ms', on='dt').mean()
|
||||
rowdata = rowdata.interpolate()
|
||||
|
||||
# create path
|
||||
polygons = GeoPolygon.objects.filter(
|
||||
course=course).order_by("order_in_course")
|
||||
paths = []
|
||||
for polygon in polygons:
|
||||
path = polygon_to_path(polygon)
|
||||
paths.append(path)
|
||||
|
||||
(
|
||||
coursetimeseconds,
|
||||
coursemeters,
|
||||
coursecompleted,
|
||||
|
||||
) = coursetime_paths(rowdata, paths)
|
||||
(
|
||||
coursetimefirst,
|
||||
coursemetersfirst,
|
||||
firstcompleted
|
||||
) = coursetime_first(
|
||||
rowdata, paths)
|
||||
|
||||
coursetimeseconds = coursetimeseconds-coursetimefirst
|
||||
coursemeters = coursemeters-coursemetersfirst
|
||||
|
||||
return coursetimeseconds, coursemeters, coursecompleted
|
||||
|
||||
|
||||
def replacecourse(course1, course2):
|
||||
ps = PlannedSession.objects.filter(course=course1)
|
||||
|
||||
@@ -758,45 +758,6 @@ def fetchcp_new(rower, workouts):
|
||||
return df['delta'], df['cp'], 0, df['workout'], df['url']
|
||||
|
||||
|
||||
def fetchcp(rower, theworkouts, table='cpdata'): # pragma: no cover
|
||||
# get all power data from database (plus workoutid)
|
||||
theids = [int(w.id) for w in theworkouts]
|
||||
columns = ['power', 'workoutid', 'time']
|
||||
df = getsmallrowdata_db(columns, ids=theids)
|
||||
df.dropna(inplace=True, axis=0)
|
||||
if df.empty:
|
||||
avgpower2 = {}
|
||||
for id in theids:
|
||||
avgpower2[id] = 0
|
||||
return pd.Series([], dtype='float'), pd.Series([], dtype='float'), avgpower2
|
||||
|
||||
try:
|
||||
dfgrouped = df.groupby(['workoutid'])
|
||||
except KeyError:
|
||||
avgpower2 = {}
|
||||
return pd.Series([], dtype='float'), pd.Series([], dtype='float'), avgpower2
|
||||
try:
|
||||
avgpower2 = dict(dfgrouped.mean()['power'].astype(int))
|
||||
except KeyError:
|
||||
avgpower2 = {}
|
||||
for id in theids:
|
||||
avgpower2[id] = 0
|
||||
return pd.Series([], dtype='float'), pd.Series([], dtype='float'), avgpower2
|
||||
|
||||
cpdf = getcpdata_sql(rower.id, table=table)
|
||||
|
||||
if not cpdf.empty:
|
||||
return cpdf['delta'], cpdf['cp'], avgpower2
|
||||
else:
|
||||
_ = myqueue(queuelow,
|
||||
handle_updatecp,
|
||||
rower.id,
|
||||
theids,
|
||||
table=table)
|
||||
|
||||
return pd.Series([], dtype='float'), pd.Series([], dtype='float'), avgpower2
|
||||
|
||||
return pd.Series([], dtype='float'), pd.Series([], dtype='float'), avgpower2
|
||||
|
||||
|
||||
def update_rolling_cp(r, types, mode='water', dosend=False):
|
||||
|
||||
@@ -205,7 +205,7 @@ def get_video_data(w, groups=['basic'], mode='water'):
|
||||
columns += [name for name, d in rowingmetrics if d['group']
|
||||
in groups and d['mode'] in modes]
|
||||
columns = list(set(columns))
|
||||
df = getsmallrowdata_db(columns, ids=[w.id],
|
||||
df = getsmallrowdata_pd(columns, ids=[w.id],
|
||||
workstrokesonly=False, doclean=False, compute=False)
|
||||
|
||||
df['time'] = (df['time']-df['time'].min())/1000.
|
||||
@@ -1772,7 +1772,7 @@ def read_cols_pl(ids, columns):
|
||||
if len(ids) == 0:
|
||||
return pl.DataFrame()
|
||||
|
||||
df = getsmallrowdata_pl(columns, ids=ids, doclean=False, compute=False)
|
||||
df = read_data(columns, ids=ids, doclean=False, compute=False)
|
||||
|
||||
if 'peakforce' in columns:
|
||||
funits = ((w.id, w.forceunit)
|
||||
@@ -1980,7 +1980,7 @@ def datafusion(id1, id2, columns, offset):
|
||||
|
||||
def fix_newtons(id=0, limit=3000): # pragma: no cover
|
||||
# rowdata,row = getrowdata_db(id=id,doclean=False,convertnewtons=False)
|
||||
rowdata = getsmallrowdata_db(['peakforce'], ids=[id], doclean=False)
|
||||
rowdata = read_data(['peakforce'], ids=[id], doclean=False)
|
||||
try:
|
||||
peakforce = rowdata['peakforce']
|
||||
if peakforce.mean() > limit:
|
||||
|
||||
@@ -1973,7 +1973,7 @@ def thumbnails_set(r, id, favorites):
|
||||
columns += [f.yparam2 for f in favorites]
|
||||
|
||||
columns += ['time']
|
||||
rowdata = dataprep.getsmallrowdata_db(columns, ids=[id], doclean=True)
|
||||
rowdata = dataprep.getsmallrowdata_pd(columns, ids=[id], doclean=True)
|
||||
|
||||
try:
|
||||
rowdata.dropna(axis=1, how='all', inplace=True)
|
||||
@@ -1987,7 +1987,7 @@ def thumbnails_set(r, id, favorites):
|
||||
|
||||
if rowdata.empty:
|
||||
try:
|
||||
rowdata = dataprep.getsmallrowdata_db(columns, ids=[id], doclean=False,
|
||||
rowdata = dataprep.getsmallrowdata_pd(columns, ids=[id], doclean=False,
|
||||
workstrokesonly=False)
|
||||
except: # pragma: no cover
|
||||
return [
|
||||
|
||||
@@ -18,13 +18,11 @@ import rowers.dataprep as dataprep
|
||||
import numpy as np
|
||||
import rowers.metrics as metrics
|
||||
import rowers.mytypes as mytypes
|
||||
from rowers.courses import get_time_course
|
||||
from rowers.utils import to_pace
|
||||
from rowers.opaque import encoder
|
||||
from rowingdata import rower as rrower
|
||||
from rowingdata import rowingdata as rrdata
|
||||
import arrow
|
||||
import pandas as pd
|
||||
import polars as pl
|
||||
import json
|
||||
|
||||
|
||||
@@ -58,6 +58,8 @@ class OwnApi(TestCase):
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
with patch('rowers.dataprep.read_data') as mock_read_data:
|
||||
mock_read_data.return_value = pl.read_csv('rowers/tests/testdata/colsfromdb.csv')
|
||||
url = reverse('strokedatajson',kwargs={'id':w.id})
|
||||
|
||||
request = self.factory.get(url)
|
||||
@@ -120,12 +122,15 @@ class OwnApi(TestCase):
|
||||
request = self.factory.get(url)
|
||||
request.user = self.u
|
||||
force_authenticate(request, user=self.u)
|
||||
with patch('rowers.dataprep.read_data') as mock_read_data:
|
||||
mock_read_data.return_value = pl.read_csv('rowers/tests/testdata/colsfromdb.csv')
|
||||
response = strokedatajson_v2(request,id=w.id)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
# response must be json
|
||||
strokedata = json.loads(response.content)
|
||||
df = pl.from_dicts(strokedata['data'])
|
||||
|
||||
self.assertFalse(df.is_empty())
|
||||
|
||||
|
||||
|
||||
@@ -108,8 +108,8 @@ class EmailUpload(TestCase):
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_uploadapi2(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_uploadapi2(self,mocked_sqlalchemy,mocked_read_data):
|
||||
form_data = {"secret": settings.UPLOAD_SERVICE_SECRET,
|
||||
"user": 1,
|
||||
"file": 'media/mailbox_attachments/colin3.csv',
|
||||
@@ -140,8 +140,8 @@ class EmailUpload(TestCase):
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_uploadapi3(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_uploadapi3(self,mocked_sqlalchemy,mocked_read_data):
|
||||
with transaction.atomic():
|
||||
form_data = {
|
||||
'title': 'test',
|
||||
@@ -167,8 +167,8 @@ class EmailUpload(TestCase):
|
||||
self.assertEqual(w.notes,'aap noot mies')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_uploadapi_credentials(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_uploadapi_credentials(self,mocked_sqlalchemy,mocked_read_data):
|
||||
form_data = {
|
||||
'title': 'test',
|
||||
'workouttype':'rower',
|
||||
|
||||
@@ -103,8 +103,8 @@ class WorkoutViewTest(TestCase):
|
||||
pass
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_flexchart_water(self, mocked_sqlalechemy, mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data')
|
||||
def test_flexchart_water(self, mocked_sqlalechemy, mocked_read_data):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
@@ -151,8 +151,8 @@ class WorkoutViewTest(TestCase):
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_flexchart_erg(self, mocked_sqlalechemy, mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data')
|
||||
def test_flexchart_erg(self, mocked_sqlalechemy, mocked_read_data):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
@@ -720,8 +720,8 @@ class NKObjects(DjangoTestCase):
|
||||
)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_nk_intervals(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_nk_intervals(self,mocked_sqlalchemy,mocked_read_data):
|
||||
with open('rowers/tests/testdata/carlos_workout.json','r') as f:
|
||||
workoutdata = json.load(f)
|
||||
with open('rowers/tests/testdata/carlos_strokes.json','r') as f:
|
||||
@@ -817,10 +817,10 @@ class NKObjects(DjangoTestCase):
|
||||
@patch('rowers.integrations.nk.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.integrations.nk.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.nkimportutils.requests.session', side_effect=mocked_session)
|
||||
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data', side_effect=mocked_read_data)
|
||||
def test_nk_import(self, mock_get, mock_post,
|
||||
mocked_session,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
|
||||
integration = NKIntegration(self.u)
|
||||
result = integration.token_refresh()
|
||||
@@ -854,10 +854,10 @@ class NKObjects(DjangoTestCase):
|
||||
@patch('rowers.integrations.nk.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.integrations.nk.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.nkimportutils.requests.session', side_effect=mocked_session)
|
||||
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data', side_effect=mocked_read_data)
|
||||
def test_nk_import_task(self, mock_get, mock_post,
|
||||
mocked_session,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
alldata = {
|
||||
469: {'elapsedTime': 3901900,
|
||||
'totalDistanceImp': 0,
|
||||
@@ -904,10 +904,10 @@ class NKObjects(DjangoTestCase):
|
||||
@patch('rowers.integrations.nk.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.integrations.nk.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.nkimportutils.requests.session', side_effect=mocked_session)
|
||||
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data', side_effect=mocked_read_data)
|
||||
def test_nk_import_impeller(self, mock_get, mock_post,
|
||||
mocked_session,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
|
||||
integration = NKIntegration(self.u)
|
||||
result = integration.token_refresh()
|
||||
@@ -1083,9 +1083,9 @@ class RP3Objects(DjangoTestCase):
|
||||
|
||||
@patch('rowers.integrations.rp3.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.integrations.rp3.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data', side_effect=mocked_read_data)
|
||||
def test_rp3_import(self, mock_get, mockpost,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
|
||||
response = self.c.get('/rowers/workout/rp3import/591621',follow=True)
|
||||
|
||||
@@ -1268,9 +1268,9 @@ class StravaObjects(DjangoTestCase):
|
||||
|
||||
@patch('rowers.utils.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.integrations.strava.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.read_data')
|
||||
def test_strava_import(self, mock_get, mock_post,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
|
||||
response = self.c.get('/rowers/workout/stravaimport/12',follow=True)
|
||||
expected_url = reverse('workout_import_view',kwargs={'source':'strava'})
|
||||
|
||||
@@ -51,16 +51,16 @@ class InteractiveChartTest(TestCase):
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart1(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_chart(self.wote.id)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart2(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_chart(self.wote.id,promember=1)
|
||||
|
||||
|
||||
@@ -80,52 +80,52 @@ class InteractiveChartTest(TestCase):
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart7(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,self.r,promember=0,
|
||||
xparam='time',
|
||||
yparam1='pace',yparam2='spm',mode='water')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart8(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,self.r,
|
||||
promember=0,xparam='distance',
|
||||
yparam1='pace',yparam2='spm',mode='water')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart9(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,self.r,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='hr',mode='water')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart10(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,self.r,
|
||||
promember=1,xparam='distance',
|
||||
yparam1='pace',yparam2='hr',mode='water')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart11(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,self.r,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='spm',mode='water')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_interactive_chart12(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_read_data):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,self.r,
|
||||
promember=1,
|
||||
xparam='distance',
|
||||
|
||||
@@ -911,8 +911,8 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
## Coach can upload on behalf of athlete - if team allows
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_coach_edit_athlete_upload(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_coach_edit_athlete_upload(self,mocked_sqlalchemy,mocked_read_data):
|
||||
self.rbasic.team.add(self.teamcoach)
|
||||
self.rbasic.coachinggroups.add(self.coachinggroup)
|
||||
|
||||
@@ -957,8 +957,8 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
## Coach can upload on behalf of athlete - if team allows
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_coach_edit_athlete_uploadnot(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_coach_edit_athlete_uploadnot(self,mocked_sqlalchemy,mocked_read_data):
|
||||
self.rbasic.team.add(self.teamcoach)
|
||||
|
||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||
@@ -1168,8 +1168,8 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
## Self Coach cannot upload on behalf of athlete
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_plan_edit_athlete_upload(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_plan_edit_athlete_upload(self,mocked_sqlalchemy,mocked_read_data):
|
||||
self.rpro.team.add(self.teamplan)
|
||||
|
||||
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
||||
@@ -1291,8 +1291,8 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
## Self Coach cannot upload on behalf of athlete
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_plan_edit_athlete_upload(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_plan_edit_athlete_upload(self,mocked_sqlalchemy,mocked_read_data):
|
||||
self.rpro.team.add(self.teamplan)
|
||||
|
||||
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
||||
|
||||
@@ -218,7 +218,7 @@ class PermissionsViewTests(TestCase):
|
||||
@patch('rowers.integrations.c2.C2Integration.open')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.read_data')
|
||||
@patch('requests.get',side_effect=mocked_requests)
|
||||
@patch('requests.post',side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data)
|
||||
@@ -228,7 +228,7 @@ class PermissionsViewTests(TestCase):
|
||||
mock_c2open,
|
||||
mocked_sqlalchemy,
|
||||
mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db,
|
||||
mocked_read_data,
|
||||
mock_get,
|
||||
mock_post,
|
||||
mocked_get_video_data,
|
||||
@@ -253,7 +253,7 @@ class PermissionsViewTests(TestCase):
|
||||
@patch('rowers.integrations.c2.C2Integration.open')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.read_data')
|
||||
@patch('requests.get',side_effect=mocked_requests)
|
||||
@patch('requests.post',side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data)
|
||||
@@ -263,7 +263,7 @@ class PermissionsViewTests(TestCase):
|
||||
mock_c2open,
|
||||
mocked_sqlalchemy,
|
||||
mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db,
|
||||
mocked_read_data,
|
||||
mock_get,
|
||||
mock_post,
|
||||
mocked_get_video_data,
|
||||
@@ -335,7 +335,7 @@ class PermissionsViewTests(TestCase):
|
||||
@patch('rowers.integrations.c2.C2Integration.open')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.read_data')
|
||||
@patch('requests.get',side_effect=mocked_requests)
|
||||
@patch('requests.post',side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data)
|
||||
@@ -345,7 +345,7 @@ class PermissionsViewTests(TestCase):
|
||||
mock_c2open,
|
||||
mocked_sqlalchemy,
|
||||
mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db,
|
||||
mocked_read_data,
|
||||
mock_get,
|
||||
mock_post,
|
||||
mocked_get_video_data,
|
||||
@@ -418,7 +418,7 @@ class PermissionsViewTests(TestCase):
|
||||
@patch('rowers.integrations.c2.C2Integration.open')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.read_data')
|
||||
@patch('requests.get',side_effect=mocked_requests)
|
||||
@patch('requests.post',side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data)
|
||||
@@ -428,7 +428,7 @@ class PermissionsViewTests(TestCase):
|
||||
mock_c2open,
|
||||
mocked_sqlalchemy,
|
||||
mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db,
|
||||
mocked_read_data,
|
||||
mock_get,
|
||||
mock_post,
|
||||
mocked_get_video_data,
|
||||
|
||||
@@ -193,7 +193,7 @@ class URLTests(TestCase):
|
||||
@parameterized.expand(lijst)
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.read_data')
|
||||
@patch('requests.get',side_effect=mocked_requests)
|
||||
@patch('requests.post',side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data)
|
||||
@@ -201,7 +201,7 @@ class URLTests(TestCase):
|
||||
def test_url_generator(self,url,expected,
|
||||
mocked_sqlalchemy,
|
||||
mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db,
|
||||
mocked_read_data,
|
||||
mock_get,
|
||||
mock_post,
|
||||
mocked_get_video_data,
|
||||
|
||||
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
@@ -1381,150 +1381,6 @@ def ajax_agegrouprecords(request,
|
||||
)
|
||||
|
||||
|
||||
@login_required()
|
||||
def otecp_toadmin_view(request, theuser=0,
|
||||
startdate=timezone.now() - datetime.timedelta(days=365),
|
||||
enddate=timezone.now(),
|
||||
startdatestring="",
|
||||
enddatestring="",
|
||||
): # pragma: no cover
|
||||
|
||||
if startdatestring != "": # pragma: no cover
|
||||
try:
|
||||
startdate = iso8601.parse_date(startdatestring)
|
||||
except ParseError:
|
||||
pass
|
||||
|
||||
if enddatestring != "": # pragma: no cover
|
||||
try:
|
||||
enddate = iso8601.parse_date(enddatestring)
|
||||
except ParseError:
|
||||
pass
|
||||
|
||||
if theuser == 0: # pragma: no cover
|
||||
theuser = request.user.id
|
||||
|
||||
u = User.objects.get(id=theuser)
|
||||
r = Rower.objects.get(user=u)
|
||||
|
||||
startdate = datetime.datetime.combine(startdate, datetime.time())
|
||||
enddate = datetime.datetime.combine(enddate, datetime.time(23, 59, 59))
|
||||
|
||||
theworkouts = Workout.objects.filter(
|
||||
user=r, rankingpiece=True,
|
||||
workouttype__in=[
|
||||
'rower',
|
||||
'dynamic',
|
||||
'slides'
|
||||
],
|
||||
startdatetime__gte=startdate,
|
||||
startdatetime__lte=enddate
|
||||
).order_by("-startdatetime")
|
||||
|
||||
delta, cpvalue, avgpower = dataprep.fetchcp(
|
||||
r, theworkouts, table='cpergdata'
|
||||
)
|
||||
|
||||
powerdf = pd.DataFrame({
|
||||
'Delta': delta,
|
||||
'CP': cpvalue,
|
||||
})
|
||||
|
||||
csvfilename = 'CP_data_user_{id}.csv'.format(
|
||||
id=theuser
|
||||
)
|
||||
|
||||
powerdf = powerdf[powerdf['CP'] > 0]
|
||||
powerdf.dropna(axis=0, inplace=True)
|
||||
powerdf.sort_values(['Delta', 'CP'], ascending=[1, 0], inplace=True)
|
||||
powerdf.drop_duplicates(subset='Delta', keep='first', inplace=True)
|
||||
powerdf.to_csv(csvfilename)
|
||||
|
||||
_ = myqueue(queuehigh,
|
||||
handle_sendemailfile,
|
||||
'Sander',
|
||||
'Roosendaal',
|
||||
'roosendaalsander@gmail.com',
|
||||
csvfilename,
|
||||
delete=True)
|
||||
|
||||
successmessage = "The CSV file was sent to the site admin per email"
|
||||
messages.info(request, successmessage)
|
||||
response = HttpResponseRedirect('/rowers/list-workouts/')
|
||||
|
||||
return response
|
||||
|
||||
|
||||
@login_required()
|
||||
def otwcp_toadmin_view(request, theuser=0,
|
||||
startdate=timezone.now() - datetime.timedelta(days=365),
|
||||
enddate=timezone.now(),
|
||||
startdatestring="",
|
||||
enddatestring="",
|
||||
): # pragma: no cover
|
||||
|
||||
if startdatestring != "":
|
||||
try:
|
||||
startdate = iso8601.parse_date(startdatestring)
|
||||
except ParseError:
|
||||
pass
|
||||
|
||||
if enddatestring != "":
|
||||
try:
|
||||
enddate = iso8601.parse_date(enddatestring)
|
||||
except ParseError:
|
||||
pass
|
||||
|
||||
if theuser == 0:
|
||||
theuser = request.user.id
|
||||
|
||||
u = User.objects.get(id=theuser)
|
||||
r = Rower.objects.get(user=u)
|
||||
|
||||
startdate = datetime.datetime.combine(startdate, datetime.time())
|
||||
enddate = datetime.datetime.combine(enddate, datetime.time(23, 59, 59))
|
||||
|
||||
theworkouts = Workout.objects.filter(
|
||||
user=r, rankingpiece=True,
|
||||
workouttype='water',
|
||||
startdatetime__gte=startdate,
|
||||
startdatetime__lte=enddate
|
||||
).order_by("-startdatetime")
|
||||
|
||||
delta, cpvalue, avgpower = dataprep.fetchcp(
|
||||
r, theworkouts, table='cpdata'
|
||||
)
|
||||
|
||||
powerdf = pd.DataFrame({
|
||||
'Delta': delta,
|
||||
'CP': cpvalue,
|
||||
})
|
||||
|
||||
csvfilename = 'CP_data_user_{id}.csv'.format(
|
||||
id=theuser
|
||||
)
|
||||
|
||||
powerdf = powerdf[powerdf['CP'] > 0]
|
||||
powerdf.dropna(axis=0, inplace=True)
|
||||
powerdf.sort_values(['Delta', 'CP'], ascending=[1, 0], inplace=True)
|
||||
powerdf.drop_duplicates(subset='Delta', keep='first', inplace=True)
|
||||
powerdf.to_csv(csvfilename)
|
||||
|
||||
_ = myqueue(queuehigh,
|
||||
handle_sendemailfile,
|
||||
'Sander',
|
||||
'Roosendaal',
|
||||
'roosendaalsander@gmail.com',
|
||||
csvfilename,
|
||||
delete=True)
|
||||
|
||||
successmessage = "The CSV file was sent to the site admin per email"
|
||||
messages.info(request, successmessage)
|
||||
response = HttpResponseRedirect('/rowers/list-workouts/')
|
||||
|
||||
return response
|
||||
|
||||
|
||||
|
||||
def agegrouprecordview(request, sex='male', weightcategory='hwt',
|
||||
distance=2000, duration=None):
|
||||
|
||||
Reference in New Issue
Block a user