Private
Public Access
1
0

rojabo v2

This commit is contained in:
Sander Roosendaal
2022-11-01 18:36:08 +01:00
parent cd8a0456c8
commit 055725eef9
6 changed files with 85 additions and 8 deletions

View File

@@ -2729,6 +2729,7 @@ class PlannedSession(models.Model):
dct = trainingparser.parsetodict(self.interval_string) dct = trainingparser.parsetodict(self.interval_string)
dct = [item for item in dct if item['value'] != 0] dct = [item for item in dct if item['value'] != 0]
dct = trainingparser.tofitdict(dct) dct = trainingparser.tofitdict(dct)
for step in dct['steps']: for step in dct['steps']:
try: try:
step['targetValue'] = int(step['targetValue']) step['targetValue'] = int(step['targetValue'])

View File

@@ -172,11 +172,10 @@ a_week_from_now = timezone.now()+timedelta(days=7)
def stepsconvert(rojabo_steps, startid = 0, warmup = False, cooldown = False): def stepsconvert(rojabo_steps, startid = 0, warmup = False, cooldown = False):
workout_steps = [] workout_steps = []
for step in rojabo_steps: for step in rojabo_steps:
print(step)
durationtype = 'Time' durationtype = 'Time'
durationvalue = 10 durationvalue = 10
if step['duration_type'] == 'seconds': if step['duration_type'] == 'seconds':
durationvalue = 1000*durationvalue # milliseconds durationvalue = 1000*step['duration_value'] # milliseconds
if step['duration_type'] == 'meters': if step['duration_type'] == 'meters':
durationtype = 'Distance' durationtype = 'Distance'
durationvalue = step['duration_value']*100 # centimeters durationvalue = step['duration_value']*100 # centimeters
@@ -200,6 +199,8 @@ def stepsconvert(rojabo_steps, startid = 0, warmup = False, cooldown = False):
if targetvalue is None: if targetvalue is None:
targettype = 'Cadence' targettype = 'Cadence'
targetvalue = step['stroke_rate'] targetvalue = step['stroke_rate']
if targettype == 'Power':
targetvalue += 1000
if step['target_type'] == 'rest': if step['target_type'] == 'rest':
targettype = '' targettype = ''
@@ -219,10 +220,11 @@ def stepsconvert(rojabo_steps, startid = 0, warmup = False, cooldown = False):
'durationType': durationtype, 'durationType': durationtype,
'durationValue': durationvalue, 'durationValue': durationvalue,
'targetType': targettype, 'targetType': targettype,
'targetvalue': targetvalue, 'targetValue': targetvalue,
'intensity': intensity, 'intensity': intensity,
'description': description 'description': description
} }
startid += 1 startid += 1
workout_steps.append(newstep) workout_steps.append(newstep)

View File

@@ -734,6 +734,9 @@ def mocked_requests(*args, **kwargs):
with open('rowers/tests/testdata/c2_timezone.json','r') as infile: with open('rowers/tests/testdata/c2_timezone.json','r') as infile:
c2timezoneworkoutdata = json.load(infile) c2timezoneworkoutdata = json.load(infile)
with open('rowers/tests/testdata/rojabolist.json','r') as infile:
rojabodata = json.load(infile)
with open('rowers/tests/testdata/c2_timezone2.json','r') as infile: with open('rowers/tests/testdata/c2_timezone2.json','r') as infile:
c2timezoneworkoutdata2 = json.load(infile) c2timezoneworkoutdata2 = json.load(infile)
@@ -1045,6 +1048,9 @@ def mocked_requests(*args, **kwargs):
return MockResponse(jsonresponse,200) return MockResponse(jsonresponse,200)
if 'rojabo' in args[0]:
return MockResponse(rojabodata, 200)
polartester = re.compile(r'.*?polaraccesslink\.com') polartester = re.compile(r'.*?polaraccesslink\.com')
polarremotetester = re.compile(r'.*?polarremote\.com') polarremotetester = re.compile(r'.*?polarremote\.com')

View File

