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.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):
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user