Private
Public Access
1
0

better time switching

This commit is contained in:
Sander Roosendaal
2018-10-29 14:03:27 +01:00
parent 0d8cab48be
commit d201fc90de
6 changed files with 139 additions and 75 deletions

View File

@@ -29,7 +29,7 @@ import metrics
import numpy as np
import dataprep
import courses
import iso8601
from rowers.tasks import handle_check_race_course
def get_todays_micro(plan,thedate=date.today()):
@@ -400,8 +400,12 @@ def remove_rower_session(r,ps):
return 1
def get_dates_timeperiod(timeperiod):
def get_dates_timeperiod(timeperiod,startdatestring='',enddatestring=''):
# set start end date according timeperiod
if not timeperiod:
timeperiod = 'thisweek'
daterangetester = re.compile('^(\d+-\d+-\d+)\/(\d+-\d+-\d+)')
if timeperiod=='today':
@@ -445,11 +449,11 @@ def get_dates_timeperiod(timeperiod):
enddate = enddate.replace(day=1)
enddate = enddate-timezone.timedelta(days=1)
elif daterangetester.match(timeperiod):
startdatestring = daterangetester.match(timeperiod).group(1)
enddatestring = daterangetester.match(timeperiod).group(2)
tstartdatestring = daterangetester.match(timeperiod).group(1)
tenddatestring = daterangetester.match(timeperiod).group(2)
try:
startdate = dt.datetime.strptime(startdatestring,'%Y-%m-%d').date()
enddate = dt.datetime.strptime(enddatestring,'%Y-%m-%d').date()
startdate = dt.datetime.strptime(tstartdatestring,'%Y-%m-%d').date()
enddate = dt.datetime.strptime(tenddatestring,'%Y-%m-%d').date()
if startdate > enddate:
startdate2 = enddate
enddate = startdate
@@ -460,6 +464,19 @@ def get_dates_timeperiod(timeperiod):
else:
startdate = date.today()
enddate = date.today()
if startdatestring != '':
try:
startdate = iso8601.parse_date(startdatestring)
except ParseError:
pass
if enddatestring != '':
try:
enddate = iso8601.parse_date(enddatestring)
except ParseError:
pass
return startdate,enddate

View File

@@ -29,22 +29,22 @@
</label>
<ul>
<li id="sessions-list">
<a href="/rowers/sessions/">
<a href="/rowers/sessions/?when={{ timeperiod }}">
<i class="far fa-calendar-alt fa-fw"></i>&nbsp;Sessions
</a>
</li>
<li id="sessions-link">
<a href="/rowers/sessions/manage/">
<a href="/rowers/sessions/manage/?when={{ timeperiod }}">
<i class="fas fa-tasks fa-fw"></i>&nbsp;Link Workouts
</a>
</li>
<li id="sessions-coach">
<a href="/rowers/sessions/coach/">
<a href="/rowers/sessions/coach/?when={{ timeperiod }}">
<i class="fas fa-bullhorn fa-fw"></i>&nbsp;Coach View
</a>
</li>
<li id="sessions-print">
<a href="/rowers/sessions/print/">
<a href="/rowers/sessions/print/?when={{ timeperiod }}">
<i class="fas fa-print fa-fw"></i>&nbsp;Print View
</a>
</li>
@@ -57,17 +57,17 @@
</label>
<ul>
<li id="plan-session">
<a href="/rowers/sessions/create/">
<a href="/rowers/sessions/create/?when={{ timeperiod }}">
<i class="far fa-calendar-plus fa-fw"></i>&nbsp;Add Session
</a>
</li>
<li id="plan-teamsession">
<a href="/rowers/sessions/teamcreate/">
<a href="/rowers/sessions/teamcreate/?when={{ timeperiod }}">
<i class="fas fa-whistle fa-fw"></i>&nbsp;Add Team Session
</a>
</li>
<li id="plan-microcycle">
<a href="/rowers/sessions/multicreate/">
<a href="/rowers/sessions/multicreate/?when={{ timeperiod }}">
<i class="fas fa-expand fa-fw"></i>Plan Microcycle
</a>
</li>

View File

@@ -7,6 +7,8 @@
{% block main %}
<h1>Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
<p>{{ timeperiod }}</p>
<ul class="main-content">
<li class="grid_2">
<h1>Plan</h1>
@@ -59,7 +61,8 @@
</li>
<li class="grid_2">
<h1>New Session</h1>
<form enctype="multipart/form-data" action="{{ formloc }}" method="post">
<form enctype="multipart/form-data" action=""
method="post">
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.

View File

@@ -114,7 +114,7 @@ by your coach if you are part of a team. You can create your own
planned workouts by purchasing the "Coach" or "Self-Coach" plans.
{% endif %}
<p>
<a class="grid_2 button gray"
<a
href="/rowers/sessions/print/user/{{ rower.user.id }}/?when={{ timeperiod }}">
Print View</a>
</p>

