diff --git a/rowers/dataprep.py b/rowers/dataprep.py index d7d7ae4b..c3ba06d2 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -997,44 +997,6 @@ def updatecpdata_sql(rower_id,delta,cp,table='cpdata',distance=[]): conn.close() engine.dispose() - -def runcpupdate( - rower,type='water', - startdate=timezone.now()-datetime.timedelta(days=365), - enddate=timezone.now()+datetime.timedelta(days=5) -): - if type == 'water': - theworkouts = Workout.objects.filter( - user=rower,rankingpiece=True, - workouttype='water', - startdatetime__gte=startdate, - startdatetime__lte=enddate - ) - table = 'cpdata' - else: - theworkouts = Workout.objects.filter( - user=rower,rankingpiece=True, - workouttype__in=[ - 'rower', - 'dynamic', - 'slides' - ], - startdatetime__gte=startdate, - startdatetime__lte=enddate - ) - table = 'cpergdata' - - theids = [w.id for w in theworkouts] - - job = myqueue( - queuelow, - handle_updatecp, - rower.id, - theids, - table=table) - - return job - def fetchcperg(rower,theworkouts): theids = [int(w.id) for w in theworkouts] thefilenames = [w.csvfilename for w in theworkouts] diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index b406619d..aebb4825 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -4577,18 +4577,18 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, # test if we have drive energy nowork = 1 - try: + try: # pragma: no cover test = datadf['driveenergy'].mean() nowork = 0 - except KeyError: + except KeyError: # pragma: no cover datadf['driveenergy'] = 500. # test if we have power nopower = 1 - try: + try: # pragma: no cover test = datadf['power'].mean() nopower = 0 - except KeyError: + except KeyError: # pragma: no cover datadf['power'] = 50. diff --git a/rowers/tasks.py b/rowers/tasks.py index 7b32ebe7..36008a98 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -2182,85 +2182,6 @@ def handle_updateergcp(rower_id,workoutfilenames,debug=False,**kwargs): return 1 -def cp_from_workoutids(workoutids,debug=False): - columns = ['power','workoutid','time'] - df = getsmallrowdata_db(columns,ids=workoutids,debug=debug) - df.dropna(inplace=True,axis=0) - - if df.empty: # pragma: no cover - # change this - return 0,0,0 - - # df is not empty. We continue - dfgrouped = df.groupby(['workoutid']) - maxt = 1.05*df['time'].max()/1000. - - logarr = datautils.getlogarr(maxt) - data = [] - - for id in workoutids: - cpfile = 'media/cpdata_{id}.parquet.gz'.format(id=id) - try: - df = pd.read_parquet(cpfile) - df['workout'] = str(id) - data.append(df) - except: # pragma: no cover - pass # ignore for now - - if len(data) == 0: # pragma: no cover - return 0,0,0 - if len(data)>1: # pragma: no cover - df = pd.concat(data,axis=0) - - - df = df[df['cp'] == df.groupby(['delta'])['cp'].transform('max')] - df = df.sort_values(['delta']).reset_index() - - powerdf = pd.DataFrame({ - 'Delta':df['delta'], - 'CP':df['cp'], - }) - - 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) - - p1,fitt,fitpower,ratio = datautils.cpfit(powerdf) - # This is code duplication from datautils -- correct asap - fitfunc = lambda pars,x: abs(pars[0])/(1+(x/abs(pars[2]))) + abs(pars[1])/(1+(x/abs(pars[3]))) - - powerfourmin = fitfunc(p1,240.) - powerhour = fitfunc(p1,3600.) - - # 2k power - velofourmin = (powerfourmin/2.8)**(1./3.) - dfourmin = 240.*velofourmin - dratio = 2000./dfourmin - pacefourmin = 500./velofourmin - - # assume 5 sec per doubling drop - pace2k = pacefourmin + 5.*np.log10(dratio)/np.log10(2.) - velo2k = 500./pace2k - t2k = 2000./velo2k - pwr2k = fitfunc(p1,t2k) - velo2 = (pwr2k/2.8)**(1./3.) - if np.isnan(velo2) or velo2 <= 0: # pragma: no cover - velo2 = 1.0 - - t2 = 2000./velo2 - - pwr2k = fitfunc(p1,t2) - - velo3 = (pwr2k/2.8)**(1./3.) - - t3 = 2000./velo3 - - power2k = fitfunc(p1,t3) - - - return powerfourmin,power2k,powerhour - @app.task @@ -2834,7 +2755,7 @@ def handle_setcp(strokesdf,filename,workoutid,debug=False,**kwargs): return 0 try: powermean = strokesdf['power'].mean() - except KeyError: + except KeyError: # pragma: no cover powermean = 0 @@ -3302,7 +3223,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu 'resolution': 'medium',} url = "https://www.strava.com/api/v3/activities/"+str(stravaid) response = requests.get(url,headers=headers) - if response.status_code != 200: + if response.status_code != 200: # pragma: no cover tstamp = time.localtime() timestamp = time.strftime('%b-%d-%Y_%H%M', tstamp) with open('strava_webhooks.log','a') as f: @@ -3329,7 +3250,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu try: startdatetime = workoutsummary['start_date'] - except KeyError: + except KeyError: # pragma: no cover startdatetime = timezone.now() spm = get_strava_stream(None,'cadence',stravaid,authorizationstring=authorizationstring) @@ -3352,7 +3273,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu if t is not None: nr_rows = len(t) - else: + else: # pragma: no cover try: duration = int(workoutsummary['elapsed_time']) except KeyError: @@ -3362,22 +3283,22 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu nr_rows = len(t) - if nr_rows == 0: + if nr_rows == 0: # pragma: no cover return 0 - if d is None: + if d is None: # pragma: no cover d = 0*t - if spm is None: + if spm is None: # pragma: no cover spm = np.zeros(nr_rows) - if power is None: + if power is None: # pragma: no cover power = np.zeros(nr_rows) - if hr is None: + if hr is None: # pragma: no cover hr = np.zeros(nr_rows) - if velo is None: + if velo is None: # pragma: no cover velo = np.zeros(nr_rows) dt = np.diff(t).mean() @@ -3389,10 +3310,10 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu try: lat = coords[:,0] lon = coords[:,1] - except IndexError: + except IndexError: # pragma: no cover lat = np.zeros(len(t)) lon = np.zeros(len(t)) - else: + else: # pragma: no cover lat = np.zeros(len(t)) lon = np.zeros(len(t)) @@ -3419,13 +3340,13 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu try: workouttype = mytypes.stravamappinginv[workoutsummary['type']] - except KeyError: + except KeyError: # pragma: no cover workouttype = 'other' - if workouttype.lower() == 'rowing': + if workouttype.lower() == 'rowing': # pragma: no cover workouttype = 'rower' - if 'summary_polyline' in workoutsummary['map'] and workouttype=='rower': + if 'summary_polyline' in workoutsummary['map'] and workouttype=='rower': # pragma: no cover workouttype = 'water' try: @@ -3442,7 +3363,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu rowdatetime = iso8601.parse_date(workoutsummary['date_utc']) except KeyError: rowdatetime = iso8601.parse_date(workoutsummary['start_date']) - except ParseError: + except ParseError: # pragma: no cover rowdatetime = iso8601.parse_date(workoutsummary['date']) @@ -3454,7 +3375,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu try: title = workoutsummary['name'] - except KeyError: + except KeyError: # pragma: no cover title = "" try: t = data['comments'].split('\n', 1)[0] @@ -3476,9 +3397,9 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu try: latcoord = strokedata.loc[:,'lat'] loncoord = strokedata.loc[:,'lon'] - if latcoord.std() == 0 and loncoord.std() == 0 and workouttype == 'water': + if latcoord.std() == 0 and loncoord.std() == 0 and workouttype == 'water': # pragma: no cover workouttype = 'rower' - except: + except: # pragma: no cover latcoord = np.zeros(nr_rows) loncoord = np.zeros(nr_rows) if workouttype == 'water': @@ -3488,19 +3409,19 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu try: strokelength = strokedata.loc[:,'strokelength'] - except: + except: # pragma: no cover strokelength = np.zeros(nr_rows) dist2 = 0.1*strokedata.loc[:,'d'] try: spm = strokedata.loc[:,'spm'] - except KeyError: + except KeyError: # pragma: no cover spm = 0*dist2 try: hr = strokedata.loc[:,'hr'] - except KeyError: + except KeyError: # pragma: no cover hr = 0*spm pace = strokedata.loc[:,'p']/10. pace = np.clip(pace,0,1e4) diff --git a/rowers/tests/test_async_tasks.py b/rowers/tests/test_async_tasks.py index ee39dbb8..745880ca 100644 --- a/rowers/tests/test_async_tasks.py +++ b/rowers/tests/test_async_tasks.py @@ -517,13 +517,6 @@ class AsyncTaskTests(TestCase): res = tasks.handle_updateergcp(1,[f1]) self.assertEqual(res,1) - @patch('rowers.dataprepnodjango.getsmallrowdata_db') - def test_cp_from_workoutids(self,mocked_getsmallrowdata_db): - ids = [1] - powerfourmin,power2k,powerhour = tasks.cp_from_workoutids(ids) - self.assertFalse(powerfourmin==0) - self.assertFalse(power2k==0) - self.assertFalse(powerhour==0) @patch('rowers.dataprepnodjango.getsmallrowdata_db') def test_handle_updatecp(self,mocked_getsmallrowdata_db): diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 9486d1a5..a273601f 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -4415,9 +4415,6 @@ def workout_edit_view(request,id=0,message="",successmessage=""): successmessage = "Changes saved" - if rankingpiece: # pragma: no cover - dataprep.runcpupdate(row.user,type=row.workouttype) - messages.info(request,successmessage) else: form = WorkoutForm(instance=row)