diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz new file mode 100644 index 00000000..606ac044 Binary files /dev/null and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index aa0a0bc4..b8dc1a75 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -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): diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 2d809408..3922a2fe 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -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):