diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 018dc8ae..e73bc863 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -73,6 +73,7 @@ import pytz import collections import pendulum from rowingdata import rowingdata as rrdata +from rowingdata import rowingdata_pl as rrdata_pl from rowingdata import rower as rrower @@ -618,6 +619,8 @@ def update_wps(r, types, mode='water', asynchron=True): r.save() except ValueError: # pragma: no cover pass + except OverflowError: + pass return True @@ -1397,6 +1400,11 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', w.team.add(t) # put stroke data in database + try: + row = rrdata_pl(df=pl.from_pandas(row.df)) + except: + pass + _ = dataplep(row.df, id=w.id, bands=True, barchart=True, otwpower=True, empower=True, inboard=inboard) diff --git a/rowers/dataroutines.py b/rowers/dataroutines.py index 52a52cba..f545f843 100644 --- a/rowers/dataroutines.py +++ b/rowers/dataroutines.py @@ -1982,24 +1982,31 @@ def dataplep(rowdatadf, id=0, inboard=0.88, forceunit='lbs', bands=True, barchar empower=True, debug=False, polars=True ): # rowdatadf is pd.DataFrame - if rowdatadf.empty: - return 0 + + + if isinstance(rowdatadf, pd.DataFrame): + if rowdatadf.empty: + return 0 - try: - df = pl.from_pandas(rowdatadf) - except ArrowInvalid: - for k, v in dtypes.items(): - try: - rowdatadf[k] = rowdatadf[k].astype(v) - except KeyError: # pragma: no cover - pass try: df = pl.from_pandas(rowdatadf) except ArrowInvalid: - return dataprep(rowdatadf, id=id, inboard=inboard, forceunit=forceunit, bands=bands, barchart=barchart, - otwpower=otwpower, debug=debug,polars=True) - + for k, v in dtypes.items(): + try: + rowdatadf[k] = rowdatadf[k].astype(v) + except KeyError: # pragma: no cover + pass + try: + df = pl.from_pandas(rowdatadf) + except ArrowInvalid: + return dataprep(rowdatadf, id=id, inboard=inboard, forceunit=forceunit, bands=bands, barchart=barchart, + otwpower=otwpower, debug=debug,polars=True) + else: + df = rowdatadf + if df.is_empty(): + return 0 + df = df.with_columns((pl.col("TimeStamp (sec)")-df[0, "TimeStamp (sec)"]).alias("TimeStamp (sec)")) df = df.with_columns((pl.col(" Stroke500mPace (sec/500m)").clip(1,3000)).alias(" Stroke500mPace")) if ' AverageBoatSpeed (m/s)' not in df.columns: diff --git a/rowers/templates/menu_workout.html b/rowers/templates/menu_workout.html index 49c9f361..f61797f6 100644 --- a/rowers/templates/menu_workout.html +++ b/rowers/templates/menu_workout.html @@ -289,31 +289,6 @@