From d7048c182f75c020a9bbfc2009bd121b7bfff57c Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 25 Feb 2021 15:48:15 +0100 Subject: [PATCH] one more --- rowers/plannedsessions.py | 167 ++++++++++++++++++++++---------------- rowers/views/planviews.py | 2 + 2 files changed, 99 insertions(+), 70 deletions(-) diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 0b88d793..aeee927f 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -81,102 +81,129 @@ from rowers.tasks import ( from rowers.utils import totaltime_sec_to_string def step_to_string(step): + + print(step) + target_dict = { - 'heart_rate': { + 'HeartRate': { 'name':'Heart Rate between', - 'low':'custom_target_heart_rate_low', - 'high': 'custom_target_heart_rate_high' + 'low': 'custom_target_power_low', + 'high': 'custom_target_power_high', }, - 'speed':{ + 'Speed':{ 'name': 'Speed between', - 'low': 'custom_target_speed_low', - 'high': 'custom_target_speed_high', + 'low': 'custom_target_power_low', + 'high': 'custom_target_power_high', }, - 'cadence':{ + 'Cadence':{ 'name': 'SPM between', - 'low': 'custom_target_cadence_low', - 'high': 'custom_target_cadence_high', + 'low': 'custom_target_power_low', + 'high': 'custom_target_power_high', }, - 'open':{ + 'Open':{ 'name': 'between', - 'low': 'custom_target_value_low', - 'high': 'custom_target_value_high', + 'low': 'targetValueLow', + 'high': 'targetValueHigh', }, - 'power':{ + 'Power':{ 'name': 'Power between', 'low': 'custom_target_power_low', 'high': 'custom_target_power_high', }, - 'stroke_type':{ + 'SwimStroke':{ 'name': 'Stroke type', 'low': 'target_swim_stroke', 'high': '', }, } - duration = '' - repeat = '' - target = '' - intensity = '' - nr = '' + nr = 0 name = '' + intensity = '' + duration = '' + unit = '' + target = '' + repeat = '' - for key, value in step.items(): + durationtype = step['durationType'] - if key == 'duration_distance': - duration = '{v} m'.format(v=value) - if key == 'duration_time': - dd = timedelta(seconds=value) - duration = '{v} min'.format(v=str(dd)) - if key in ['duration_hr']: - duration = 'until HR reaches {v}'.format(v=value) - if key == 'target_type' and value is not None: - dd = target_dict[value] - t = dd['name'] - l = '' - h = '' - try: - if dd['low']: - v = step[dd['low']] - if value == 'heart_rate': - if v<100: - v = '{v} \%'.format(v=v) - else: - v = v-100 - v = '{v}'.format(v=v) - l = '{v}'.format(v=v) - except KeyError: - pass - try: - if dd['high']: - v = step[dd['high']] - if value == 'heart_rate': - if v<100: - v = '{v} \%'.format(v=v) - else: - v = v-100 - v = '{v}'.format(v=v) - h = 'and {v}'.format(v=v) - except KeyError: - pass + if durationtype == 'Time': + unit = 'min' + value = step['durationValue'] + dd = timedelta(seconds=value/1000.) + duration = '{v}'.format(v=str(dd)) + elif durationtype == 'Distance': + unit = 'm' + value = step['durationValue']/100. + duration = int(value) + elif durationtype == 'HrLessThan': + value = step['durationValue'] + if value < 100: + duration = 'until heart rate lower than {v}% of max'.format(v=value) + else: + duration = 'until heart rate lower than {v}'.format(v=value-100) + elif durationtype == 'HrGreaterThan': + value = step['durationValue'] + if value < 100: + duration = 'until heart rate greater than {v}% of max'.format(v=value) + else: + duration = 'until heart rate greater than {v}'.format(v=value-100) - target = '{t} {l} {h}'.format( - t = t, - l = l, - h = h, - ) - if key == 'intensity': - intensity = '{v}'.format(v=value) - if key == 'repeat': - pass - if key == 'message_index': - nr = '{v}'.format(v=value) - if key == 'wkt_step_name': - name = '{v}'.format(v=value) + targettype = step['targetType'] - s = '{nr}: {name} {intensity} {duration} {target} {repeat}'.format( + if targettype == 'HeartRate': + value = step['targetValue'] + valuelow = step['targetValueLow'] + valuehigh = step['targetValueHigh'] + + if value < 10 and value>0: + target = 'Target: Heart Rate in zone {v}'.format(v=value) + else: + if valuelow < 100: + target = 'Target: Heart Rate between {l} and {h} % of max'.format( + l = valuelow, + h = valuehigh + ) + else: + target = 'Target: Heart Rate between {l} and {h}'.format( + l = valuelow-100, + h = valuehigh+100 + ) + elif targettype == 'Power': + value = step['targetValue'] + valuelow = step['targetValueLow'] + valuehigh = step['targetValueHigh'] + + if value < 10 and value>0: + target = 'Target: Power in zone {v}'.format(v=value) + else: + if valuelow < 1000: + target = 'Target: Power between {l} and {h} % of FTP'.format( + l = valuelow, + h = valuehigh + ) + else: + target = 'Target: Power between {l} and {h} W'.format( + l = valuelow-1000, + h = valuehigh-1000 + ) + elif targettype == 'Speed': + value = step['targetValue'] + valuelow = step['targetValueLow'] + valuehigh = step['targetValueHigh'] + + target = 'Target: Speed at {v} m/s'.format(v=value/1000.) + + nr = step['stepId'] + + name = step['wkt_step_name'] + + intensity = step['intensity'] + + s = '{nr}: {name} {intensity} {duration} {unit} {target} {repeat}'.format( nr = nr, name = name, + unit=unit, intensity = intensity, duration = duration, target=target, diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index 9ce4e7c2..c7e27915 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -1912,6 +1912,8 @@ def plannedsession_view(request,id=0,userid=0): r = getrequestplanrower(request,userid=userid) ps = get_object_or_404(PlannedSession,pk=id) + jsons = json.loads(ps.steps_json) + try: r = VirtualRace.objects.get(id=ps.id)