Merge branch 'release/v9.76'
This commit is contained in:
@@ -8,13 +8,13 @@ atomicwrites==1.3.0
|
|||||||
attrs==19.1.0
|
attrs==19.1.0
|
||||||
backcall==0.1.0
|
backcall==0.1.0
|
||||||
beautifulsoup4==4.7.1
|
beautifulsoup4==4.7.1
|
||||||
billiard==3.5.0.5
|
billiard==3.6.0.0
|
||||||
bleach==3.1.0
|
bleach==3.1.0
|
||||||
bokeh==1.0.4
|
bokeh==1.0.4
|
||||||
boto==2.49.0
|
boto==2.49.0
|
||||||
braintree==3.51.0
|
braintree==3.51.0
|
||||||
cairocffi==1.0.2
|
cairocffi==1.0.2
|
||||||
celery==4.2.2
|
celery==4.3.0
|
||||||
certifi==2019.3.9
|
certifi==2019.3.9
|
||||||
cffi==1.12.2
|
cffi==1.12.2
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
@@ -46,6 +46,7 @@ django-leaflet==0.24.0
|
|||||||
django-mailbox==4.7.1
|
django-mailbox==4.7.1
|
||||||
django-oauth-toolkit==1.2.0
|
django-oauth-toolkit==1.2.0
|
||||||
django-oauth2-provider==0.2.6.1
|
django-oauth2-provider==0.2.6.1
|
||||||
|
django-redis==4.10.0
|
||||||
django-rest-framework==0.1.0
|
django-rest-framework==0.1.0
|
||||||
django-rest-swagger==2.2.0
|
django-rest-swagger==2.2.0
|
||||||
django-rq==1.3.1
|
django-rq==1.3.1
|
||||||
@@ -64,8 +65,11 @@ execnet==1.5.0
|
|||||||
factory-boy==2.11.1
|
factory-boy==2.11.1
|
||||||
Faker==1.0.4
|
Faker==1.0.4
|
||||||
fitparse==1.1.0
|
fitparse==1.1.0
|
||||||
|
Flask==1.0.2
|
||||||
future==0.17.1
|
future==0.17.1
|
||||||
|
GDAL==2.3.3
|
||||||
geocoder==1.38.1
|
geocoder==1.38.1
|
||||||
|
geos==0.2.1
|
||||||
holoviews==1.11.3
|
holoviews==1.11.3
|
||||||
html5lib==1.0.1
|
html5lib==1.0.1
|
||||||
htmlmin==0.1.12
|
htmlmin==0.1.12
|
||||||
@@ -81,6 +85,7 @@ ipython-genutils==0.2.0
|
|||||||
ipywidgets==7.4.2
|
ipywidgets==7.4.2
|
||||||
iso8601==0.1.12
|
iso8601==0.1.12
|
||||||
isodate==0.6.0
|
isodate==0.6.0
|
||||||
|
itsdangerous==1.1.0
|
||||||
itypes==1.1.0
|
itypes==1.1.0
|
||||||
jedi==0.13.3
|
jedi==0.13.3
|
||||||
jeepney==0.4
|
jeepney==0.4
|
||||||
@@ -94,7 +99,7 @@ jupyterlab==0.35.4
|
|||||||
jupyterlab-server==0.3.0
|
jupyterlab-server==0.3.0
|
||||||
keyring==18.0.0
|
keyring==18.0.0
|
||||||
kiwisolver==1.0.1
|
kiwisolver==1.0.1
|
||||||
kombu==4.3.0
|
kombu==4.5.0
|
||||||
lxml==4.3.2
|
lxml==4.3.2
|
||||||
Markdown==3.0.1
|
Markdown==3.0.1
|
||||||
MarkupSafe==1.1.1
|
MarkupSafe==1.1.1
|
||||||
@@ -154,7 +159,7 @@ ratelim==0.1.6
|
|||||||
redis==3.2.1
|
redis==3.2.1
|
||||||
requests==2.21.0
|
requests==2.21.0
|
||||||
requests-oauthlib==1.2.0
|
requests-oauthlib==1.2.0
|
||||||
rowingdata==2.2.5
|
rowingdata==2.2.6
|
||||||
rowingphysics==0.5.0
|
rowingphysics==0.5.0
|
||||||
rq==0.13.0
|
rq==0.13.0
|
||||||
scipy==1.2.1
|
scipy==1.2.1
|
||||||
@@ -184,7 +189,9 @@ VerbalExpressions==0.0.2
|
|||||||
vine==1.3.0
|
vine==1.3.0
|
||||||
wcwidth==0.1.7
|
wcwidth==0.1.7
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
|
Werkzeug==0.15.1
|
||||||
widgetsnbextension==3.4.2
|
widgetsnbextension==3.4.2
|
||||||
|
winkerberos==0.7.0
|
||||||
xmltodict==0.12.0
|
xmltodict==0.12.0
|
||||||
yamjam==0.1.7
|
yamjam==0.1.7
|
||||||
yamllint==1.15.0
|
yamllint==1.15.0
|
||||||
|
|||||||
@@ -30,25 +30,26 @@ cycler==0.10.0
|
|||||||
dask==1.1.4
|
dask==1.1.4
|
||||||
decorator==4.4.0
|
decorator==4.4.0
|
||||||
defusedxml==0.5.0
|
defusedxml==0.5.0
|
||||||
Django==1.9.5
|
Django==2.1.7
|
||||||
django-analytical==2.5.0
|
django-analytical==2.5.0
|
||||||
django-async-messages==0.3.1
|
django-async-messages==0.3.1
|
||||||
django-braces==1.13.0
|
django-braces==1.13.0
|
||||||
django-classy-tags==0.8.0
|
django-classy-tags==0.8.0
|
||||||
django-cookie-law==2.0.1
|
django-cookie-law==2.0.1
|
||||||
django-cors-headers==2.4.0
|
django-cors-headers==2.5.2
|
||||||
django-countries==5.3.3
|
django-countries==5.3.3
|
||||||
django-datetime-widget==0.9.3
|
django-datetime-widget==0.9.3
|
||||||
django-debug-toolbar==1.4
|
django-debug-toolbar==1.11
|
||||||
django-extensions==2.1.6
|
django-extensions==2.1.6
|
||||||
django-htmlmin==0.10.0
|
django-htmlmin==0.11.0
|
||||||
django-leaflet==0.24.0
|
django-leaflet==0.24.0
|
||||||
django-mailbox==4.7.1
|
django-mailbox==4.7.1
|
||||||
django-oauth-toolkit==0.10.0
|
django-oauth-toolkit==1.2.0
|
||||||
django-oauth2-provider==0.2.6.1
|
django-oauth2-provider==0.2.6.1
|
||||||
|
django-redis==4.10.0
|
||||||
django-rest-framework==0.1.0
|
django-rest-framework==0.1.0
|
||||||
django-rest-swagger==2.2.0
|
django-rest-swagger==2.2.0
|
||||||
django-rq==1.3.0
|
django-rq==1.3.1
|
||||||
django-rq-dashboard==0.3.3
|
django-rq-dashboard==0.3.3
|
||||||
django-ses==0.8.10
|
django-ses==0.8.10
|
||||||
django-shell-plus==1.1.7
|
django-shell-plus==1.1.7
|
||||||
@@ -56,7 +57,7 @@ django-social-share==1.3.2
|
|||||||
django-suit==0.2.26
|
django-suit==0.2.26
|
||||||
django-suit-rq==1.0.1
|
django-suit-rq==1.0.1
|
||||||
django-tz-detect==0.2.9
|
django-tz-detect==0.2.9
|
||||||
djangorestframework==3.5.4
|
djangorestframework==3.9.2
|
||||||
docopt==0.6.2
|
docopt==0.6.2
|
||||||
docutils==0.14
|
docutils==0.14
|
||||||
entrypoints==0.3
|
entrypoints==0.3
|
||||||
@@ -64,9 +65,11 @@ execnet==1.5.0
|
|||||||
factory-boy==2.11.1
|
factory-boy==2.11.1
|
||||||
Faker==1.0.4
|
Faker==1.0.4
|
||||||
fitparse==1.1.0
|
fitparse==1.1.0
|
||||||
|
Flask==1.0.2
|
||||||
future==0.17.1
|
future==0.17.1
|
||||||
GDAL==2.3.3
|
GDAL==2.3.3
|
||||||
geocoder==1.38.1
|
geocoder==1.38.1
|
||||||
|
geos==0.2.1
|
||||||
holoviews==1.11.3
|
holoviews==1.11.3
|
||||||
html5lib==1.0.1
|
html5lib==1.0.1
|
||||||
htmlmin==0.1.12
|
htmlmin==0.1.12
|
||||||
@@ -77,11 +80,12 @@ idna==2.8
|
|||||||
image==1.5.27
|
image==1.5.27
|
||||||
importlib-resources==1.0.2
|
importlib-resources==1.0.2
|
||||||
ipykernel==5.1.0
|
ipykernel==5.1.0
|
||||||
ipython==7.3.0
|
ipython==7.4.0
|
||||||
ipython-genutils==0.2.0
|
ipython-genutils==0.2.0
|
||||||
ipywidgets==7.4.2
|
ipywidgets==7.4.2
|
||||||
iso8601==0.1.12
|
iso8601==0.1.12
|
||||||
isodate==0.6.0
|
isodate==0.6.0
|
||||||
|
itsdangerous==1.1.0
|
||||||
itypes==1.1.0
|
itypes==1.1.0
|
||||||
jedi==0.13.3
|
jedi==0.13.3
|
||||||
jeepney==0.4
|
jeepney==0.4
|
||||||
@@ -92,7 +96,7 @@ jupyter-client==5.2.4
|
|||||||
jupyter-console==6.0.0
|
jupyter-console==6.0.0
|
||||||
jupyter-core==4.4.0
|
jupyter-core==4.4.0
|
||||||
jupyterlab==0.35.4
|
jupyterlab==0.35.4
|
||||||
jupyterlab-server==0.2.0
|
jupyterlab-server==0.3.0
|
||||||
keyring==18.0.0
|
keyring==18.0.0
|
||||||
kiwisolver==1.0.1
|
kiwisolver==1.0.1
|
||||||
kombu==4.3.0
|
kombu==4.3.0
|
||||||
@@ -112,7 +116,7 @@ nose-parameterized==0.6.0
|
|||||||
notebook==5.7.6
|
notebook==5.7.6
|
||||||
numpy==1.16.2
|
numpy==1.16.2
|
||||||
oauth2==1.9.0.post1
|
oauth2==1.9.0.post1
|
||||||
oauthlib==1.0.3
|
oauthlib==3.0.1
|
||||||
openapi-codec==1.3.2
|
openapi-codec==1.3.2
|
||||||
packaging==19.0
|
packaging==19.0
|
||||||
pandas==0.24.2
|
pandas==0.24.2
|
||||||
@@ -155,7 +159,7 @@ ratelim==0.1.6
|
|||||||
redis==3.2.1
|
redis==3.2.1
|
||||||
requests==2.21.0
|
requests==2.21.0
|
||||||
requests-oauthlib==1.2.0
|
requests-oauthlib==1.2.0
|
||||||
rowingdata==2.2.3
|
rowingdata==2.2.5
|
||||||
rowingphysics==0.5.0
|
rowingphysics==0.5.0
|
||||||
rq==0.13.0
|
rq==0.13.0
|
||||||
scipy==1.2.1
|
scipy==1.2.1
|
||||||
@@ -185,6 +189,7 @@ VerbalExpressions==0.0.2
|
|||||||
vine==1.3.0
|
vine==1.3.0
|
||||||
wcwidth==0.1.7
|
wcwidth==0.1.7
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
|
Werkzeug==0.15.1
|
||||||
widgetsnbextension==3.4.2
|
widgetsnbextension==3.4.2
|
||||||
winkerberos==0.7.0
|
winkerberos==0.7.0
|
||||||
xmltodict==0.12.0
|
xmltodict==0.12.0
|
||||||
|
|||||||
@@ -4360,7 +4360,10 @@ def interactive_multiple_compare_chart(ids,xparam,yparam,plottype='line',
|
|||||||
try:
|
try:
|
||||||
tseconds = datadf.loc[:,'time']
|
tseconds = datadf.loc[:,'time']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
try:
|
||||||
tseconds = datadf.loc[:,xparam]
|
tseconds = datadf.loc[:,xparam]
|
||||||
|
except:
|
||||||
|
return ['','<p>A chart data error occurred</p>','','A chart data error occurred']
|
||||||
|
|
||||||
yparamname = axlabels[yparam]
|
yparamname = axlabels[yparam]
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ class TestErrorPages(TestCase):
|
|||||||
|
|
||||||
factory = RequestFactory()
|
factory = RequestFactory()
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = error404_view(request)
|
e = None
|
||||||
|
response = error404_view(request,e )
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 404)
|
self.assertEqual(response.status_code, 404)
|
||||||
self.assertIn('404 Page not found', str(response.content))
|
self.assertIn('404 Page not found', str(response.content))
|
||||||
@@ -22,7 +23,7 @@ class TestErrorPages(TestCase):
|
|||||||
self.assertEqual(response.status_code, 500)
|
self.assertEqual(response.status_code, 500)
|
||||||
self.assertIn('500 Internal Server Error', str(response.content))
|
self.assertIn('500 Internal Server Error', str(response.content))
|
||||||
|
|
||||||
response = error400_view(request)
|
response = error400_view(request, e)
|
||||||
self.assertEqual(response.status_code, 400)
|
self.assertEqual(response.status_code, 400)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
@@ -22,14 +22,14 @@ def error500_view(request):
|
|||||||
response.status_code = 500
|
response.status_code = 500
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def error404_view(request):
|
def error404_view(request, exception):
|
||||||
response = render(request,'404.html', {},status=404)
|
response = render(request,'404.html', {},status=404)
|
||||||
# context_instance = RequestContext(request))
|
# context_instance = RequestContext(request))
|
||||||
|
|
||||||
response.status_code = 404
|
response.status_code = 404
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def error400_view(request):
|
def error400_view(request, exception):
|
||||||
response = render(request,'400.html', {},status=400)
|
response = render(request,'400.html', {},status=400)
|
||||||
# context_instance = RequestContext(request))
|
# context_instance = RequestContext(request))
|
||||||
|
|
||||||
|
|||||||
@@ -910,7 +910,8 @@ def virtualevent_compare_view(request,id=0):
|
|||||||
workouts = []
|
workouts = []
|
||||||
for id in workoutids:
|
for id in workoutids:
|
||||||
try:
|
try:
|
||||||
workouts.append(Workout.objects.get(id=encoded.decode_hex(id)))
|
workouts.append(Workout.objects.get(
|
||||||
|
id=encoder.decode_hex(id)))
|
||||||
except Workout.DoesNotExist:
|
except Workout.DoesNotExist:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -1797,7 +1798,10 @@ def workout_downloadwind_view(request,id=0,
|
|||||||
windspeed = winddata[0]
|
windspeed = winddata[0]
|
||||||
windbearing = winddata[1]
|
windbearing = winddata[1]
|
||||||
message = winddata[2]
|
message = winddata[2]
|
||||||
|
try:
|
||||||
row.notes += "\n"+message
|
row.notes += "\n"+message
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
row.save()
|
row.save()
|
||||||
rowdata.add_wind(windspeed,windbearing)
|
rowdata.add_wind(windspeed,windbearing)
|
||||||
rowdata.write_csv(f1,gzip=True)
|
rowdata.write_csv(f1,gzip=True)
|
||||||
@@ -1864,7 +1868,11 @@ def workout_downloadmetar_view(request,id=0,
|
|||||||
windspeed = winddata[0]
|
windspeed = winddata[0]
|
||||||
windbearing = winddata[1]
|
windbearing = winddata[1]
|
||||||
message = winddata[2]
|
message = winddata[2]
|
||||||
|
try:
|
||||||
row.notes += "\n"+message
|
row.notes += "\n"+message
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
|
||||||
row.save()
|
row.save()
|
||||||
rowdata.add_wind(windspeed,windbearing)
|
rowdata.add_wind(windspeed,windbearing)
|
||||||
rowdata.write_csv(f1,gzip=True)
|
rowdata.write_csv(f1,gzip=True)
|
||||||
@@ -4858,14 +4866,23 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
value_power = request.POST['value_power']
|
value_power = request.POST['value_power']
|
||||||
value_work = request.POST['value_work']
|
value_work = request.POST['value_work']
|
||||||
if powerorpace == 'power':
|
if powerorpace == 'power':
|
||||||
|
try:
|
||||||
power = int(value_power)
|
power = int(value_power)
|
||||||
|
except ValueError:
|
||||||
|
int(normp)
|
||||||
elif powerorpace == 'pace':
|
elif powerorpace == 'pace':
|
||||||
try:
|
try:
|
||||||
pace_secs = float(value_pace)
|
pace_secs = float(value_pace)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
try:
|
||||||
pace_secs = float(value_pace.replace(',','.'))
|
pace_secs = float(value_pace.replace(',','.'))
|
||||||
|
except ValueError:
|
||||||
|
pace_secs = int(500./normv)
|
||||||
elif powerorpace == 'work':
|
elif powerorpace == 'work':
|
||||||
|
try:
|
||||||
work = int(value_work)
|
work = int(value_work)
|
||||||
|
except ValueError:
|
||||||
|
work = int(normw)
|
||||||
|
|
||||||
if powerorpace == 'power' and power is not None:
|
if powerorpace == 'power' and power is not None:
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user