diff --git a/rowers/dataprep.py b/rowers/dataprep.py index bfd68570..acceef39 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -766,8 +766,12 @@ def fetchcp_new(rower, workouts): if len(data) > 1: df = pl.concat(data) + try: - df = df.group_by(pl.col("delta")).agg(pl.max("cp"), pl.max("workout"), pl.max("url")).sort("delta") + #df = df.group_by(pl.col("delta")).agg(pl.max("cp"), pl.max("workout"), pl.max("url")).sort("delta") + df = df.groupby('delta').agg([ + pl.all().sort_by('cp').last(), + ]) except (KeyError, ColumnNotFoundError): # pragma: no cover return pl.Series(dtype=pl.Float64), pl.Series(dtype=pl.Float64), 0, pl.Series(dtype=pl.Float64), pl.Series(dtype=pl.Float64) @@ -1077,7 +1081,7 @@ def checkbreakthrough(w, r): r.user.email, r.user.first_name, r.user.last_name, - btvalues=btvalues.write_json()) + btvalues=btvalues.write_json(row_oriented=True)) for coach in r.get_coaches(): if coach.getemailnotifications and not coach.emailbounced: _ = myqueue(queuehigh, handle_sendemail_breakthrough, @@ -1085,7 +1089,7 @@ def checkbreakthrough(w, r): coach.user.email, r.user.first_name, r.user.last_name, - btvalues=btvalues.write_json(), + btvalues=btvalues.write_json(row_oriented=True), surname=True) # submit email task to send email about breakthrough workout diff --git a/rowers/emails.py b/rowers/emails.py index f0d4c0d9..424540dc 100644 --- a/rowers/emails.py +++ b/rowers/emails.py @@ -13,7 +13,7 @@ from scipy import optimize import rowingdata from rowingdata import rowingdata as rdata - +from rowers.utils import dologging from celery import app import datetime import pytz @@ -132,7 +132,8 @@ def send_template_email(from_email, to_email, subject, except User.DoesNotExist: pass except Exception as e: - pass + dologging('tasks.log',e) + if not emailbounced: res = msg.send() diff --git a/rowers/tasks.py b/rowers/tasks.py index cf19d8dc..4dc9fc90 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -2160,10 +2160,13 @@ def handle_sendemail_breakthrough(workoutid, useremail, surname=False, **kwargs): + dologging('tasks.log',btvalues) btvalues = pd.read_json(btvalues) + try: btvalues.sort_values('delta', axis=0, inplace=True) except KeyError: + dologging('tasks.log','KeyError') return 0 lastname = '' diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index f4be04e3..cb98d752 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/utils.py b/rowers/utils.py index 9e7d5054..ee7ca475 100644 --- a/rowers/utils.py +++ b/rowers/utils.py @@ -361,9 +361,12 @@ def isbreakthrough(delta, cpvalues, p0, p1, p2, p3, ratio): pwr *= ratio - delta = delta.cast(pl.Int32) - cpvalues = cpvalues.cast(pl.Int32) - pwr = pwr.cast(pl.Int32) + try: + delta = delta.cast(pl.Int32) + cpvalues = cpvalues.cast(pl.Int32) + pwr = pwr.cast(pl.Int32) + except: + return False, pl.DataFrame(), False btdf = pl.DataFrame({ 'delta': delta,