better time switching
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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> 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> 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> 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> 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> 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> 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>
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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),
|
||||
|
||||
160
rowers/views.py
160
rowers/views.py
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user