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

View File

@@ -11,7 +11,8 @@ from urllib.parse import urlparse, parse_qs
from json.decoder import JSONDecodeError
import ruptures as rpt
from rowers.courses import getnearestraces, getnearestcourses
from rowers.courses import getnearestcourses
def default(o): # pragma: no cover
if isinstance(o, numpy.int64):