diff --git a/rowers/garmin_stuff.py b/rowers/garmin_stuff.py index a23b47c7..99898f40 100644 --- a/rowers/garmin_stuff.py +++ b/rowers/garmin_stuff.py @@ -348,7 +348,6 @@ def step_to_garmin(step, order=0): def ps_to_garmin(ps, r): payload = { 'workoutName': ps.name, - 'sport': r.garminactivity, 'description': ps_dict_get_description(ps.steps), 'estimatedDurationInSecs': 60*ps.approximate_duration, 'estimatedDistanceInMeters': ps.approximate_distance, diff --git a/rowers/templates/rower_exportsettings.html b/rowers/templates/rower_exportsettings.html index 03abb848..ea9f09b1 100644 --- a/rowers/templates/rower_exportsettings.html +++ b/rowers/templates/rower_exportsettings.html @@ -27,9 +27,6 @@ {% if rower.polartoken is not None and rower.polartoken != '' %} Polar, {% endif %} - {% if rower.garmintoken is not None and rower.garmintoken != '' %} - Garmin Connect, - {% endif %} {% if rower.stravatoken is not None and rower.stravatoken != '' %} Strava, {% endif %} @@ -136,30 +133,6 @@
-- Garmin Connnect has no manual sync, so connecting your account to your Garmin account will - automatically auto-sync workouts from Garmin to Rowsandall (but not in the other direction). If you - want to export our structured workout sessions to your Garmin device, you have to set the "Garmin Activity" - to a activity type that is supported by your watch. Not all watches support "Custom" activities, so - you may have to set your activity to Run or Ride while rowing. -
- {% if rower.garmintoken and rower.garmintoken != '' %} -- You are connected to Garmin. Switching off Garmin Connect sync is on the - Account settings - page. Look for the "Rowsandall" app. -
- {% endif %} -Warning: API restrictions!
diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py index e20fa911..afbc2d7f 100644 --- a/rowers/tests/test_imports.py +++ b/rowers/tests/test_imports.py @@ -23,7 +23,7 @@ import rowers.rojabo_stuff as rojabo_stuff from rowers.integrations import * from django.db import transaction -import rowers.garmin_stuff as gs + import rowers.integrations.strava as strava from rowers.nkimportutils import * @@ -193,179 +193,6 @@ class RojaboObjects(DjangoTestCase): -@pytest.mark.django_db -@override_settings(TESTING=True) -class GarminObjects(DjangoTestCase): - def setUp(self): - self.c = Client() - self.u = User.objects.create_user('john', - 'sander@ds.ds', - 'koeinsloot') - - self.u.first_name = 'John' - self.u.last_name = 'Sander' - self.u.save() - self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True, - gdproptindate=timezone.now() - ) - self.r.garmintoken = 'dfdzf' - self.r.garminrefreshtoken = 'fsls' - self.r.rowerplan = 'pro' - self.r.save() - self.c.login(username='john',password='koeinsloot') - - self.nu = datetime.datetime.now() - - startdate = nu.date() - enddate = (nu+datetime.timedelta(days=3)).date() - preferreddate = startdate - - self.ps_trimp = SessionFactory( - startdate=startdate,enddate=enddate, - sessiontype='test', - sessionmode = 'TRIMP', - criterium = 'none', - sessionvalue = 77, - sessionunit='none', - preferreddate=preferreddate, - manager=self.u, - ) - - self.ps_trimp.interval_string = '10min+4x1000m@200W/20sec+2000m@24spm+10min' - self.ps_trimp.save() - - - def tearDown(self): - ws = Workout.objects.filter(user=self.r) - for w in ws: - w.delete() - - def test_garmin_push_summaries(self): - - with open('rowers/tests/testdata/garminsummarydata.txt','r') as f: - data = json.load(f) - response = self.c.post('/rowers/garmin/summaries/',json.dumps(data), - content_type="application/json") - self.assertEqual(response.status_code, 200) - - #response = self.c.get('/rowers/workout/'+encoded1+'/', follow=True) - #self.assertEqual(response.status_code, 200) - - ws = Workout.objects.filter(user=self.r) - self.assertEqual(ws.count(),3) - - def test_garmin_push_details3(self): - with open('rowers/tests/testdata/garmindetail3.txt','r') as f: - data = json.load(f) - response = self.c.post('/rowers/garmin/activities/',json.dumps(data), - content_type='application/json') - - self.assertEqual(response.status_code, 200) - - ws = Workout.objects.filter(user=self.r) - self.assertEqual(ws.count(),1) - - data,w = dataprep.getrowdata_db(id=ws[0].id) - - self.assertEqual(len(data),515) - - def test_garmin_push_details4(self): - with open('rowers/tests/testdata/garmindetail4.txt','r') as f: - data = json.load(f) - response = self.c.post('/rowers/garmin/activities/',json.dumps(data), - content_type='application/json') - - self.assertEqual(response.status_code, 200) - - ws = Workout.objects.filter(user=self.r) - self.assertEqual(ws.count(),1) - - data,w = dataprep.getrowdata_db(id=ws[0].id) - - self.assertEqual(len(data),18) - - def test_garmin_push_details2(self): - with open('rowers/tests/testdata/garmindetail2.txt','r') as f: - data = json.load(f) - response = self.c.post('/rowers/garmin/activities/',json.dumps(data), - content_type='application/json') - - self.assertEqual(response.status_code, 200) - - ws = Workout.objects.filter(user=self.r) - self.assertEqual(ws.count(),3) - - data,w = dataprep.getrowdata_db(id=ws[0].id) - self.assertEqual(len(data),451) - - def test_garmin_push_details1(self): - with open('rowers/tests/testdata/garmindetail1.txt','r') as f: - data = json.load(f) - response = self.c.post('/rowers/garmin/activities/',json.dumps(data), - content_type='application/json') - - self.assertEqual(response.status_code, 200) - response = self.c.get('/rowers/workout/'+encoded1+'/', follow=True) - self.assertEqual(response.status_code, 200) - - ws = Workout.objects.filter(user=self.r) - self.assertEqual(ws.count(),2) - - data,w = dataprep.getrowdata_db(id=ws[0].id) - self.assertEqual(len(data),2) - - def test_garmin_deregistration(self): - data = {"deregistrations":[{"userAccessToken":"dfdzf"}]} - response = self.c.post('/rowers/garmin/deregistration/',json.dumps(data), - content_type='application/json') - - self.assertEqual(response.status_code,200) - - @patch('rowers.tasks.OAuth1Session',side_effect=mocked_requests) - @patch('rowers.tasks.requests.session', side_effect=mocked_requests) - def test_handle_get_garmin_file(self, MockSession, MockOAuth1Session): - client_id = 'garmin' - client_secret = 'noot' - garmintoken = 'mies' - garminrefreshtoken = 'jet' - userid = self.r.user.id - url = 'fake_url' - filetype = 'fit' - - res = tasks.handle_get_garmin_file( - client_id,client_secret,garmintoken,garminrefreshtoken,userid,url,filetype - ) - - self.assertEqual(res,1) - - @patch('rowers.garmin_stuff.OAuth1Session') - def notest_garmin_callback(self,MockOAuth1Session): - with transaction.atomic(): - response = self.c.get('/garmin_callback/?oauth_token=528ea5d9-1163-434d-b172-f428c5d9f522&oauth_verifier=LW33ZMBP8H') - self.assertEqual(response.status_code, 200) - - @patch('rowers.garmin_stuff.requests.get',side_effect=mocked_requests) - def test_garmin_can_export_session(self,mock_get): - result = gs.garmin_can_export_session(self.u) - self.assertTrue(result) - - def test_ps_to_garmin(self): - res = gs.ps_to_garmin(self.ps_trimp,self.r) - self.assertTrue(len(json.dumps(res))>500) - - @patch('rowers.garmin_stuff.requests.get',side_effect=mocked_requests) - @patch('rowers.garmin_stuff.requests.post',side_effect=mocked_requests) - def test_garmin_session_create(self,mock_get,mock_post): - res = gs.garmin_session_create(self.ps_trimp,self.u) - self.assertEqual(res,1212) - - @patch('rowers.garmin_stuff.requests.get',side_effect=mocked_requests) - @patch('rowers.garmin_stuff.requests.post',side_effect=mocked_requests) - def test_togarmin_view(self,mock_get,mock_post): - url = reverse('plannedsession_togarmin_view',kwargs={'id':self.ps_trimp.id}) - response = self.c.get(url,follow=True) - - self.assertEqual(response.status_code,200) @pytest.mark.django_db diff --git a/rowers/tests/test_plans.py b/rowers/tests/test_plans.py index 9cf2db43..1ff79d69 100644 --- a/rowers/tests/test_plans.py +++ b/rowers/tests/test_plans.py @@ -2134,8 +2134,6 @@ description: "" stepsdict = self.ps_trimp.steps['steps'] self.assertEqual(len(stepsdict),2) - response = garmin_stuff.ps_to_garmin(self.ps_trimp,self.r) - self.assertTrue(len(json.dumps(response))>800) url = '0' request = self.factory.get(url) diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 8f978091..111fee58 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/urls.py b/rowers/urls.py index 19fc570c..fdba1a24 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -763,8 +763,8 @@ urlpatterns = [ name='rower_polar_authorize'), re_path(r'^me/revokeapp/(?P