adding poll for next week sessions
This commit is contained in:
101
rowers/tasks.py
101
rowers/tasks.py
@@ -18,6 +18,7 @@ from rowers.models import (
|
||||
GraphImage, Team, PlannedSession
|
||||
)
|
||||
from rowers.session_utils import is_session_complete
|
||||
|
||||
import math
|
||||
from rowers.courseutils import (
|
||||
coursetime_paths, coursetime_first, time_in_path,
|
||||
@@ -333,6 +334,106 @@ def summaryfromsplitdata(splitdata, data, filename, sep='|', workouttype='rower'
|
||||
|
||||
return sums, sa, results
|
||||
|
||||
from rowers.utils import intensitymap
|
||||
|
||||
def strcapitalize(s):
|
||||
if s is None:
|
||||
return None
|
||||
if isinstance(s, str):
|
||||
return s[0].upper() + s[1:]
|
||||
|
||||
return s
|
||||
|
||||
def correct_intensity(workout):
|
||||
# reads the steps and if the intensity is an integer, converts it to a string
|
||||
steps = workout['steps']
|
||||
for step in steps:
|
||||
if 'intensity' in step:
|
||||
if isinstance(step['intensity'], int):
|
||||
step['intensity'] = intensitymap[step['intensity']]
|
||||
step['durationType'] = strcapitalize(step['durationType'])
|
||||
step['targetType'] = strcapitalize(step['targetType'])
|
||||
step['intensity'] = strcapitalize(step['intensity'])
|
||||
|
||||
return workout
|
||||
|
||||
|
||||
@app.task
|
||||
def handle_loadnextweek(rower, debug=False, **kwargs):
|
||||
|
||||
plan = rower.training_plan_code
|
||||
secret = rower.training_plan_secret
|
||||
post_data = {
|
||||
'fitness': rower.actualfit,
|
||||
'fatigue': rower.actualfatigue,
|
||||
'plan': plan,
|
||||
'secret': secret,
|
||||
}
|
||||
|
||||
url = "http://localhost:8898/next-week-plan/"
|
||||
response = requests.post(url, data=post_data)
|
||||
|
||||
if response.status_code in [200, 201]:
|
||||
data = response.json()
|
||||
|
||||
today = timezone.now()
|
||||
startdate = today - timedelta(days=today.weekday())+timezone.timedelta(days=7)
|
||||
enddate = startdate + timedelta(days=6)
|
||||
|
||||
sps = PlannedSession.objects.filter(
|
||||
rower__in=[rower],
|
||||
startdate__gte=startdate,
|
||||
enddate__lte=enddate,
|
||||
is_template=False,
|
||||
)
|
||||
|
||||
for ps in sps:
|
||||
ps.delete()
|
||||
|
||||
trainingdays = data['cycles']
|
||||
# start date is the first day of the following week
|
||||
|
||||
ndays = 0
|
||||
for day in trainingdays:
|
||||
try:
|
||||
workouts = day[0][1:]
|
||||
except IndexError:
|
||||
workouts =[]
|
||||
for workout in workouts:
|
||||
sessionsport = 'water'
|
||||
try:
|
||||
sessionsport = mytypes.fitmappinginv[workout['sport'].lower()]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
preferreddate = startdate+timedelta(days=ndays)
|
||||
sessionmode = 'time'
|
||||
|
||||
ps = PlannedSession(
|
||||
startdate=preferreddate - timedelta(days=preferreddate.weekday()),
|
||||
enddate=preferreddate + timedelta(days=-preferreddate.weekday()-1, weeks=1),
|
||||
preferreddate=preferreddate,
|
||||
sessionsport=sessionsport, # change this
|
||||
name=workout['workoutName'],
|
||||
steps=correct_intensity(workout),
|
||||
manager=rower.user,
|
||||
sessionmode=sessionmode,
|
||||
comment=workout['description'],
|
||||
from_plan=None,
|
||||
)
|
||||
ps.save()
|
||||
ps.rower.add(rower)
|
||||
ps.save()
|
||||
if ps.fitfile:
|
||||
ps.steps = {}
|
||||
ps.save()
|
||||
ndays += 1
|
||||
|
||||
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
@app.task
|
||||
def handle_assignworkouts(workouts, rowers, remove_workout, debug=False, **kwargs):
|
||||
for workout in workouts:
|
||||
|
||||
Reference in New Issue
Block a user