@@ -66,6 +66,7 @@ from mock import Mock, patch
import pandas as pd import pandas as pd
import rowers.c2stuff as c2stuff import rowers.c2stuff as c2stuff
import rowers.sporttracksstuff as sporttracksstuff import rowers.sporttracksstuff as sporttracksstuff
import rowers.rojabo_stuff as rojabo_stuff
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy

View File

@@ -21,11 +21,64 @@ import urllib
import json import json
import rowers.utils as utils import rowers.utils as utils
import rowers.rojabo_stuff as rojabo_stuff
from django.db import transaction from django.db import transaction
import rowers.garmin_stuff as gs import rowers.garmin_stuff as gs
@pytest.mark.django_db
@override_settings(TESTING=True)
class RojaboObjects(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,surveydone=True,
gdproptindate=timezone.now()
)
self.r.rojabo_token = '12'
self.r.rojabo_refreshtoken = 'ab'
self.r.rojabo_tokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime
self.r.defaulttimezone = 'Europe/Prague'
self.r.rowerplan = 'plan'
self.r.save()
self.c.login(username='john',password='koeinsloot')
self.nu = datetime.datetime.now()
@patch('rowers.rojabo_stuff.requests.get', side_effect=mocked_requests)
@patch('rowers.rojabo_stuff.requests.post', side_effect=mocked_requests)
def test_rojabo_import(self, mock_get, mock_post):
url = '/rowers/session/rojaboimport/'
response = self.c.get(url)
self.assertEqual(response.status_code, 200)
form_data = {
'csrfmiddlewaretoken': ['xalRrf8y7P2Hhobges9QC4aKCWg4l06gexDc8g2DeuVExgadfk4YhV8oSE1Yu43U'],
'sessions': ['Import selected sessions'],
'sessionid': ['862172']
}
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
pss = PlannedSession.objects.filter(manager=self.r.user)
self.assertEqual(pss.count(),1)
ps = pss[0]
self.assertEqual(ps.approximate_duration,57)
self.assertEqual(len(ps.steps['steps']),20)
@pytest.mark.django_db @pytest.mark.django_db
@override_settings(TESTING=True) @override_settings(TESTING=True)
class GarminObjects(DjangoTestCase): class GarminObjects(DjangoTestCase):

View File

@@ -1062,7 +1062,7 @@ def workout_rojaboimport_view(request, message="", userid=0):
if (res.status_code != 200): # pragma: no cover if (res.status_code != 200): # pragma: no cover
if (res.status_code == 401): if (res.status_code == 401):
r = getrower(request.user) r = getrower(request.user)
if (r.stravatoken == '') or (r.stravatoken is None): if (r.rojabo_token == '') or (r.rojabo_token is None):
s = "Token doesn't exist. Need to authorize" s = "Token doesn't exist. Need to authorize"
return HttpResponseRedirect("/rowers/me/rojaboauthorize/") return HttpResponseRedirect("/rowers/me/rojaboauthorize/")
message = "Something went wrong in workout_rojaboimport_view" message = "Something went wrong in workout_rojaboimport_view"
@@ -1114,20 +1114,34 @@ def workout_rojaboimport_view(request, message="", userid=0):
# get steps if there are any # get steps if there are any
steps = [] steps = []
try: try:
steps.append(rojabostuff.stepsconvert(item['warm_up'])) steps = steps+rojabo_stuff.stepsconvert(
item['warm_up']['steps'],
warmup=True
)
except KeyError: except KeyError:
pass pass
try: try:
steps.append(rojabostuff.stepsconvert(item['primary'])) steps = steps + rojabo_stuff.stepsconvert(
item['primary']['steps'],
startid=len(steps)
)
except KeyError: except KeyError:
pass pass
try: try:
steps.append(rojabostuff.stepsconvert(item['cool_down'])) steps = steps + rojabo_stuff.stepsconvert(
item['cool_down']['steps'],
cooldown=True,
startid=len(steps))
except KeyError: except KeyError:
pass pass
if steps: if steps:
ps.steps = steps ps.steps = {
'name':'',
'sport':'rowing',
'filename':'',
'steps': steps,
}
ps.save() ps.save()
messages.info(request,'Saved planned session {id}'.format(id=ps.id)) messages.info(request,'Saved planned session {id}'.format(id=ps.id))