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