planviews done
This commit is contained in:
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Normal file
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Normal file
Binary file not shown.
@@ -3,10 +3,7 @@ from rowers.utils import allmonths
|
|||||||
from rowers.utils import allsundays
|
from rowers.utils import allsundays
|
||||||
|
|
||||||
from rowers.views.statements import *
|
from rowers.views.statements import *
|
||||||
from rowingdata import trainingparser
|
|
||||||
import json
|
|
||||||
|
|
||||||
from taggit.models import Tag
|
|
||||||
import rowers.garmin_stuff as gs
|
import rowers.garmin_stuff as gs
|
||||||
from rowers import credits
|
from rowers import credits
|
||||||
|
|
||||||
@@ -57,17 +54,17 @@ def plannedsession_comment_view(request, id=0, userid=0):
|
|||||||
elif ps.sessiontype == 'indoorrace': # pragma: no cover
|
elif ps.sessiontype == 'indoorrace': # pragma: no cover
|
||||||
sessiontype = 'indoor online virtual race'
|
sessiontype = 'indoor online virtual race'
|
||||||
|
|
||||||
res = myqueue(queuehigh,
|
_ = myqueue(queuehigh,
|
||||||
handle_sendemailnewcomment, r.user.first_name,
|
handle_sendemailnewcomment, r.user.first_name,
|
||||||
r.user.last_name,
|
r.user.last_name,
|
||||||
r.user.email,
|
r.user.email,
|
||||||
request.user.first_name,
|
request.user.first_name,
|
||||||
request.user.last_name,
|
request.user.last_name,
|
||||||
comment, ps.name, ps.id,
|
comment, ps.name, ps.id,
|
||||||
emailbounced=r.emailbounced,
|
emailbounced=r.emailbounced,
|
||||||
sessiontype=sessiontype,
|
sessiontype=sessiontype,
|
||||||
commentlink=url
|
commentlink=url
|
||||||
)
|
)
|
||||||
|
|
||||||
commenters = {oc.user for oc in comments if oc.notification}
|
commenters = {oc.user for oc in comments if oc.notification}
|
||||||
if ps.sessiontype == 'race': # pragma: no cover
|
if ps.sessiontype == 'race': # pragma: no cover
|
||||||
@@ -94,21 +91,21 @@ def plannedsession_comment_view(request, id=0, userid=0):
|
|||||||
pass
|
pass
|
||||||
if u != request.user and u != r.user: # pragma: no cover
|
if u != request.user and u != r.user: # pragma: no cover
|
||||||
ocr = Rower.objects.get(user=u)
|
ocr = Rower.objects.get(user=u)
|
||||||
res = myqueue(queue,
|
_ = myqueue(queue,
|
||||||
handle_sendemailnewresponse,
|
handle_sendemailnewresponse,
|
||||||
u.first_name,
|
u.first_name,
|
||||||
u.last_name,
|
u.last_name,
|
||||||
u.email,
|
u.email,
|
||||||
request.user.first_name,
|
request.user.first_name,
|
||||||
request.user.last_name,
|
request.user.last_name,
|
||||||
comment,
|
comment,
|
||||||
ps.name,
|
ps.name,
|
||||||
ps.id,
|
ps.id,
|
||||||
c.id,
|
c.id,
|
||||||
emailbounced=ocr.emailbounced,
|
emailbounced=ocr.emailbounced,
|
||||||
sessiontype=sessiontype,
|
sessiontype=sessiontype,
|
||||||
commentlink=url
|
commentlink=url
|
||||||
)
|
)
|
||||||
if ps.sessiontype in ['race', 'indoorrace']: # pragma: no cover
|
if ps.sessiontype in ['race', 'indoorrace']: # pragma: no cover
|
||||||
followers = VirtualRaceFollower.objects.filter(race__id=ps.id)
|
followers = VirtualRaceFollower.objects.filter(race__id=ps.id)
|
||||||
for follower in followers:
|
for follower in followers:
|
||||||
@@ -116,17 +113,17 @@ def plannedsession_comment_view(request, id=0, userid=0):
|
|||||||
if follower.user:
|
if follower.user:
|
||||||
othername = follower.user.first_name+' '+follower.user.last_name
|
othername = follower.user.first_name+' '+follower.user.last_name
|
||||||
email = follower.emailaddress
|
email = follower.emailaddress
|
||||||
res = myqueue(queue,
|
_ = myqueue(queue,
|
||||||
handle_sendemailnewresponse,
|
handle_sendemailnewresponse,
|
||||||
othername, '', email,
|
othername, '', email,
|
||||||
request.user.first_name,
|
request.user.first_name,
|
||||||
request.user.last_name,
|
request.user.last_name,
|
||||||
comment,
|
comment,
|
||||||
ps.name, ps.id, c.id,
|
ps.name, ps.id, c.id,
|
||||||
emailbounced=False,
|
emailbounced=False,
|
||||||
sessiontype=sessiontype,
|
sessiontype=sessiontype,
|
||||||
commentlink=url,
|
commentlink=url,
|
||||||
)
|
)
|
||||||
|
|
||||||
url = reverse('plannedsession_comment_view', kwargs={'id': ps.id})
|
url = reverse('plannedsession_comment_view', kwargs={'id': ps.id})
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
@@ -201,7 +198,7 @@ def plannedsession_message_view(request, id=0, userid=0):
|
|||||||
rowername = participant.user.first_name
|
rowername = participant.user.first_name
|
||||||
fromemail = ps.manager.email
|
fromemail = ps.manager.email
|
||||||
|
|
||||||
job = myqueue(
|
_ = myqueue(
|
||||||
queue,
|
queue,
|
||||||
handle_send_template_email,
|
handle_send_template_email,
|
||||||
'virtualracemessage.html',
|
'virtualracemessage.html',
|
||||||
@@ -423,7 +420,6 @@ def plannedsession_multiclone_view(
|
|||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def template_share_view(request, id=0, userid=0):
|
def template_share_view(request, id=0, userid=0):
|
||||||
r = getrequestplanrower(request, userid=userid)
|
|
||||||
ps = get_object_or_404(PlannedSession, pk=id)
|
ps = get_object_or_404(PlannedSession, pk=id)
|
||||||
if ps.can_be_shared:
|
if ps.can_be_shared:
|
||||||
ps.is_public = True
|
ps.is_public = True
|
||||||
@@ -440,7 +436,6 @@ def template_share_view(request, id=0, userid=0):
|
|||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def template_makeprivate_view(request, id=0, userid=0):
|
def template_makeprivate_view(request, id=0, userid=0):
|
||||||
r = getrequestplanrower(request, userid=userid)
|
|
||||||
ps = get_object_or_404(PlannedSession, pk=id)
|
ps = get_object_or_404(PlannedSession, pk=id)
|
||||||
ps.is_public = False
|
ps.is_public = False
|
||||||
ps.save()
|
ps.save()
|
||||||
@@ -805,8 +800,6 @@ def plannedsession_multicreate_view(request,
|
|||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
|
|
||||||
m = Rower.objects.get(user=request.user)
|
|
||||||
|
|
||||||
qset = PlannedSession.objects.filter(
|
qset = PlannedSession.objects.filter(
|
||||||
rower__in=[r],
|
rower__in=[r],
|
||||||
manager=request.user,
|
manager=request.user,
|
||||||
@@ -934,10 +927,7 @@ def plannedsession_teamcreate_view(request,
|
|||||||
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
||||||
|
|
||||||
teams = Team.objects.filter(manager=request.user)
|
teams = Team.objects.filter(manager=request.user)
|
||||||
if teams.count() > 0:
|
if teams.count() == 0:
|
||||||
teamchoices = [(team.id, team.name) for team in teams]
|
|
||||||
teaminitial = [str(teams[0].id)]
|
|
||||||
else:
|
|
||||||
messages.info(
|
messages.info(
|
||||||
request, "You have no teams established yet. We are redirecting you to the Team Management page.")
|
request, "You have no teams established yet. We are redirecting you to the Team Management page.")
|
||||||
url = reverse('rower_teams_view')
|
url = reverse('rower_teams_view')
|
||||||
@@ -1000,14 +990,6 @@ def plannedsession_teamcreate_view(request,
|
|||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
#url = reverse(plannedsession_teamcreate_view)
|
|
||||||
#startdatestring = startdate.strftime('%Y-%m-%d')
|
|
||||||
#enddatestring = enddate.strftime('%Y-%m-%d')
|
|
||||||
#url += '?when='+startdatestring+'/'+enddatestring
|
|
||||||
|
|
||||||
#next = request.GET.get('next', url)
|
|
||||||
|
|
||||||
# return HttpResponseRedirect(next)
|
|
||||||
else: # pragma: no cover
|
else: # pragma: no cover
|
||||||
timeperiod = startdate.strftime(
|
timeperiod = startdate.strftime(
|
||||||
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
||||||
@@ -1123,7 +1105,6 @@ def plannedsession_teamedit_view(request,
|
|||||||
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
||||||
|
|
||||||
teams = Team.objects.filter(manager=request.user)
|
teams = Team.objects.filter(manager=request.user)
|
||||||
teamchoices = [(team.id, team.name) for team in teams]
|
|
||||||
|
|
||||||
teaminitial = ps.team.all()
|
teaminitial = ps.team.all()
|
||||||
|
|
||||||
@@ -1387,7 +1368,6 @@ def plannedsessions_coach_view(request,
|
|||||||
'dateform': dateform,
|
'dateform': dateform,
|
||||||
'timeperiod': timeperiod,
|
'timeperiod': timeperiod,
|
||||||
'rowers': rowers,
|
'rowers': rowers,
|
||||||
'rower': therower,
|
|
||||||
'active': 'nav-plan',
|
'active': 'nav-plan',
|
||||||
'theteam': theteam,
|
'theteam': theteam,
|
||||||
'unmatchedworkouts': unmatchedworkouts,
|
'unmatchedworkouts': unmatchedworkouts,
|
||||||
@@ -1587,10 +1567,6 @@ def plannedsessions_print_view(request, userid=0, startdatestring='', enddatestr
|
|||||||
|
|
||||||
sps = get_sessions(r, startdate=startdate, enddate=enddate)
|
sps = get_sessions(r, startdate=startdate, enddate=enddate)
|
||||||
|
|
||||||
completeness = {}
|
|
||||||
actualvalue = {}
|
|
||||||
completiondate = {}
|
|
||||||
|
|
||||||
timeperiod = startdate.strftime(
|
timeperiod = startdate.strftime(
|
||||||
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
||||||
return render(request, 'plannedsessions_print.html',
|
return render(request, 'plannedsessions_print.html',
|
||||||
@@ -1781,14 +1757,6 @@ def plannedsession_clone_view(request, id=0, userid=0):
|
|||||||
startdate = startdate.date()
|
startdate = startdate.date()
|
||||||
enddate = enddate.date()
|
enddate = enddate.date()
|
||||||
|
|
||||||
try:
|
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
|
||||||
startdate__lte=startdate,
|
|
||||||
rowers=r,
|
|
||||||
enddate__gte=enddate)[0]
|
|
||||||
except IndexError: # pragma: no cover
|
|
||||||
trainingplan = None
|
|
||||||
|
|
||||||
ps = get_object_or_404(PlannedSession, pk=id)
|
ps = get_object_or_404(PlannedSession, pk=id)
|
||||||
|
|
||||||
rowers = ps.rower.all()
|
rowers = ps.rower.all()
|
||||||
@@ -1844,10 +1812,7 @@ def plannedsession_teamclone_view(request, id=0):
|
|||||||
r = getrequestplanrower(request)
|
r = getrequestplanrower(request)
|
||||||
|
|
||||||
teams = Team.objects.filter(manager=request.user)
|
teams = Team.objects.filter(manager=request.user)
|
||||||
if teams.count() > 0: # pragma: no cover
|
if teams.count() == 0: # pragma: no cover
|
||||||
teamchoices = [(team.id, team.name) for team in teams]
|
|
||||||
teaminitial = [str(teams[0].id)]
|
|
||||||
else: # pragma: no cover
|
|
||||||
messages.info(
|
messages.info(
|
||||||
request, "You have no teams established yet. We are redirecting you to the Team Management page.")
|
request, "You have no teams established yet. We are redirecting you to the Team Management page.")
|
||||||
url = reverse('rower_teams_view')
|
url = reverse('rower_teams_view')
|
||||||
@@ -1857,14 +1822,6 @@ def plannedsession_teamclone_view(request, id=0):
|
|||||||
startdate = startdate.date()
|
startdate = startdate.date()
|
||||||
enddate = enddate.date()
|
enddate = enddate.date()
|
||||||
|
|
||||||
try:
|
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
|
||||||
startdate__lte=startdate,
|
|
||||||
rowers=r,
|
|
||||||
enddate__gte=enddate)[0]
|
|
||||||
except IndexError: # pragma: no cover
|
|
||||||
trainingplan = None
|
|
||||||
|
|
||||||
ps = get_object_or_404(PlannedSession, pk=id)
|
ps = get_object_or_404(PlannedSession, pk=id)
|
||||||
|
|
||||||
ps.pk = None
|
ps.pk = None
|
||||||
@@ -2140,9 +2097,6 @@ def plannedsession_edit_view(request, id=0, userid=0):
|
|||||||
'userid': r.user.id,
|
'userid': r.user.id,
|
||||||
})
|
})
|
||||||
|
|
||||||
startdatestring = startdate.strftime('%Y-%m-%d')
|
|
||||||
enddatestring = enddate.strftime('%Y-%m-%d')
|
|
||||||
|
|
||||||
url += '?when='+timeperiod
|
url += '?when='+timeperiod
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
@@ -2215,9 +2169,6 @@ def plannedsession_edit_view(request, id=0, userid=0):
|
|||||||
|
|
||||||
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
|
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
|
||||||
def plannedsession_detach_view(request, id=0, psid=0):
|
def plannedsession_detach_view(request, id=0, psid=0):
|
||||||
|
|
||||||
r = getrequestrower(request)
|
|
||||||
|
|
||||||
ps = get_object_or_404(PlannedSession, pk=psid)
|
ps = get_object_or_404(PlannedSession, pk=psid)
|
||||||
|
|
||||||
w = get_workout(id)
|
w = get_workout(id)
|
||||||
@@ -2236,10 +2187,6 @@ def plannedsession_view(request, id=0, userid=0):
|
|||||||
r = getrequestplanrower(request, userid=userid)
|
r = getrequestplanrower(request, userid=userid)
|
||||||
|
|
||||||
ps = get_object_or_404(PlannedSession, pk=id)
|
ps = get_object_or_404(PlannedSession, pk=id)
|
||||||
if ps.steps is not None: # pragma: no cover
|
|
||||||
jsons = ps.steps
|
|
||||||
else:
|
|
||||||
jsons = {}
|
|
||||||
|
|
||||||
try: # pragma: no cover
|
try: # pragma: no cover
|
||||||
r = VirtualRace.objects.get(id=ps.id)
|
r = VirtualRace.objects.get(id=ps.id)
|
||||||
@@ -2324,14 +2271,11 @@ def plannedsession_view(request, id=0, userid=0):
|
|||||||
coursecompleted=False,
|
coursecompleted=False,
|
||||||
)
|
)
|
||||||
record.save()
|
record.save()
|
||||||
job = myqueue(queue, handle_check_race_course,
|
_ = myqueue(queue, handle_check_race_course,
|
||||||
w.csvfilename, w.id, ps.course.id,
|
w.csvfilename, w.id, ps.course.id,
|
||||||
record.id,
|
record.id,
|
||||||
w.user.user.email, w.user.user.first_name,
|
w.user.user.email, w.user.user.first_name,
|
||||||
mode='coursetest')
|
mode='coursetest')
|
||||||
|
|
||||||
intsecs = 0
|
|
||||||
microsecs = 0
|
|
||||||
|
|
||||||
# taking workout duration plus 1 minute penalty
|
# taking workout duration plus 1 minute penalty
|
||||||
wdict['time'] = datetime.timedelta(
|
wdict['time'] = datetime.timedelta(
|
||||||
@@ -2571,10 +2515,6 @@ def rower_view_instantplan(request, id='', userid=0):
|
|||||||
raise Http404("Plan does not exist")
|
raise Http404("Plan does not exist")
|
||||||
|
|
||||||
plan = InstantPlan.objects.get(uuid=id)
|
plan = InstantPlan.objects.get(uuid=id)
|
||||||
try:
|
|
||||||
discountedprice = credits.discounted(plan.price, r)
|
|
||||||
except AttributeError: # pragma: no cover
|
|
||||||
discountedprice = plan.price
|
|
||||||
|
|
||||||
authorizationstring = 'Bearer '+settings.WORKOUTS_FIT_TOKEN
|
authorizationstring = 'Bearer '+settings.WORKOUTS_FIT_TOKEN
|
||||||
url = settings.WORKOUTS_FIT_URL+"/trainingplan/"+id
|
url = settings.WORKOUTS_FIT_URL+"/trainingplan/"+id
|
||||||
@@ -2637,7 +2577,7 @@ def rower_view_instantplan(request, id='', userid=0):
|
|||||||
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
if plan.price > 0: # pragma: no cover
|
if plan.price > 0: # pragma: no cover
|
||||||
eurocredits = credits.withdraw(plan.price, r)
|
_ = credits.withdraw(plan.price, r)
|
||||||
|
|
||||||
plansteps = response.json()
|
plansteps = response.json()
|
||||||
name = form.cleaned_data['name']
|
name = form.cleaned_data['name']
|
||||||
@@ -2811,7 +2751,6 @@ def add_instantplan_view(request):
|
|||||||
|
|
||||||
def rower_select_instantplan(request, id=0):
|
def rower_select_instantplan(request, id=0):
|
||||||
r = getrequestrower(request, userid=id)
|
r = getrequestrower(request, userid=id)
|
||||||
themanager = getrower(request.user)
|
|
||||||
|
|
||||||
# get and present available plans
|
# get and present available plans
|
||||||
ips = InstantPlan.objects.all().order_by(
|
ips = InstantPlan.objects.all().order_by(
|
||||||
@@ -2839,7 +2778,7 @@ def rower_select_instantplan(request, id=0):
|
|||||||
'rower': r,
|
'rower': r,
|
||||||
'active': 'nav-plan',
|
'active': 'nav-plan',
|
||||||
'plans': ips,
|
'plans': ips,
|
||||||
|
'breadcrumbs': breadcrumbs,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -2848,7 +2787,6 @@ def rower_select_instantplan(request, id=0):
|
|||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def rower_create_trainingplan(request, id=0):
|
def rower_create_trainingplan(request, id=0):
|
||||||
therower = getrequestrower(request, userid=id)
|
therower = getrequestrower(request, userid=id)
|
||||||
theuser = therower.user
|
|
||||||
themanager = getrower(request.user)
|
themanager = getrower(request.user)
|
||||||
|
|
||||||
if request.method == 'POST' and 'date' in request.POST:
|
if request.method == 'POST' and 'date' in request.POST:
|
||||||
@@ -3570,7 +3508,7 @@ class TrainingMicroCycleUpdate(UpdateView): # pragma: no cover
|
|||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
form.instance.user = self.request.user
|
form.instance.user = self.request.user
|
||||||
form.instance.post_date = datetime.datetime.now()
|
form.instance.post_date = datetime.datetime.now()
|
||||||
microcycle = form.save()
|
_ = form.save()
|
||||||
|
|
||||||
return super(TrainingMicroCycleUpdate, self).form_valid(form)
|
return super(TrainingMicroCycleUpdate, self).form_valid(form)
|
||||||
|
|
||||||
@@ -3689,7 +3627,7 @@ class TrainingTargetUpdate(UpdateView): # pragma: no cover
|
|||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
form.instance.user = self.request.user
|
form.instance.user = self.request.user
|
||||||
form.instance.post_date = datetime.datetime.now()
|
form.instance.post_date = datetime.datetime.now()
|
||||||
target = form.save()
|
_ = form.save()
|
||||||
return super(TrainingTargetUpdate, self).form_valid(form)
|
return super(TrainingTargetUpdate, self).form_valid(form)
|
||||||
|
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ from urllib.parse import urlparse, parse_qs
|
|||||||
from json.decoder import JSONDecodeError
|
from json.decoder import JSONDecodeError
|
||||||
|
|
||||||
import ruptures as rpt
|
import ruptures as rpt
|
||||||
from rowers.courses import getnearestraces, getnearestcourses
|
from rowers.courses import getnearestcourses
|
||||||
|
|
||||||
|
|
||||||
def default(o): # pragma: no cover
|
def default(o): # pragma: no cover
|
||||||
if isinstance(o, numpy.int64):
|
if isinstance(o, numpy.int64):
|
||||||
|
|||||||
Reference in New Issue
Block a user