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.


+



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