fix
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
@@ -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']
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user