Private
Public Access
1
0

planviews done

This commit is contained in:
Sander Roosendaal
2022-02-15 14:43:20 +01:00
parent 8e94e28173
commit fb98877b5f
3 changed files with 51 additions and 112 deletions

BIN
rowers/tests/testdata/testdata.tcx.gz vendored Normal file

Binary file not shown.

View File

@@ -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):

View File

@@ -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):