adding async sessions creation, adding link to plan
This commit is contained in:
@@ -2797,6 +2797,7 @@ class PlannedSession(models.Model):
|
|||||||
|
|
||||||
manager = models.ForeignKey(User, on_delete=models.PROTECT)
|
manager = models.ForeignKey(User, on_delete=models.PROTECT)
|
||||||
rojabo_id = models.BigIntegerField(default=0,blank=True)
|
rojabo_id = models.BigIntegerField(default=0,blank=True)
|
||||||
|
intervals_icu_id = models.CharField(default=None, blank=True, null=True, max_length=50)
|
||||||
course = models.ForeignKey(GeoCourse, blank=True, null=True,
|
course = models.ForeignKey(GeoCourse, blank=True, null=True,
|
||||||
verbose_name='OTW Course', on_delete=models.SET_NULL)
|
verbose_name='OTW Course', on_delete=models.SET_NULL)
|
||||||
|
|
||||||
@@ -2876,6 +2877,8 @@ class PlannedSession(models.Model):
|
|||||||
|
|
||||||
tags = TaggableManager(blank=True)
|
tags = TaggableManager(blank=True)
|
||||||
|
|
||||||
|
from_plan = models.ForeignKey(TrainingPlan, on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|
||||||
name = self.name
|
name = self.name
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from rowers.models import (
|
|||||||
from rowers.tasks import (
|
from rowers.tasks import (
|
||||||
handle_sendemail_raceregistration, handle_sendemail_racesubmission
|
handle_sendemail_raceregistration, handle_sendemail_racesubmission
|
||||||
)
|
)
|
||||||
from rowers.tasks import handle_check_race_course
|
from rowers.tasks import handle_check_race_course, create_sessions_from_json_async
|
||||||
from iso8601 import ParseError
|
from iso8601 import ParseError
|
||||||
import iso8601
|
import iso8601
|
||||||
import rowers.courses as courses
|
import rowers.courses as courses
|
||||||
@@ -1068,9 +1068,11 @@ def get_workouts_session(r, ps):
|
|||||||
|
|
||||||
return ws
|
return ws
|
||||||
|
|
||||||
def create_sessions_from_json(plansteps, rower, startdate, manager, planbyrscore=False):
|
def create_sessions_from_json(plansteps, rower, startdate, manager, planbyrscore=False, plan=None,
|
||||||
|
asynchronous=False, queue=queue):
|
||||||
trainingdays = plansteps['trainingDays']
|
trainingdays = plansteps['trainingDays']
|
||||||
planstartdate = startdate
|
planstartdate = startdate
|
||||||
|
if not asynchronous:
|
||||||
for day in trainingdays:
|
for day in trainingdays:
|
||||||
for workout in day['workouts']:
|
for workout in day['workouts']:
|
||||||
sessionsport = 'water'
|
sessionsport = 'water'
|
||||||
@@ -1096,12 +1098,18 @@ def create_sessions_from_json(plansteps, rower, startdate, manager, planbyrscore
|
|||||||
steps=workout,
|
steps=workout,
|
||||||
manager=manager,
|
manager=manager,
|
||||||
sessionmode=sessionmode,
|
sessionmode=sessionmode,
|
||||||
comment=workout['description']
|
comment=workout['description'],
|
||||||
|
from_plan=plan,
|
||||||
)
|
)
|
||||||
|
|
||||||
ps.save()
|
ps.save()
|
||||||
|
|
||||||
add_rower_session(rower, ps)
|
add_rower_session(rower, ps)
|
||||||
|
return
|
||||||
|
|
||||||
|
# async version
|
||||||
|
_ = myqueue(queue, create_sessions_from_json_async, plansteps, rower, startdate, manager, planbyrscore, plan)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def update_plannedsession(ps, cd):
|
def update_plannedsession(ps, cd):
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ application = get_wsgi_application()
|
|||||||
from rowers.models import (
|
from rowers.models import (
|
||||||
Workout, GeoPolygon, GeoPoint, GeoCourse,
|
Workout, GeoPolygon, GeoPoint, GeoCourse,
|
||||||
VirtualRaceResult, CourseTestResult, Rower,
|
VirtualRaceResult, CourseTestResult, Rower,
|
||||||
GraphImage
|
GraphImage, Team, PlannedSession
|
||||||
)
|
)
|
||||||
from rowers.session_utils import is_session_complete
|
from rowers.session_utils import is_session_complete
|
||||||
import math
|
import math
|
||||||
@@ -373,6 +373,52 @@ def handle_assignworkouts(workouts, rowers, remove_workout, debug=False, **kwarg
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
@app.task
|
||||||
|
def create_sessions_from_json_async(plansteps, rower, startdate, manager, planbyrscore, plan, debug=False, **kwargs):
|
||||||
|
trainingdays = plansteps['trainingDays']
|
||||||
|
planstartdate = startdate
|
||||||
|
for day in trainingdays:
|
||||||
|
for workout in day['workouts']:
|
||||||
|
sessionsport = 'water'
|
||||||
|
try:
|
||||||
|
sessionsport = mytypes.fitmappinginv[workout['sport'].lower()]
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
preferreddate = planstartdate+timedelta(days=day['order'])
|
||||||
|
|
||||||
|
sessionmode = 'time'
|
||||||
|
if planbyrscore:
|
||||||
|
sessionmode = 'rScore'
|
||||||
|
|
||||||
|
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=workout,
|
||||||
|
manager=manager,
|
||||||
|
sessionmode=sessionmode,
|
||||||
|
comment=workout['description'],
|
||||||
|
from_plan=plan,
|
||||||
|
)
|
||||||
|
|
||||||
|
ps.save()
|
||||||
|
|
||||||
|
teams = Team.objects.filter(manager=ps.manager)
|
||||||
|
members = Rower.objects.filter(team__in=teams).distinct()
|
||||||
|
if rower in members and rower.rowerplan != 'freecoach':
|
||||||
|
ps.rower.add(rower)
|
||||||
|
ps.save()
|
||||||
|
elif ps.manager.rower == rower and rower.rowerplan != 'freecoach':
|
||||||
|
ps.rower.add(rower)
|
||||||
|
ps.save()
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
@app.task
|
@app.task
|
||||||
def handle_post_workout_api(uploadoptions, debug=False, **kwargs): # pragma: no cover
|
def handle_post_workout_api(uploadoptions, debug=False, **kwargs): # pragma: no cover
|
||||||
session = requests.session()
|
session = requests.session()
|
||||||
|
|||||||
@@ -2729,7 +2729,7 @@ def rower_view_instantplan(request, id='', userid=0):
|
|||||||
p.save()
|
p.save()
|
||||||
p.rowers.add(r)
|
p.rowers.add(r)
|
||||||
|
|
||||||
create_sessions_from_json(plansteps, r, startdate, r.user, planbyrscore=byrscore)
|
create_sessions_from_json(plansteps, r, startdate, r.user, planbyrscore=byrscore, plan=p, asynchronous=True)
|
||||||
|
|
||||||
messages.info(request, 'Your Sessions have been added')
|
messages.info(request, 'Your Sessions have been added')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user