diff --git a/rowers/models.py b/rowers/models.py index e0222fd7..c93db7fb 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -997,6 +997,11 @@ class Rower(models.Model): rp3_auto_import = models.BooleanField(default=False) + nktoken = models.TextField(default='',max_length=1000,blank=True,null=True) + nktokenexpirydate = models.DateTimeField(blank=True,null=True) + nkrefreshtoken = models.TextField(default='',max_length=1000, + blank=True,null=True) + trainingpeaks_auto_export = models.BooleanField(default=False) polartoken = models.CharField(default='',max_length=1000,blank=True,null=True) diff --git a/rowers/templates/rower_exportsettings.html b/rowers/templates/rower_exportsettings.html index 81179cb4..06b3a874 100644 --- a/rowers/templates/rower_exportsettings.html +++ b/rowers/templates/rower_exportsettings.html @@ -71,6 +71,7 @@ choice or to renew the authorization.

connect with strava

connect with Concept2

+

connect with NK LiNK

connect with SportTracks

connect with RunKeeper

connect with Under Armour

diff --git a/rowers/urls.py b/rowers/urls.py index 99959d6c..e6d1fc04 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -671,6 +671,7 @@ urlpatterns = [ re_path(r'^me/preferences/user/(?P\d+)/$',views.rower_prefs_view,name='rower_prefs_view'), re_path(r'^me/edit/(.+.*)/$',views.rower_edit_view,name='rower_edit_view'), re_path(r'^me/c2authorize/$',views.rower_c2_authorize,name='rower_c2_authorize'), + re_path(r'^me/nkauthorize/$',views.rower_nk_authorize,name='rower_nk_authorize'), re_path(r'^me/polarauthorize/$',views.rower_polar_authorize,name='rower_polar_authorize'), re_path(r'^me/revokeapp/(?P\d+)/$',views.rower_revokeapp_view,name='rower_revokeapp_view'), re_path(r'^me/stravaauthorize/$',views.rower_strava_authorize,name='rower_strava_authorize'), diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 4dfc0ab4..e5bdbaba 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -392,6 +392,25 @@ def workout_sporttracks_upload_view(request,id=0): return HttpResponseRedirect(url) + +# NK LiNK authorization +@login_required() +def rower_nk_authorize(request): + state = str(uuid4()) + scope = "read" + params = { + "grant_type": "authorization_code", + "response_type": "code", + "client_id": NK_ClIENT_ID, + "scope": scope, + "state": state, + "redirect_uri": NK_REDIRECT_URI, + } + + url = "https://oauth-stage.nkrowlink.com/oauth/authorize?"+urllib.parse.urlencode(params) + + return HttpResponseRedirect(url) + # Concept2 authorization @login_required() def rower_c2_authorize(request): diff --git a/rowers/views/statements.py b/rowers/views/statements.py index e2dd74d9..88b7f36b 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -185,7 +185,8 @@ from rowsandall_app.settings import ( RP3_CLIENT_ID,RP3_REDIRECT_URI,RP3_CLIENT_KEY,RP3_CLIENT_SECRET, BRAINTREE_MERCHANT_ID,BRAINTREE_PUBLIC_KEY,BRAINTREE_PRIVATE_KEY, PAYMENT_PROCESSING_ON, - RECAPTCHA_SITE_KEY, RECAPTCHA_SITE_SECRET + RECAPTCHA_SITE_KEY, RECAPTCHA_SITE_SECRET, + NK_REDIRECT_URI, NK_ClIENT_ID, NK_CLIENT_SECRET ) #from rowers.tasks_standalone import addcomment2 diff --git a/static/img/NKLiNK.jpg b/static/img/NKLiNK.jpg new file mode 100644 index 00000000..38b9326b Binary files /dev/null and b/static/img/NKLiNK.jpg differ diff --git a/static/img/NK_white.png b/static/img/NK_white.png new file mode 100644 index 00000000..0c35d7d9 Binary files /dev/null and b/static/img/NK_white.png differ