Private
Public Access
1
0
This commit is contained in:
2024-06-12 17:52:09 +02:00
parent 09a00f4ac6
commit 37389def6a
8 changed files with 34 additions and 13 deletions

View File

@@ -17,6 +17,7 @@ import rowers.c2stuff as c2stuff
import rowers.metrics as metrics import rowers.metrics as metrics
import rowers.dataprep as dataprep import rowers.dataprep as dataprep
from rowers.dataprep import rdata from rowers.dataprep import rdata
from rowers.dataroutines import remove_nulls_pl
import rowers.utils as utils import rowers.utils as utils
import polars as pl import polars as pl
import pytz import pytz
@@ -1205,6 +1206,7 @@ def forcecurve_multi_interactive_chart(selected): # pragma: no cover
rowdata = dataprep.read_data(columns, ids=workoutids, rowdata = dataprep.read_data(columns, ids=workoutids,
workstrokesonly=False) workstrokesonly=False)
rowdata = remove_nulls_pl(rowdata)
rowdata = rowdata.fill_nan(None).drop_nulls() rowdata = rowdata.fill_nan(None).drop_nulls()
if rowdata.is_empty(): if rowdata.is_empty():
@@ -1225,7 +1227,7 @@ def forcecurve_multi_interactive_chart(selected): # pragma: no cover
'forcecurve_analyses': selected_dict, 'forcecurve_analyses': selected_dict,
} }
script, div = get_chart("/forcecurve_compare", chart_data) script, div = get_chart("/forcecurve_compare", chart_data, debug=False)
return script, div return script, div
@@ -2224,11 +2226,11 @@ def get_zones_report_pl(rower, startdate, enddate, trainingzones='hr', date_agg=
pw_tr = rower.pw_tr pw_tr = rower.pw_tr
pw_an = rower.pw_an pw_an = rower.pw_an
if iswater: if iswater:
pw_ut2 = pw_ut2*rower.otwslack/100. pw_ut2 = pw_ut2*(100.-rower.otwslack)/100.
pw_ut1 = pw_ut1*rower.otwslack/100. pw_ut1 = pw_ut1*(100.-rower.otwslack)/100.
pw_at = pw_at*rower.otwslack/100. pw_at = pw_at*(100.-rower.otwslack)/100.
pw_tr = pw_tr*rower.otwslack/100. pw_tr = pw_tr*(100.-rower.otwslack)/100.
pw_an = pw_an*rower.otwslack/100. pw_an = pw_an*(100.-rower.otwslack)/100.
# 1 # 1
time_ut2 = df.filter( time_ut2 = df.filter(

View File

@@ -3996,7 +3996,11 @@ def fetch_strava_workout(stravatoken, oauth_data, stravaid, csvfilename, userid,
df.sort('TimeStamp (sec)') df.sort('TimeStamp (sec)')
row = rowingdata.rowingdata_pl(df=df) row = rowingdata.rowingdata_pl(df=df)
row.write_csv(csvfilename, compressed=False) try:
row.write_csv(csvfilename, compressed=False)
except ComputeError:
row = rowingdata.rowingdata(df=df)
row.write_csv(csvfilename, compressed=False)
# summary = row.allstats() # summary = row.allstats()
# maxdist = df['cum_dist'].max() # maxdist = df['cum_dist'].max()

View File

@@ -389,14 +389,14 @@
</script> </script>
<div id="id_script">
</div>
<ul class="main-content"> <ul class="main-content">
<canvas hidden id="canvas"></canvas> <canvas hidden id="canvas"></canvas>
<li class="grid_4"> <li class="grid_4">
<div id="id_chart"> <div id="id_chart">
{{ the_div|safe }} {{ the_div|safe }}
</div> </div>
<div id="id_script">
</div>
</li> </li>
<li class="grid_4"> <li class="grid_4">
<p>You can use the date and search forms to search through all <p>You can use the date and search forms to search through all

View File

@@ -109,6 +109,20 @@ from rowers.opaque import encoder
import inspect import inspect
class MyTestCase(TestCase):
def setUp(self):
self.osm_mock = patch('something')
self.osm_mock.return_value = ""
super(MyTestCase, self).setUp()
self.osm_mock.start()
def tearDown(self):
super(MyTestCase, self).tearDown()
self.osm_mock.stop()
def get_random_file(filename='rowers/tests/testdata/testdata.csv',name=''): def get_random_file(filename='rowers/tests/testdata/testdata.csv',name=''):
frm = inspect.stack()[3] frm = inspect.stack()[3]

View File

@@ -13,7 +13,7 @@ import rowers.courses as courses
import rowers.plannedsessions as plannedsessions import rowers.plannedsessions as plannedsessions
@override_settings(TESTING=True) @override_settings(TESTING=True)
class VirtualEventViewTest(TestCase): class VirtualEventViewTest(MyTestCase):
def setUp(self): def setUp(self):
# Main User # Main User
self.u = UserFactory() self.u = UserFactory()

Binary file not shown.

View File

@@ -1594,7 +1594,6 @@ class SavedAnalysisView(UserPassesTestMixin, View):
def post(self, request, *args, **kwargs): # pragma: no cover def post(self, request, *args, **kwargs): # pragma: no cover
form = self.form_class(request.POST) form = self.form_class(request.POST)
if form.is_valid(): if form.is_valid():
cd = form.cleaned_data cd = form.cleaned_data
self.selected = cd['analyses'] self.selected = cd['analyses']

View File

@@ -652,7 +652,7 @@ def rower_process_testcallback(request): # pragma: no cover
@user_passes_test(ispromember, login_url="/rowers/paidplans/", @user_passes_test(ispromember, login_url="/rowers/paidplans/",
message="This functionality requires a Pro plan or higher", message="This functionality requires a Pro plan or higher",
redirect_field_name=None) redirect_field_name=None)
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True) @permission_required('rower.is_planmember', fn=get_user_by_userid, raise_exception=True)
def workout_rojaboimport_view(request, message="", userid=0): # pragma: no cover def workout_rojaboimport_view(request, message="", userid=0): # pragma: no cover
r = getrequestrower(request, userid=userid) r = getrequestrower(request, userid=userid)
if r.user != request.user: if r.user != request.user:
@@ -753,10 +753,12 @@ def workout_rojaboimport_view(request, message="", userid=0): # pragma: no cover
'steps': steps, 'steps': steps,
} }
ps.save() ps.save()
messages.info(request,'Saved planned session {id}'.format(id=ps.id)) messages.info(request,'Saved planned session {id}'.format(id=ps.id))
except KeyError: # pragma: no cover except KeyError: # pragma: no cover
pass pass
except ValidationError:
messages.error(request,"You cannot import sessions")
except KeyError: except KeyError:
pass pass