From aa2315cb9b35eb730139ec5805473ed4e0f113f2 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 14 Apr 2021 13:06:34 +0200 Subject: [PATCH] removing some warnings --- rowers/dataprep.py | 2 - rowers/dataprepnodjango.py | 3 - rowers/interactiveplots.py | 53 +++++++------ rowers/tasks.py | 4 +- rowers/tests/statements.py | 3 + rowers/tests/test_analysis.py | 132 +++++++++++++++++++++++++++++-- rowers/tests/test_async_tasks.py | 3 + rowers/tests/test_aworkouts.py | 7 +- rowers/tests/test_imports.py | 16 ++-- rowers/tests/test_races.py | 6 +- rowers/views/analysisviews.py | 52 +++++++++--- rowers/views/workoutviews.py | 31 +++++++- 12 files changed, 250 insertions(+), 62 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index c91ea326..d7d7ae4b 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1858,7 +1858,6 @@ def parsenonpainsled(fileformat,f2,summary,startdatetime='',empowerfirmware=None if fileformat == 'nklinklogbook' and empowerfirmware is not None: if inboard is not None and oarlength is not None: row = NKLiNKLogbookParser(f2,firmware=empowerfirmware,inboard=inboard,oarlength=oarlength) - print(row,'aap') else: row = NKLiNKLogbookParser(f2) else: @@ -3038,7 +3037,6 @@ def dataprep(rowdatadf, id=0, bands=True, barchart=True, otwpower=True, df = dd.from_pandas(data,npartitions=1) df.to_parquet(filename,engine='fastparquet',compression='GZIP') - return data diff --git a/rowers/dataprepnodjango.py b/rowers/dataprepnodjango.py index e892d896..4c08ebb4 100644 --- a/rowers/dataprepnodjango.py +++ b/rowers/dataprepnodjango.py @@ -754,9 +754,6 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True, print("empty") return 0 - if debug: - print("dataprep",id) - # rowdatadf.set_index([range(len(rowdatadf))],inplace=True) t = rowdatadf.loc[:,'TimeStamp (sec)'] t = pd.Series(t-rowdatadf.loc[:,'TimeStamp (sec)'].iloc[0]) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 3887e29d..7c89a0bf 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1556,13 +1556,13 @@ def interactive_forcecurve(theworkouts,workstrokesonly=True,plottype='scatter'): slider_dist_max.js_on_change('value',callback) callback.args["maxdist"] = slider_dist_max - annotation.sizing_mode = 'fixed' - slider_spm_min.sizing_mode = 'fixed' - slider_spm_max.sizing_mode = 'fixed' - slider_work_min.sizing_mode = 'fixed' - slider_work_max.sizing_mode = 'fixed' - slider_dist_min.sizing_mode = 'fixed' - slider_dist_max.sizing_mode = 'fixed' + #annotation.sizing_mode = 'fixed' + #slider_spm_min.sizing_mode = 'fixed' + #slider_spm_max.sizing_mode = 'fixed' + #slider_work_min.sizing_mode = 'fixed' + #slider_work_max.sizing_mode = 'fixed' + #slider_dist_min.sizing_mode = 'fixed' + #slider_dist_max.sizing_mode = 'fixed' thesliders = layoutcolumn([annotation, slider_spm_min, @@ -1573,7 +1573,7 @@ def interactive_forcecurve(theworkouts,workstrokesonly=True,plottype='scatter'): slider_work_max, ] ) - thesliders.sizing_mode = 'fixed' + #thesliders.sizing_mode = 'fixed' layout = layoutrow([thesliders, plot]) @@ -3663,7 +3663,12 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower, success = 0 p1 = p0 if len(thesecs)>=4: - p1, success = optimize.leastsq(errfunc, p0[:], args = (thesecs,theavpower)) + try: + p1, success = optimize.leastsq(errfunc, p0[:], args = (thesecs,theavpower)) + except (RuntimeError,RuntimeWarning): + factor = fitfunc(p0,thesecs.mean())/theavpower.mean() + p1 = [p0[0]/factor,p0[1]/factor,p0[2],p0[3]] + success = 0 else: factor = fitfunc(p0,thesecs.mean())/theavpower.mean() p1 = [p0[0]/factor,p0[1]/factor,p0[2],p0[3]] @@ -4889,12 +4894,12 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, slider_dist_max.js_on_change('value',callback) callback.args["maxdist"] = slider_dist_max - slider_spm_min.sizing_mode = 'fixed' - slider_spm_max.sizing_mode = 'fixed' - slider_work_min.sizing_mode = 'fixed' - slider_work_max.sizing_mode = 'fixed' - slider_dist_min.sizing_mode = 'fixed' - slider_dist_max.sizing_mode = 'fixed' + #slider_spm_min.sizing_mode = 'fixed' + #slider_spm_max.sizing_mode = 'fixed' + #slider_work_min.sizing_mode = 'fixed' + #slider_work_max.sizing_mode = 'fixed' + #slider_dist_min.sizing_mode = 'fixed' + #slider_dist_max.sizing_mode = 'fixed' thesliders = layoutcolumn([slider_spm_min, slider_spm_max, @@ -4905,7 +4910,7 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, ], ) - thesliders.sizing_mode = 'fixed' + #thesliders.sizing_mode = 'fixed' layout = layoutrow([thesliders, plot]) @@ -5917,13 +5922,13 @@ def interactive_flex_chart2(id,r,promember=0, slider_dist_max.js_on_change('value',callback) callback.args["maxdist"] = slider_dist_max - annotation.sizing_mode = 'fixed' - slider_spm_min.sizing_mode = 'fixed' - slider_spm_max.sizing_mode = 'fixed' - slider_work_min.sizing_mode = 'fixed' - slider_work_max.sizing_mode = 'fixed' - slider_dist_min.sizing_mode = 'fixed' - slider_dist_max.sizing_mode = 'fixed' + #annotation.sizing_mode = 'fixed' + #slider_spm_min.sizing_mode = 'fixed' + #slider_spm_max.sizing_mode = 'fixed' + #slider_work_min.sizing_mode = 'fixed' + #slider_work_max.sizing_mode = 'fixed' + #slider_dist_min.sizing_mode = 'fixed' + #slider_dist_max.sizing_mode = 'fixed' thesliders = layoutcolumn([ annotation, @@ -5935,7 +5940,7 @@ def interactive_flex_chart2(id,r,promember=0, slider_work_max, ]) - thesliders.sizing_mode = 'fixed' + #thesliders.sizing_mode = 'fixed' layout = layoutrow([thesliders, plot]) diff --git a/rowers/tasks.py b/rowers/tasks.py index 30543fc3..4d8d4415 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -2205,6 +2205,7 @@ def cp_from_workoutids(workoutids,debug=False): if len(data)>1: df = pd.concat(data,axis=0) + df = df[df['cp'] == df.groupby(['delta'])['cp'].transform('max')] df = df.sort_values(['delta']).reset_index() @@ -2250,6 +2251,7 @@ def cp_from_workoutids(workoutids,debug=False): power2k = fitfunc(p1,t3) + return powerfourmin,power2k,powerhour @@ -2818,7 +2820,7 @@ def handle_setcp(strokesdf,filename,workoutid,debug=False,**kwargs): except FileNotFoundError: pass if not strokesdf.empty: - + try: totaltime = strokesdf['time'].max() except KeyError: diff --git a/rowers/tests/statements.py b/rowers/tests/statements.py index 6fe2c66e..40ebeefd 100644 --- a/rowers/tests/statements.py +++ b/rowers/tests/statements.py @@ -15,6 +15,9 @@ except NameError: import pytest +import warnings +#warnings.filterwarnings("error",category=RuntimeWarning) + pytestmark = pytest.mark.django_db from bs4 import BeautifulSoup diff --git a/rowers/tests/test_analysis.py b/rowers/tests/test_analysis.py index e7696316..f6204402 100644 --- a/rowers/tests/test_analysis.py +++ b/rowers/tests/test_analysis.py @@ -10,7 +10,6 @@ nu = datetime.datetime.now() from rowers.views import * - class WorkoutCompareTest(TestCase): def setUp(self): self.u = UserFactory() @@ -212,6 +211,9 @@ class ListWorkoutTest(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + startdate = arrow.get(startdate).datetime + enddate = arrow.get(startdate).datetime + form_data = { 'startdate':startdate, 'enddate':enddate, @@ -345,6 +347,16 @@ class CumStatsTest(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + url = '/rowers/cumstats/' response = self.c.get(url) @@ -382,6 +394,16 @@ class CumFlexTest(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + waterboattype = [u'1x', u'2x', u'2x+', @@ -402,7 +424,7 @@ class CumFlexTest(TestCase): 'modality':u'all', 'waterboattype': waterboattype, 'xaxis':'spm', - 'yaxis1':'driveenergy', + 'yaxis1':'hr', 'yaxis2':'power', } @@ -442,7 +464,7 @@ class CumFlexTest(TestCase): u'8+', u'8x+'], 'xparam': u'spm', - 'yparam1': u'driveenergy', + 'yparam1': u'hr', 'yparam2': u'power'} session = self.c.session @@ -487,6 +509,16 @@ class MultiFlexTest(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + waterboattype = [u'1x', u'2x', u'2x+', @@ -516,7 +548,7 @@ class MultiFlexTest(TestCase): 'workoutselectform':'Create Chart', 'xparam':'spm', 'yparam':'power', - 'groupby':'driveenergy', + 'groupby':'spm', } form = MultiFlexChoiceForm(form_data) @@ -536,7 +568,7 @@ class MultiFlexTest(TestCase): 'ploterrorbars':True, 'userid':0, 'palette': 'monochrome_blue', - 'groupby': 'driveenergy', + 'groupby': 'power', 'binsize': 1, 'xparam': 'spm', 'yparam': 'power', @@ -592,6 +624,16 @@ class HistoTest(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + waterboattype = [u'1x', u'2x', u'2x+', @@ -694,6 +736,16 @@ class WorkoutCompareTestNew(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + form_data = { 'function':'compare', 'xparam':'hr', @@ -783,6 +835,16 @@ class WorkoutBoxPlotTestNew(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + form_data = { 'function':'boxplot', 'xparam':'hr', @@ -871,6 +933,16 @@ class WorkoutHistoTestNew(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + form_data = { 'function':'histo', 'xparam':'hr', @@ -964,6 +1036,16 @@ class History(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=50)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=50)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + form_data = { 'startdate':startdate, 'enddate':enddate, @@ -1061,6 +1143,16 @@ class GoldMedalScores(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=50)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=50)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + form_data = { 'startdate':startdate, 'enddate':enddate, @@ -1126,6 +1218,16 @@ class WorkoutFlexallTestNew(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + form_data = { 'function':'flexall', 'xparam':'hr', @@ -1215,6 +1317,16 @@ class WorkoutStatsTestNew(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + options = { 'function':'flexall', 'xparam':'hr', @@ -1266,6 +1378,16 @@ class WorkoutStatsTestNew(TestCase): startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + form_data = { 'function':'stats', 'xparam':'hr', diff --git a/rowers/tests/test_async_tasks.py b/rowers/tests/test_async_tasks.py index 948385be..2fb6f2c1 100644 --- a/rowers/tests/test_async_tasks.py +++ b/rowers/tests/test_async_tasks.py @@ -34,6 +34,9 @@ class AsyncTaskTests(TestCase): self.c = Client() self.user_workouts = WorkoutFactory.create_batch(5, user=self.r) + for w in self.user_workouts: + res = dataprep.setcp(w) + self.factory = RequestFactory() self.password = faker.word() self.u.set_password(self.password) diff --git a/rowers/tests/test_aworkouts.py b/rowers/tests/test_aworkouts.py index 65aba97e..95c46902 100644 --- a/rowers/tests/test_aworkouts.py +++ b/rowers/tests/test_aworkouts.py @@ -14,8 +14,7 @@ from django.utils.six import BytesIO from PIL import Image from io import StringIO -import warnings -warnings.simplefilter("error") + def create_image(storage, filename, size=(100, 100), image_mode='RGB', image_format='PNG'): """ @@ -321,7 +320,7 @@ class WorkoutViewTest(TestCase): form_data = { 'xaxis':'time', 'yaxis1':'power', - 'yaxis2':'driveenergy', + 'yaxis2':'pace', 'yaxis3':'hr', 'yaxis4':'spm' } @@ -343,7 +342,7 @@ class WorkoutViewTest(TestCase): url = expected_url form_data = { - 'cols':['driveenergy','spm'] + 'cols':['hr','spm'] } form = DataFrameColumnsForm(form_data) diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py index 3369f533..4bfaa939 100644 --- a/rowers/tests/test_imports.py +++ b/rowers/tests/test_imports.py @@ -154,7 +154,7 @@ class C2Objects(DjangoTestCase): self.r.c2token = '12' self.r.c2refreshtoken = 'ab' - self.r.tokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1) + self.r.tokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime self.r.save() self.c.login(username='john',password='koeinsloot') @@ -195,7 +195,7 @@ class C2Objects(DjangoTestCase): def test_timezone_c2(self): data = c2stuff.createc2workoutdata(self.w) wenddtime = self.w.startdatetime-datetime.timedelta(seconds=self.totaltime) - + self.assertEqual(data['timezone'],'Europe/Amsterdam') self.assertEqual(data['date'],wenddtime.strftime('%Y-%m-%d %H:%M:%S')) @@ -309,7 +309,7 @@ class C2ObjectsTokenExpired(DjangoTestCase): self.r.c2token = '12' self.r.c2refreshtoken = 'ab' - self.r.tokenexpirydate = datetime.datetime.now()-datetime.timedelta(days=1) + self.r.tokenexpirydate = arrow.get(datetime.datetime.now()-datetime.timedelta(days=1)).datetime self.r.save() self.c.login(username='john',password='koeinsloot') @@ -386,7 +386,7 @@ class NKObjects(DjangoTestCase): self.r.nktoken = '12' self.r.nkrefreshtoken = '123' - self.r.nktokenexpirydate = datetime.datetime.now()-datetime.timedelta(days=1) + self.r.nktokenexpirydate = arrow.get(datetime.datetime.now()-datetime.timedelta(days=1)).datetime self.r.save() self.c.login(username='john',password='koeinsloot') @@ -532,7 +532,7 @@ class StravaObjects(DjangoTestCase): self.r.stravatoken = '12' self.r.stravarefreshtoken = '123' - self.r.stravatokenexpirydate = datetime.datetime.now()-datetime.timedelta(days=1) + self.r.stravatokenexpirydate = arrow.get(datetime.datetime.now()-datetime.timedelta(days=1)).datetime self.r.save() self.c.login(username='john',password='koeinsloot') @@ -639,7 +639,7 @@ class STObjects(DjangoTestCase): self.r.sporttrackstoken = '12' self.r.sporttracksrefreshtoken = '12' - self.r.sporttrackstokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1) + self.r.sporttrackstokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime self.r.save() self.c.login(username='john',password='koeinsloot') @@ -880,7 +880,7 @@ class UAObjects(DjangoTestCase): self.r.underarmourtoken = '12' self.r.underarmourrefreshtoken = '12' - self.r.underarmourtokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1) + self.r.underarmourtokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime self.r.save() self.c.login(username='john',password='koeinsloot') @@ -983,7 +983,7 @@ class TPObjects(DjangoTestCase): self.r.tptoken = '12' self.r.tprefreshtoken = '12' - self.r.tptokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1) + self.r.tptokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime self.r.save() self.c.login(username='john',password='koeinsloot') diff --git a/rowers/tests/test_races.py b/rowers/tests/test_races.py index ee1b6828..6f31a102 100644 --- a/rowers/tests/test_races.py +++ b/rowers/tests/test_races.py @@ -97,7 +97,7 @@ class ChallengesTest(TestCase): workouttype = 'water', ) - self.wthyro.startdatetime = nu + self.wthyro.startdatetime = arrow.get(nu).datetime self.wthyro.date = nu.date() self.wthyro.save() @@ -111,7 +111,7 @@ class ChallengesTest(TestCase): workouttype = 'water', ) - self.wthyro2.startdatetime = nu + self.wthyro2.startdatetime = arrow.get(nu).datetime self.wthyro2.date = nu.date() self.wthyro2.save() @@ -776,7 +776,7 @@ class IndoorChallengesTest(TestCase): workouttype = 'water', ) - self.werg.startdatetime = nu + self.werg.startdatetime = arrow.get(nu).datetime self.werg.date = nu.date() self.werg.save() diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 0b745133..113c5d69 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -182,6 +182,16 @@ def analysis_new(request,userid=0,function='boxplot',teamid=0,id=''): enddate = startdate startdate = s + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + negtypes = [] for b in mytypes.boattypes: if b[0] not in waterboattype: @@ -366,7 +376,7 @@ def trendflexdata(workouts, options,userid=0): datadf[groupby].max()+binsize, binsize) groups = datadf.groupby(pd.cut(datadf[groupby],bins,labels=False)) - except ValueError: + except (ValueError, AttributeError): return ('','Error: not enough data') else: bins = np.arange(datadf['days ago'].min()-binsize, @@ -426,7 +436,7 @@ def trendflexdata(workouts, options,userid=0): df['groupval'].loc[mask] = np.nan groupcols = df['groupval'] - except ValueError: + except (ValueError, AttributeError): df['groupval'] = groups.mean()[groupby].fillna(value=0) df['groupval'].loc[mask] = np.nan groupcols = df['groupval'] @@ -1917,6 +1927,8 @@ def rankings_view(request,userid=0, startdate = datetime.datetime.combine(startdate,datetime.time()) enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) #enddate = enddate+datetime.timedelta(days=1) + startdate = arrow.get(startdate).datetime + enddate = arrow.get(enddate).datetime thedistances = [] theworkouts = [] @@ -2324,7 +2336,8 @@ def rankings_view2(request,userid=0, startdate = datetime.datetime.combine(startdate,datetime.time()) enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) #enddate = enddate+datetime.timedelta(days=1) - + startdate = arrow.get(startdate).datetime + enddate = arrow.get(enddate).datetime thedistances = [] theworkouts = [] @@ -2438,7 +2451,7 @@ def rankings_view2(request,userid=0, pwr = 2.8*(velo**3) try: pwr = int(pwr) - except ValueError: + except (ValueError, AttributeError): pwr = 0 a = {'distance':rankingdistance, @@ -2675,7 +2688,8 @@ def otwrankings_view(request,userid=0, enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) #enddate = enddate+datetime.timedelta(days=1) - + startdate = arrow.get(startdate).datetime + enddate = arrow.get(enddate).datetime thedistances = [] theworkouts = [] @@ -3087,7 +3101,8 @@ def oterankings_view(request,userid=0, startdate = datetime.datetime.combine(startdate,datetime.time()) enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) - + startdate = arrow.get(startdate).datetime + enddate = arrow.get(enddate).datetime thedistances = [] theworkouts = [] @@ -3436,6 +3451,16 @@ def user_multiflex_select(request, else: rankingpiece = [True,False] + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass + workouts = Workout.objects.filter( user=r, startdatetime__gte=startdate, @@ -3638,7 +3663,7 @@ def multiflex_data(request,userid=0, datadf[groupby].max()+binsize, binsize) groups = datadf.groupby(pd.cut(datadf[groupby],bins,labels=False)) - except ValueError: + except (ValueError, AttributeError): messages.error( request, "Unable to compete. Probably not enough data selected" @@ -3703,7 +3728,7 @@ def multiflex_data(request,userid=0, df['groupval'].loc[mask] = np.nan groupcols = df['groupval'] - except ValueError: + except (ValueError, AttributeError): df['groupval'] = groups.mean()[groupby].fillna(value=0) df['groupval'].loc[mask] = np.nan groupcols = df['groupval'] @@ -4079,6 +4104,15 @@ def user_boxplot_select(request, if b[0] not in waterboattype: negtypes.append(b[0]) + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except (ValueError, AttributeError): + pass + try: + enddate = pytz.utc.localize(enddate) + except (ValueError, AttributeError): + pass workouts = Workout.objects.filter(user=r, startdatetime__gte=startdate, @@ -5338,7 +5372,7 @@ def history_view_data(request,userid=0): ddict['hrmean'] = int(wavg(ddf,'hr','deltat')) try: ddict['hrmax'] = ddf['hr'].max().astype(int) - except ValueError: + except (ValueError, AttributeError): ddict['hrmax'] = 0 ddict['powermean'] = int(wavg(ddf,'power','deltat')) diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 13f40ea5..683ebb1a 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -968,6 +968,10 @@ def video_selectworkout(request,userid=0): startdate = datetime.datetime.combine(startdate,datetime.time()) enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) + # make sure the dates are not naive + startdate = pytz.utc.localize(startdate) + enddate = pytz.utc.localize(enddate) + if enddate < startdate: # pragma: no cover s = enddate enddate = startdate @@ -1112,6 +1116,16 @@ def workouts_join_select(request, enddate = startdate startdate = s + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except ValueError: + pass + try: + enddate = pytz.utc.localize(enddate) + except ValueError: + pass + workouts = Workout.objects.filter(user=r, startdatetime__gte=startdate, @@ -1338,6 +1352,16 @@ def team_comparison_select(request, except Team.DoesNotExist: theteam = 0 + # make sure the dates are not naive + try: + startdate = pytz.utc.localize(startdate) + except ValueError: + pass + try: + enddate = pytz.utc.localize(enddate) + except ValueError: + pass + if theteam and (theteam.viewing == 'allmembers' or theteam.manager == request.user): workouts = Workout.objects.filter(team=theteam, startdatetime__gte=startdate, @@ -1964,7 +1988,7 @@ def workouts_view(request,message='',successmessage='', activity_startdate = activity_startdate.replace(hour=0,minute=0,second=0) else: activity_enddate = enddate - except ValueError: # pragma: no cover + except (ValueError, AttributeError): # pragma: no cover activity_enddate = enddate g_startdate = activity_startdate @@ -2156,6 +2180,9 @@ def workout_fusion_list(request,id=0, enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) #enddate = enddate+datetime.timedelta(days=1) + startdate = arrow.get(startdate).datetime + enddate = arrow.get(enddate).datetime + if enddate < startdate: # pragma: no cover s = enddate enddate = startdate @@ -3959,8 +3986,6 @@ def workout_flexchart_stacked_view(request,*args,**kwargs): if request.method == 'POST': flexaxesform = StravaChartForm(request,request.POST) - if not flexaxesform.is_valid(): - print(flexaxesform.errors) if flexaxesform.is_valid(): cd = flexaxesform.cleaned_data xparam = cd['xaxis']