adding currentweekplan, nextweekplan as part of project DeepWater
This commit is contained in:
@@ -316,9 +316,17 @@ class MetricsForm(forms.Form):
|
|||||||
class CNsummaryForm(forms.Form):
|
class CNsummaryForm(forms.Form):
|
||||||
file = forms.FileField(required=True, validators=[must_be_csv])
|
file = forms.FileField(required=True, validators=[must_be_csv])
|
||||||
|
|
||||||
|
class CurrentWeekJsonForm(forms.Form):
|
||||||
|
plan = forms.CharField(required=True, label="Plan Code", initial="zwolsche")
|
||||||
|
secret = forms.CharField(required=True, label="Plan Secret", initial="noot")
|
||||||
|
delete_existing = forms.BooleanField(required=False, initial=False, label="Remove any existing sessions")
|
||||||
|
|
||||||
class NextWeekJsonForm(forms.Form):
|
class NextWeekJsonForm(forms.Form):
|
||||||
|
plan = forms.CharField(required=True, label="Plan Code", initial="zwolsche")
|
||||||
|
secret = forms.CharField(required=True, label="Plan Secret", initial="noot")
|
||||||
fitness = forms.IntegerField(required=False, label='Fitness', initial=0)
|
fitness = forms.IntegerField(required=False, label='Fitness', initial=0)
|
||||||
fatigue = forms.IntegerField(required=False, label='Fatigue', initial=0)
|
fatigue = forms.IntegerField(required=False, label='Fatigue', initial=0)
|
||||||
|
delete_existing = forms.BooleanField(required=False, initial=False, label="Remove any existing sessions")
|
||||||
|
|
||||||
# The little window to type '4x2000m/500m' to update the workout summary
|
# The little window to type '4x2000m/500m' to update the workout summary
|
||||||
|
|
||||||
|
|||||||
@@ -1088,6 +1088,41 @@ def correct_intensity(workout):
|
|||||||
|
|
||||||
return workout
|
return workout
|
||||||
|
|
||||||
|
def remove_next_week_sessions(rower):
|
||||||
|
# remove all sessions in the next week
|
||||||
|
today = timezone.now()
|
||||||
|
startdate = today - timezone.timedelta(days=today.weekday())+timezone.timedelta(days=7)
|
||||||
|
enddate = startdate + timezone.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()
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
|
def remove_this_week_sessions(rower):
|
||||||
|
# remove all sessions in the current week
|
||||||
|
today = timezone.now()
|
||||||
|
startdate = today - timezone.timedelta(days=today.weekday())
|
||||||
|
enddate = startdate + timezone.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()
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
def create_next_week_from_json(plansteps, rower, planbyrscore=False, plan=None,
|
def create_next_week_from_json(plansteps, rower, planbyrscore=False, plan=None,
|
||||||
startdate=timezone.now()-timezone.timedelta(days=timezone.now().weekday())+timezone.timedelta(days=7)):
|
startdate=timezone.now()-timezone.timedelta(days=timezone.now().weekday())+timezone.timedelta(days=7)):
|
||||||
|
|||||||
@@ -4217,22 +4217,57 @@ def planmacrocyclebymonth(request, id=0, userid=0): # pragma: no cover
|
|||||||
def currentweekplan_view(request):
|
def currentweekplan_view(request):
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
|
|
||||||
post_data = {
|
form = CurrentWeekJsonForm()
|
||||||
'secret': 'noot', # to be replaced
|
|
||||||
'plan': 'zwolsche', # to be replaced
|
|
||||||
}
|
|
||||||
|
|
||||||
url = "http://localhost:8898/current-week-plan/"
|
if request.method == "POST":
|
||||||
response = requests.post(url, data=post_data)
|
form = CurrentWeekJsonForm(request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
secret = form.cleaned_data['secret']
|
||||||
|
plan = form.cleaned_data['plan']
|
||||||
|
delete_existing = form.cleaned_data['delete_existing']
|
||||||
|
|
||||||
data = response.json()
|
post_data = {
|
||||||
|
'secret': secret,
|
||||||
|
'plan': plan,
|
||||||
|
}
|
||||||
|
|
||||||
create_next_week_from_json(data, r, startdate=timezone.now()-timezone.timedelta(days=timezone.now().weekday()))
|
url = "http://localhost:8898/current-week-plan/"
|
||||||
messages.info(request,"Your planned sessions were created")
|
response = requests.post(url, data=post_data)
|
||||||
|
|
||||||
url = reverse("plannedsessions_view")
|
data = response.json()
|
||||||
|
if response.status_code in [200,201]:
|
||||||
|
if delete_existing:
|
||||||
|
remove_this_week_sessions(r)
|
||||||
|
|
||||||
|
create_next_week_from_json(
|
||||||
|
data, r,
|
||||||
|
startdate=timezone.now()-timezone.timedelta(days=timezone.now().weekday()))
|
||||||
|
|
||||||
|
messages.info(request,"Your planned sessions were created")
|
||||||
|
|
||||||
|
url = reverse("plannedsessions_view")
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
active = 'nav-plan'
|
||||||
|
|
||||||
|
breadcrumbs = [
|
||||||
|
{
|
||||||
|
'url': reverse('plannedsessions_view'),
|
||||||
|
'name': 'Sessions'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'url': reverse('currentweekplan_view'),
|
||||||
|
'name': "Next week"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
return render(request,
|
||||||
|
'loadnextweek.html',
|
||||||
|
{'rower': r,
|
||||||
|
'form': form,
|
||||||
|
'active': active,
|
||||||
|
'breadcrumbs': breadcrumbs})
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
|
||||||
|
|
||||||
@user_passes_test(can_plan, login_url="/rowers/paidplans",
|
@user_passes_test(can_plan, login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan",
|
message="This functionality requires a Pro plan",
|
||||||
@@ -4255,12 +4290,15 @@ def nextweekplan_view(request):
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
fitness = form.cleaned_data['fitness']
|
fitness = form.cleaned_data['fitness']
|
||||||
fatigue = form.cleaned_data['fatigue']
|
fatigue = form.cleaned_data['fatigue']
|
||||||
|
secret = form.cleaned_data['secret']
|
||||||
|
plan = form.cleaned_data['plan']
|
||||||
|
delete_existing = form.cleaned_data['delete_existing']
|
||||||
|
|
||||||
post_data = {
|
post_data = {
|
||||||
'fitness':fitness,
|
'fitness':fitness,
|
||||||
'fatigue':fatigue,
|
'fatigue':fatigue,
|
||||||
'plan':'zwolsche', # to be replaced
|
'plan': plan,
|
||||||
'secret':'noot', # to be replaced
|
'secret': secret,
|
||||||
}
|
}
|
||||||
|
|
||||||
# post form.cleaned_data to localhost:8898/next-week-plan
|
# post form.cleaned_data to localhost:8898/next-week-plan
|
||||||
@@ -4269,8 +4307,13 @@ def nextweekplan_view(request):
|
|||||||
|
|
||||||
data = response.json()
|
data = response.json()
|
||||||
|
|
||||||
create_next_week_from_json(data, r)
|
if response.status_code in [200,201]:
|
||||||
messages.info(request,"Your planned sessions were created")
|
if delete_existing:
|
||||||
|
remove_next_week_sessions(r)
|
||||||
|
create_next_week_from_json(data, r)
|
||||||
|
messages.info(request,"Your planned sessions were created")
|
||||||
|
else:
|
||||||
|
messages.error(request,"Unsuccessful")
|
||||||
|
|
||||||
|
|
||||||
active = 'nav-plan'
|
active = 'nav-plan'
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ from rowers.forms import (
|
|||||||
TrainingPlanBillingForm, InstantPlanSelectForm,
|
TrainingPlanBillingForm, InstantPlanSelectForm,
|
||||||
TrainingZonesForm, InstrokeForm, InStrokeMultipleCompareForm,
|
TrainingZonesForm, InstrokeForm, InStrokeMultipleCompareForm,
|
||||||
ForceCurveMultipleCompareForm, PlanByRscoreForm,
|
ForceCurveMultipleCompareForm, PlanByRscoreForm,
|
||||||
AssignChoices, NextWeekJsonForm,
|
AssignChoices, NextWeekJsonForm, CurrentWeekJsonForm,
|
||||||
)
|
)
|
||||||
|
|
||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
|
|||||||
Reference in New Issue
Block a user