View File

@@ -472,6 +472,10 @@ urlpatterns = [
url(r'^sessions/create/$',views.plannedsession_create_view),
url(r'^sessions/create/user/(?P<userid>\d+)$',
views.plannedsession_create_view),
url(r'^sessions/create/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',
views.plannedsession_create_view),
url(r'^sessions/create/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)$',
views.plannedsession_create_view),
url(r'^sessions/multiclone/$',views.plannedsession_multiclone_view),
url(r'^sessions/multiclone/user/(?P<userid>\d+)/$',
views.plannedsession_multiclone_view),

View File

@@ -13952,19 +13952,12 @@ def agegrouprecordview(request,sex='male',weightcategory='hwt',
redirect_field_name=None)
def plannedsession_multiclone_view(
request,
userid=0,
startdate=timezone.now()-datetime.timedelta(days=30),
enddate=timezone.now()):
userid=0,):
r = getrequestrower(request,userid=userid)
when = request.GET.get('when')
if when:
timeperiod = when
else:
timeperiod = 'thisweek'
startdate,enddate = get_dates_timeperiod(timeperiod)
startdate,enddate = get_dates_timeperiod(when)
if request.method == 'POST' and 'daterange' in request.POST:
@@ -14044,9 +14037,21 @@ def plannedsession_multiclone_view(
except IndexError:
trainingplan = None
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
breadcrumbs = [
{
'url': reverse(plannedsessions_view),
'name': 'Planned Sessions'
},
{
'url': reverse(plannedsessions_multiclone_view),
'name': 'Clone Multiple Sessions'
}
]
return render(request, 'plannedsessions_multiclone_select.html',
{'plannedsessions':sps,
'breadcrumbs':breadcrumbs,
'plan':trainingplan,
'dateform':dateform,
'startdate':startdate,
@@ -14064,19 +14069,19 @@ def plannedsession_multiclone_view(
message="This functionality requires a Coach or Self-Coach plan",
redirect_field_name=None)
def plannedsession_create_view(request,
userid=0):
userid=0,
startdatestring='',
enddatestring=''):
r = getrequestrower(request,userid=userid)
when = request.GET.get('when')
if when:
timeperiod = when
else:
timeperiod = 'thisweek'
startdate,enddate = get_dates_timeperiod(timeperiod)
startdate,enddate = get_dates_timeperiod(when,startdatestring=startdatestring,
enddatestring=enddatestring)
if request.method == 'POST':
sessioncreateform = PlannedSessionForm(request.POST)
if sessioncreateform.is_valid():
@@ -14116,15 +14121,11 @@ def plannedsession_create_view(request,
add_rower_session(r,ps)
request.session['fstartdate'] = str(arrow.get(startdate))
request.session['fenddate'] = str(arrow.get(enddate))
request.session['fprefdate'] = str(arrow.get(preferreddate))
url = reverse(plannedsession_create_view,
kwargs = {
'userid':r.user.id,
})
return HttpResponseRedirect(url)
else:
if 'fstartdate' in request.session:
try:
@@ -14182,6 +14183,7 @@ def plannedsession_create_view(request,
except IndexError:
trainingplan = None
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
return render(request,'plannedsessioncreate.html',
{
@@ -14205,12 +14207,7 @@ def plannedsession_multicreate_view(request,
r = getrequestrower(request,userid=userid)
when = request.GET.get('when')
if when:
timeperiod = when
else:
timeperiod = 'thisweek'
startdate,enddate = get_dates_timeperiod(timeperiod)
startdate,enddate = get_dates_timeperiod(when)
try:
trainingplan = TrainingPlan.objects.filter(
startdate__lte = startdate,
@@ -14296,9 +14293,21 @@ def plannedsession_multicreate_view(request,
ps_formset = PlannedSessionFormSet(queryset = qset,
initial=initials)
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
breadcrumbs = [
{
'url': reverse(plannedsessions_view),
'name': 'Planned Sessions'
},
{
'url': reverse(plannedsessions_multicreate_view),
'name': 'Plan MicroCycle'
}
]
context = {
'ps_formset':ps_formset,
'breadcrumbs':breadcrumbs,
'rower':r,
'active':'nav-plan',
'plan':trainingplan,
@@ -14318,10 +14327,6 @@ def plannedsession_teamcreate_view(request,
therower = getrequestrower(request,userid=userid)
when = request.GET.get('when')
if when:
timeperiod = when
else:
timeperiod = 'thisweek'
teams = Team.objects.filter(manager=request.user)
if len(teams)>0:
@@ -14411,10 +14416,23 @@ def plannedsession_teamcreate_view(request,
request.user
)
return render(request,'plannedsessionteamcreate.html',
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
breadcrumbs = [
{
'url': reverse(plannedsessions_view),
'name': 'Planned Sessions'
},
{
'url': reverse(plannedsessions_teamcreate_view),
'name': 'Add Team Session'
}
]
return render(request,'plannedsessionteamcreate.html',
{
'teams':get_my_teams(request.user),
'plan':trainingplan,
'breadcrumbs':breadcrumbs,
'form':sessioncreateform,
'teamform':sessionteamselectform,
'timeperiod':timeperiod,
@@ -14432,11 +14450,6 @@ def plannedsession_teamedit_view(request,
r = getrequestrower(request,userid=userid)
when = request.GET.get('when')
if when:
timeperiod = when
else:
timeperiod = 'thisweek'
try:
ps = PlannedSession.objects.get(id=sessionid)
@@ -14546,10 +14559,24 @@ def plannedsession_teamedit_view(request,
sessionrowerform.fields['members'].initial = ps.rower.all()
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
breadcrumbs = [
{
'url': reverse(plannedsessions_view),
'name': 'Planned Sessions'
},
{
'url': reverse(plannedsessions_teamcreate_view),
'name': 'Add Team Session'
}
]
return render(request,'plannedsessionteamedit.html',
{
'plannedsession':ps,
'plan':trainingplan,
'breadcrumbs':breadcrumbs,
'rower':r,
'active':'nav-plan',
'teams':get_my_teams(request.user),
@@ -14569,10 +14596,6 @@ def plannedsessions_coach_view(request,
therower = getrower(request.user)
when = request.GET.get('when')
if when:
timeperiod = when
else:
timeperiod = 'thisweek'
startdate,enddate = get_dates_timeperiod(timeperiod)
@@ -14624,10 +14647,23 @@ def plannedsessions_coach_view(request,
myteams = Team.objects.filter(manager=request.user)
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
breadcrumbs = [
{
'url': reverse(plannedsessions_view),
'name': 'Planned Sessions'
},
{
'url': reverse(plannedsessions_coach_view),
'name': 'Coach View'
}
]
return render(request,'plannedsessionscoach.html',
{
'myteams':myteams,
'plannedsessions':sps,
'breadcrumbs':breadcrumbs,
'plan':trainingplan,
'statusdict':statusdict,
'timeperiod':timeperiod,
@@ -14660,18 +14696,8 @@ def plannedsessions_view(request,
when = request.GET.get('when')
if when:
timeperiod = when
startdate,enddate = get_dates_timeperiod(timeperiod)
else:
timeperiod = 'thisweek'
startdate1,enddate1 = get_dates_timeperiod(timeperiod)
if not startdatestring:
startdate = startdate1
if not enddatestring:
enddate = enddate1
startdate,enddate = get_dates_timeperiod(when,startdatestring=startdatestring,
enddatestring=enddatestring)
try:
trainingplan = TrainingPlan.objects.filter(
@@ -14687,6 +14713,10 @@ def plannedsessions_view(request,
completeness = {}
actualvalue = {}
completiondate = {}
if not sps and request.user.rower.rowerplan == 'basic':
messages.error(request,
"You must purchase Coach or Self-coach plans or be part of a team to get planned sessions")
for ps in sps:
ratio,status,cdate = is_session_complete(r,ps)
@@ -14700,9 +14730,18 @@ def plannedsessions_view(request,
plannedsession=None,
date__gte=startdate,date__lte=enddate)
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
breadcrumbs = [
{
'url': reverse(plannedsessions_view),
'name': 'Planned Sessions'
},
]
return render(request,'plannedsessions.html',
{
'teams':get_my_teams(request.user),
'breadcrumbs':breadcrumbs,
'plannedsessions':sps,
'plan':trainingplan,
'active': 'nav-plan',
@@ -14720,10 +14759,6 @@ def plannedsessions_print_view(request,userid=0):
r = getrequestrower(request,userid=userid)
when = request.GET.get('when')
if when:
timeperiod = when
else:
timeperiod = 'thisweek'
startdate,enddate = get_dates_timeperiod(timeperiod)
@@ -17038,6 +17073,10 @@ def planmesocyclebyweek(request,id=0,userid=0):
#we're still here. We have permission
sundays = [s for s in allsundays(cycle.startdate,cycle.enddate)]
if sundays[-1] < cycle.enddate:
sundays = sundays+[cycle.enddate]
for i in range(len(sundays)):
if i==0:
monday = cycle.startdate
@@ -17047,6 +17086,7 @@ def planmesocyclebyweek(request,id=0,userid=0):
monday = cycle.startdate
nextsunday = sundays[i]
micro = TrainingMicroCycle(startdate = monday,
enddate = nextsunday,
plan = cycle,