diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 9ebc2adb..4cab2758 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -22,7 +22,7 @@ from rowingdata import ( TCXParser,RowProParser,ErgDataParser,TCXParserNoHR, CoxMateParser, BoatCoachParser,RowPerfectParser,BoatCoachAdvancedParser, - MysteryParser, + MysteryParser,BoatCoachOTWParser, painsledDesktopParser,speedcoachParser,ErgStickParser, SpeedCoach2Parser,FITParser,fitsummarydata, make_cumvalues, @@ -742,6 +742,10 @@ def handle_nonpainsled(f2,fileformat,summary=''): if (fileformat == 'boatcoach'): row = BoatCoachParser(f2) + # handle BoatCoach OTW + if (fileformat == 'boatcoachotw'): + row = BoatCoachOTWParser(f2) + # handle painsled desktop if (fileformat == 'painsleddesktop'): row = painsledDesktopParser(f2) diff --git a/rowers/dataprepnodjango.py b/rowers/dataprepnodjango.py index 0a1c8b28..1d817980 100644 --- a/rowers/dataprepnodjango.py +++ b/rowers/dataprepnodjango.py @@ -325,6 +325,10 @@ def handle_nonpainsled(f2,fileformat,summary=''): if (fileformat == 'bcmike'): row = BoatCoachAdvancedParser(f2) + # handle BoatCoach OTW + if (fileformat == 'boatcoachotw'): + row = BoatCoachOTWParser(f2) + # handle BoatCoach if (fileformat == 'boatcoach'): row = BoatCoachParser(f2) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index aacb2ab2..7e828b40 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -700,6 +700,8 @@ def leaflet_chart(lat,lon,name=""): df = df.replace(0,np.nan) df = df.loc[(df!=0).any(axis=1)] + df.fillna(method='bfill',axis=0,inplace=True) + df.fillna(method='ffill',axis=0,inplace=True) lat = df['lat'] lon = df['lon'] if lat.empty or lon.empty: diff --git a/rowers/templates/developers.html b/rowers/templates/developers.html index 117a4547..32c6ee98 100644 --- a/rowers/templates/developers.html +++ b/rowers/templates/developers.html @@ -115,8 +115,10 @@
Registering an app
-

As a registered user, you can register an app.

- + +

We have disabled the self service app link for security reasons. + We will replace it with a secure self service app link soon. If you + need to register an app, please send email to info@rowsandall.com

Authentication
diff --git a/rowers/types.py b/rowers/types.py index 0dc8244e..6298014f 100644 --- a/rowers/types.py +++ b/rowers/types.py @@ -24,6 +24,7 @@ workoutsources = ( ('rowperfect3','rowperfect3'), ('ergdata','ergdata'), ('boatcoach','boatcoach'), + ('boatcoachotw','boatcoachotw'), ('bcmike','boatcoach (develop)'), ('painsleddesktop','painsleddesktop'), ('speedcoach','speedcoach'), diff --git a/rowers/urls.py b/rowers/urls.py index 3eae317d..e395fb87 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -102,10 +102,14 @@ handler404 = 'views.error404_view' handler400 = 'views.error400_view' handler403 = 'views.error403_view' +from oauth2_provider.views import base + urlpatterns = [ # url(r'^password_change/$',auth_views.password_change), # url(r'^password_change_done/$',auth_views.password_change_done), - url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), +# url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), + url(r'^o/authorize/$', base.AuthorizationView.as_view(), name="authorize"), + url(r'^o/token/$', base.TokenView.as_view(), name="token"), url(r'^', include(router.urls)), url(r'^api-docs$', views.schema_view), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 8148d40c..3020084e 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -176,13 +176,13 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/1.9/topics/i18n/ -TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True +TIME_ZONE = 'UTC' TZ_DETECT_COUNTRIES = ('US','DE','GB','CZ','FR','IT')