diff --git a/rowers/courses.py b/rowers/courses.py index d3eab241..060d15ae 100644 --- a/rowers/courses.py +++ b/rowers/courses.py @@ -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) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 275f8684..4c8e94a9 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -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): diff --git a/rowers/dataroutines.py b/rowers/dataroutines.py index 467fc5ce..083dce8d 100644 --- a/rowers/dataroutines.py +++ b/rowers/dataroutines.py @@ -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: diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 06fe2637..597b5158 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -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 [ @@ -1996,12 +1996,12 @@ def thumbnails_set(r, id, favorites): 'notes': "" }] - if rowdata.empty: - return [ - {'script': "", - 'div': "", - 'notes': "" - }] + if rowdata.empty: + return [ + {'script': "", + 'div': "", + 'notes': "" + }] lengte = len(rowdata) maxlength = 50 diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index dc2c4a08..5d49e59e 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -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 diff --git a/rowers/tests/test_api.py b/rowers/tests/test_api.py index e17c3532..3aee087e 100644 --- a/rowers/tests/test_api.py +++ b/rowers/tests/test_api.py @@ -58,20 +58,22 @@ class OwnApi(TestCase): response = self.c.get(url) self.assertEqual(response.status_code,200) - url = reverse('strokedatajson',kwargs={'id':w.id}) + 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) - request.user = self.u - force_authenticate(request, user=self.u) - response = strokedatajson(request,id=w.id) - self.assertEqual(response.status_code,200) + request = self.factory.get(url) + request.user = self.u + force_authenticate(request, user=self.u) + response = strokedatajson(request,id=w.id) + self.assertEqual(response.status_code,200) - # response must be json - - strokedata = json.loads(response.content) - df = pl.from_dict(strokedata) + # response must be json + + strokedata = json.loads(response.content) + df = pl.from_dict(strokedata) - self.assertFalse(df.is_empty()) + self.assertFalse(df.is_empty()) form_data = { "distance": [23, 46, 48], @@ -120,12 +122,15 @@ class OwnApi(TestCase): request = self.factory.get(url) request.user = self.u force_authenticate(request, user=self.u) - response = strokedatajson_v2(request,id=w.id) - 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') + 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']) - # response must be json - strokedata = json.loads(response.content) - df = pl.from_dicts(strokedata['data']) self.assertFalse(df.is_empty()) diff --git a/rowers/tests/test_emails.py b/rowers/tests/test_emails.py index a606263d..ae26ef5e 100644 --- a/rowers/tests/test_emails.py +++ b/rowers/tests/test_emails.py @@ -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', diff --git a/rowers/tests/test_flexchart.py b/rowers/tests/test_flexchart.py index d66d20ea..455eb1d8 100644 --- a/rowers/tests/test_flexchart.py +++ b/rowers/tests/test_flexchart.py @@ -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) diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py index d5e9470d..78818eb5 100644 --- a/rowers/tests/test_imports.py +++ b/rowers/tests/test_imports.py @@ -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'}) diff --git a/rowers/tests/test_interactivecharts.py b/rowers/tests/test_interactivecharts.py index 2d217f0b..c46855f8 100644 --- a/rowers/tests/test_interactivecharts.py +++ b/rowers/tests/test_interactivecharts.py @@ -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', diff --git a/rowers/tests/test_permissions.py b/rowers/tests/test_permissions.py index 2f527fda..4ee00a3b 100644 --- a/rowers/tests/test_permissions.py +++ b/rowers/tests/test_permissions.py @@ -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) diff --git a/rowers/tests/test_permissions2.py b/rowers/tests/test_permissions2.py index 52d495aa..074f4e7f 100644 --- a/rowers/tests/test_permissions2.py +++ b/rowers/tests/test_permissions2.py @@ -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, diff --git a/rowers/tests/test_urls.py b/rowers/tests/test_urls.py index 5d19c820..4f2d6d9c 100644 --- a/rowers/tests/test_urls.py +++ b/rowers/tests/test_urls.py @@ -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, @@ -212,7 +212,7 @@ class URLTests(TestCase): self.assertTrue(login) response = self.c.get(url,follow=True) if response.status_code != expected: - print(url ) + print(url) print(response.status_code) self.assertEqual(response.status_code, diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 4ed63f16..fc88d493 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 2b27ed6e..ec51ac2d 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -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):