diff --git a/rowers/views/errorviews.py b/rowers/views/errorviews.py index 7117ce55..945cffd5 100644 --- a/rowers/views/errorviews.py +++ b/rowers/views/errorviews.py @@ -1,45 +1,30 @@ from rowers.views.statements import * -from django.core.exceptions import PermissionDenied -from django.http import HttpResponse -from django.test import SimpleTestCase, override_settings -from django.urls import path - def servererror_view(request): # pragma: no cover raise ValueError -# Custom error pages with Rowsandall headers - def error500_view(request): response = render(request, '500.html', {}, status=500) -# context_instance = RequestContext(request)) - response.status_code = 500 return response def error404_view(request, exception): response = render(request, '404.html', {}, status=404) -# context_instance = RequestContext(request)) - response.status_code = 404 return response def error400_view(request, exception): response = render(request, '400.html', {}, status=400) -# context_instance = RequestContext(request)) - response.status_code = 400 return response def error403_view(request, *args, **kwargs): # pragma: no cover response = render(request, '403.html', {}, status=403) -# context_instance = RequestContext(request)) - response.status_code = 403 return response diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index a461524f..8bf4efd1 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -138,8 +138,6 @@ def course_map_view(request, id=0): def course_delete_view(request, id=0): course = get_object_or_404(GeoCourse, pk=id) - r = getrower(request.user) - ps = PlannedSession.objects.filter(course=course) nosessions = len(ps) == 0 @@ -590,7 +588,7 @@ def course_update_confirm(request, id=0, newid=0): if form.is_valid(): doupdate = form.cleaned_data['doupdate'] if doupdate: - res = courses.replacecourse(course, course2) + _ = courses.replacecourse(course, course2) messages.info( request, 'All challenges with this course are updated') url = reverse(course_view, @@ -711,10 +709,6 @@ def course_upload_view(request): @login_required() def standard_deactivate_view(request, id=0): - is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' - - r = getrower(request.user) - try: collection = StandardCollection.objects.get(id=id) except StandardCollection.DoesNotExist: # pragma: no cover @@ -758,7 +752,6 @@ def standards_download_view(request, id=0): @login_required() def standards_upload_view(request, id=0): is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' - r = getrower(request.user) if id != 0: # pragma: no cover collection = StandardCollection.objects.get(id=id) @@ -984,9 +977,9 @@ def virtualevent_disqualify_view(request, id=0, recordid=0): r = Rower.objects.get(id=record.userid) name = record.username - job = myqueue(queue, handle_send_disqualification_email, - r.user.email, name, - disqualifier, message, race.name) + _ = myqueue(queue, handle_send_disqualification_email, + r.user.email, name, + disqualifier, message, race.name) messages.info( request, "We have invalidated the result for: "+str(record)) @@ -1098,6 +1091,7 @@ def virtualevent_disqualify_view(request, id=0, recordid=0): 'mapdiv': mapdiv, 'form': form, 'race': race, + 'breadcrumbs': breadcrumbs, 'record': record, }) @@ -1140,9 +1134,9 @@ def virtualevent_withdrawresult_view(request, id=0, recordid=0): r = Rower.objects.get(id=record.userid) name = record.username - job = myqueue(queue, handle_send_withdraw_email, - r.user.email, name, - disqualifier, message, race.name) + _ = myqueue(queue, handle_send_withdraw_email, + r.user.email, name, + disqualifier, message, race.name) messages.info( request, "We have invalidated the result for: "+str(record)) @@ -1252,6 +1246,7 @@ def virtualevent_withdrawresult_view(request, id=0, recordid=0): 'mapdiv': mapdiv, 'form': form, 'race': race, + 'breadcrumbs': breadcrumbs, 'record': record, }) @@ -1473,8 +1468,6 @@ def do_encode(x): @login_required() @permission_required('virtualevent.change_race', fn=get_virtualevent_by_pk, raise_exception=True) def virtualevent_results_download_view(request, id=0): - r = getrower(request.user) - try: race = VirtualRace.objects.get(id=id) except VirtualRace.DoesNotExist: # pragma: no cover @@ -1538,12 +1531,6 @@ def virtualevent_ranking_view(request, id=0): workoutid__isnull=True, ) - dnf = resultobj.objects.filter( - race=race, - workoutid__isnull=False, - coursecompleted=False, - ) - if not request.user.is_anonymous: if race_can_register(r, race): # pragma: no cover buttons += ['registerbutton'] @@ -1745,8 +1732,6 @@ def virtualevent_addboat_view(request, id=0): boattypes = [record.boattype for record in records] boatclasses = [record.boatclass for record in records] - allowedboats = tuple( - [type for type in mytypes.boattypes if type[0] not in boattypes]) # we're still here if request.method == 'POST': @@ -1821,7 +1806,6 @@ def virtualevent_addboat_view(request, id=0): boatclass = coursestandard.boatclass weightcategory = coursestandard.weightclass adaptiveclass = coursestandard.adaptiveclass - skillclass = coursestandard.skillclass returnurl = reverse(virtualevent_register_view, kwargs={'id': race.id}) @@ -1873,7 +1857,7 @@ def virtualevent_addboat_view(request, id=0): # send email about opt out if not acceptsocialmedia: - job = myqueue( + _ = myqueue( queue, handle_sendemail_optout, race.manager.email, race.manager.first_name, @@ -1895,7 +1879,7 @@ def virtualevent_addboat_view(request, id=0): othername = otheruser.user.first_name+' '+otheruser.user.last_name registeredname = r.user.first_name+' '+r.user.last_name if otherrecord.emailnotifications: - job = myqueue( + _ = myqueue( queue, handle_sendemail_raceregistration, otheruser.user.email, othername, @@ -1915,7 +1899,7 @@ def virtualevent_addboat_view(request, id=0): registeredname = r.user.first_name+' '+r.user.last_name email = follower.emailaddress - job = myqueue( + _ = myqueue( queue, handle_sendemail_raceregistration, email, othername, @@ -2074,7 +2058,6 @@ def virtualevent_register_view(request, id=0): boatclass = coursestandard.boatclass weightcategory = coursestandard.weightclass adaptiveclass = coursestandard.adaptiveclass - skillclass = coursestandard.skillclass returnurl = reverse(virtualevent_register_view, kwargs={'id': race.id}) @@ -2125,7 +2108,7 @@ def virtualevent_register_view(request, id=0): add_rower_race(r, race) # send email about opt out if not acceptsocialmedia: - job = myqueue( + _ = myqueue( queue, handle_sendemail_optout, race.manager.email, race.manager.first_name, @@ -2148,7 +2131,7 @@ def virtualevent_register_view(request, id=0): othername = otheruser.user.first_name+' '+otheruser.user.last_name registeredname = r.user.first_name+' '+r.user.last_name if otherrecord.emailnotifications: - job = myqueue( + _ = myqueue( queue, handle_sendemail_raceregistration, otheruser.user.email, othername, @@ -2168,7 +2151,7 @@ def virtualevent_register_view(request, id=0): registeredname = r.user.first_name+' '+r.user.last_name email = follower.emailaddress - job = myqueue( + _ = myqueue( queue, handle_sendemail_raceregistration, email, othername, @@ -2361,7 +2344,6 @@ def indoorvirtualevent_register_view(request, id=0): boatclass = coursestandard.boatclass weightcategory = coursestandard.weightclass adaptiveclass = coursestandard.adaptiveclass - skillclass = coursestandard.skillclass returnurl = reverse(virtualevent_register_view, kwargs={'id': race.id}) @@ -2412,7 +2394,7 @@ def indoorvirtualevent_register_view(request, id=0): # send email about opt out if not acceptsocialmedia: - job = myqueue( + _ = myqueue( queue, handle_sendemail_optout, race.manager.email, race.manager.first_name, @@ -2435,7 +2417,7 @@ def indoorvirtualevent_register_view(request, id=0): othername = otheruser.user.first_name+' '+otheruser.user.last_name registeredname = r.user.first_name+' '+r.user.last_name if otherrecord.emailnotifications: - job = myqueue( + _ = myqueue( queue, handle_sendemail_raceregistration, otheruser.user.email, othername, @@ -2455,7 +2437,7 @@ def indoorvirtualevent_register_view(request, id=0): registeredname = r.user.first_name+' '+r.user.last_name email = follower.emailaddress - job = myqueue( + _ = myqueue( queue, handle_sendemail_raceregistration, email, othername, @@ -3197,8 +3179,15 @@ def virtualevent_submit_result_view(request, id=0, workoutid=0): ) if records.count() == 0: # pragma: no cover - hasinitial, boattype, boatclass, adaptiveclass, weightclass, sex, referencespeed, initialcategory = default_class( - r, None, race) + ( + hasinitial, + boattype, + boatclass, + adaptiveclass, + weightclass, + sex, + referencespeed, + initialcategory) = default_class(r, None, race) if not hasinitial: messages.error(request, "Sorry, you have to register first") url = reverse('virtualevent_view', @@ -3314,7 +3303,9 @@ def virtualevent_submit_result_view(request, id=0, workoutid=0): request.session['async_tasks'] = [(jobid, 'submit_race')] messages.info( - request, "We are evaluating your result. The page will reload when we're done. Your result will show up if you adhered to the course") + request, "We are evaluating your result." + " The page will reload when we're done. Your result will show up if you adhered" + " to the course") if result: otherrecords = resultobj.objects.filter( @@ -3328,7 +3319,7 @@ def virtualevent_submit_result_view(request, id=0, workoutid=0): othername = otheruser.user.first_name+' '+otheruser.user.last_name registeredname = r.user.first_name+' '+r.user.last_name if otherrecord.emailnotifications: - job = myqueue( + _ = myqueue( queue, handle_sendemail_racesubmission, otheruser.user.email, othername, @@ -3348,7 +3339,7 @@ def virtualevent_submit_result_view(request, id=0, workoutid=0): registeredname = r.user.first_name+' '+r.user.last_name email = follower.emailaddress - job = myqueue( + _ = myqueue( queue, handle_sendemail_racesubmission, email, othername, @@ -3577,7 +3568,6 @@ def virtualevent_entry_edit_view(request, id=0, entryid=0): boatclass = coursestandard.boatclass weightcategory = coursestandard.weightclass adaptiveclass = coursestandard.adaptiveclass - skillclass = coursestandard.skillclass if age < coursestandard.agemin: # pragma: no cover messages.error( diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index 4ff5545e..d7d36255 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -106,9 +106,9 @@ def remove_user(request): PlannedSession.objects.filter(manager=user).delete() user.delete() - res = myqueue(queuehigh, - handle_sendemail_userdeleted, - name, email) + _ = myqueue(queuehigh, + handle_sendemail_userdeleted, + name, email) url = '/logout/?next=/login' # url = reverse(auth_views.logout_then_login) @@ -128,7 +128,6 @@ def survey(request): # pragma: no cover surveyform = SurveyForm() if request.method == 'POST': - form = SurveyForm(request.POST) r.surveydone = True r.surveydonedate = timezone.now() r.save() @@ -221,7 +220,6 @@ def start_plantrial_view(request): @permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True) def rower_favoritecharts_view(request, userid=0): message = '' - successmessage = '' r = getrequestrowercoachee(request, userid=userid, notpermanent=True) staticchartform = StaticChartRowerForm(instance=r) @@ -304,7 +302,6 @@ def rower_favoritecharts_view(request, userid=0): with transaction.atomic(): FavoriteChart.objects.filter(user=r).delete() FavoriteChart.objects.bulk_create(new_instances) - successmessage = "You have updated your favorites" messages.info(request, message) if len(new_instances) == 0: FavoriteChartFormSet = formset_factory( @@ -352,13 +349,14 @@ def rower_exportsettings_view(request, userid=0): cd = form.cleaned_data if r.rowerplan == 'basic': # pragma: no cover messages.error( - request, 'These settings can only be set if you are a user on one of the paid plans.') + request, 'These settings can only be set if you are a user" \ + " on one of the paid plans.') for attr, value in cd.items(): doset = True try: tokenname = attrtokens[attr] - if getattr(r, tokenname) == '' or getattr(r, tokenname) == None: + if getattr(r, tokenname) == '' or getattr(r, tokenname) is None: doset = False except KeyError: doset = True @@ -519,8 +517,6 @@ def rower_edit_view(request, rowerid=0, userid=0, message=""): def rower_prefs_view(request, userid=0, message=""): r = getrequestrowercoachee(request, userid=userid, notpermanent=True) - rowerid = r.id - breadcrumbs = [ { 'url': '/rowers/me/edit/', @@ -636,8 +632,8 @@ def rower_prefs_view(request, userid=0, message=""): r.kfatigue = kfatigue r.save() messages.info(request, 'Updated CP range and time decay constants') - success = dataprep.update_rolling_cp(r, mytypes.otwtypes, 'water') - success = dataprep.update_rolling_cp(r, mytypes.otetypes, 'erg') + _ = dataprep.update_rolling_cp(r, mytypes.otwtypes, 'water') + _ = dataprep.update_rolling_cp(r, mytypes.otetypes, 'erg') return render(request, 'rower_preferences.html', { @@ -665,10 +661,10 @@ def rower_revokeapp_view(request, id=0): # pragma: no cover for token in refreshtokens: token.revoke() - r = getrower(request.user) - form = RowerForm(instance=r) - powerform = RowerPowerForm(instance=r) - grants = AccessToken.objects.filter(user=request.user) + # r = getrower(request.user) + # form = RowerForm(instance=r) + # powerform = RowerPowerForm(instance=r) + # grants = AccessToken.objects.filter(user=request.user) url = reverse('rower_edit_view') return HttpResponseRedirect(url) except AccessToken.DoesNotExist: @@ -749,7 +745,9 @@ def rower_update_empower_view( except KeyError: request.session['async_tasks'] = [(job.id, 'update_empower')] - successmessage = 'Your workouts are being updated in the background. You will receive email when this is done. You can check the status of your calculations here' + successmessage = 'Your workouts are being updated in the background." \ + " You will receive email when this is done. You can check the status" \ + " of your calculations here' messages.info(request, successmessage) diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 11b1a8ef..da4ee4fd 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -1,9 +1,6 @@ - -import hashlib from shutil import copyfile -from six import iterlists from rowers.views.statements import * -import rowers.teams as teams + import rowers.mytypes as mytypes import numpy import rowers.uploads as uploads @@ -16,7 +13,6 @@ from json.decoder import JSONDecodeError import ruptures as rpt from rowers.courses import getnearestraces, getnearestcourses - def default(o): # pragma: no cover if isinstance(o, numpy.int64): return int(o) @@ -325,7 +321,9 @@ def workout_video_create_view(request, id=0): return HttpResponseRedirect(url) except IntegrityError: # pragma: no cover messages.error( - request, 'You cannot save two video analysis with the same YouTube video and Workout. Redirecting to your existing analysis') + request, + 'You cannot save two video analysis with the same YouTube video and Workout." \ + " Redirecting to your existing analysis') analysis = VideoAnalysis.objects.filter( workout=w, video_id=video_id) if analysis: @@ -405,17 +403,16 @@ def workout_video_create_view(request, id=0): @user_passes_test(ispromember, login_url="/rowers/paidplans/", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) def workout_forcecurve_view(request, id=0, workstrokesonly=False): row = get_workoutuser(id, request) - promember = 0 mayedit = 0 r = getrequestrower(request) - promember = 1 if r == row.user: mayedit = 1 @@ -526,7 +523,6 @@ def otw_use_gps(request, id=0): def workout_histo_view(request, id=0): w = get_workoutuser(id, request) r = getrequestrower(request) - promember = 1 mayedit = 0 if w.user == r: @@ -612,7 +608,6 @@ def addmanual_view(request, raceid=0): avgpwr = metricsform.cleaned_data['avgpwr'] avgspm = metricsform.cleaned_data['avgspm'] - #ps = form.cleaned_data.get('plannedsession',None) boattype = form.cleaned_data.get('boattype', '1x') privacy = form.cleaned_data.get('privacy', 'visible') rankingpiece = form.cleaned_data.get('rankingpiece', False) @@ -656,7 +651,6 @@ def addmanual_view(request, raceid=0): w.weightcategory = weightcategory w.adaptiveclass = adaptiveclass w.notes = notes - #w.plannedsession = ps w.name = name w.rpe = rpe w.workouttype = workouttype @@ -735,7 +729,7 @@ def addmanual_view(request, raceid=0): othername = otheruser.user.first_name+' '+otheruser.user.last_name registeredname = r.user.first_name+' '+r.user.last_name if otherrecord.emailnotifications: - job = myqueue( + _ = myqueue( queue, handle_sendemail_racesubmission, otheruser.user.email, othername, @@ -815,18 +809,12 @@ def workout_recalcsummary_view(request, id=0): # Joining workout @user_passes_test(ispromember, login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) @permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True) def workouts_join_view(request, userid=0): - promember = 0 - r = getrequestrower(request, userid=userid) - if not request.user.is_anonymous: - r = getrower(request.user) - result = request.user.is_authenticated and ispromember(request.user) - if result: - promember = 1 if request.method == 'POST' and 'workouts' in request.POST: form = WorkoutMultipleCompareForm(request.POST) @@ -887,17 +875,10 @@ def video_selectworkout(request, userid=0): options = defaultoptions options['userid'] = userid - try: - workouttypes = options['workouttypes'] - except KeyError: # pragma: no cover - workouttypes = ['rower', 'dynamic', 'slides'] - try: # pragma: no cover modalities = options['modalities'] - modality = modalities[0] except KeyError: # pragma: no cover modalities = [m[0] for m in mytypes.workouttypes_ordered.items()] - modality = 'all' query = request.GET.get('q') if query: # pragma: no cover @@ -944,8 +925,6 @@ def video_selectworkout(request, userid=0): url = reverse('workout_video_create_view', kwargs={'id': encoder.encode_hex(selectedworkout.id)}) return HttpResponseRedirect(url) - else: # pragma: no cover - id = 0 else: form = WorkoutSingleSelectForm(workouts=workouts) thediv = '' @@ -1020,7 +999,8 @@ def video_selectworkout(request, userid=0): @permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True) @user_passes_test(ispromember, login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) def workouts_join_select(request, startdatestring="", @@ -1085,8 +1065,6 @@ def workouts_join_select(request, startdate = datetime.datetime.combine(startdate, datetime.time()) enddate = datetime.datetime.combine(enddate, datetime.time(23, 59, 59)) - #enddate = enddate+datetime.timedelta(days=1) - if startdatestring: startdate = iso8601.parse_date(startdatestring) if enddatestring: @@ -1107,10 +1085,11 @@ def workouts_join_select(request, except ValueError: pass - workouts = Workout.objects.filter(user=r, - startdatetime__gte=startdate, - startdatetime__lte=enddate, - workouttype__in=modalities).order_by("-date", "-starttime").exclude(boattype__in=negtypes) + workouts = Workout.objects.filter( + user=r, + startdatetime__gte=startdate, + startdatetime__lte=enddate, + workouttype__in=modalities).order_by("-date", "-starttime").exclude(boattype__in=negtypes) query = request.GET.get('q') if query: # pragma: no cover @@ -1204,7 +1183,7 @@ def remove_power_view(request, id=0): row = rdata(csvfile=f, rower=rr) row.df[' Power (watts)'] = 0 row.write_csv(f) - res = dataprep.dataprep(row.df, id=workout.id) + _ = dataprep.dataprep(row.df, id=workout.id) cpdf, delta, cpvalues = dataprep.setcp(workout) workout.normp = 0 @@ -1224,7 +1203,8 @@ def remove_power_view(request, id=0): @user_passes_test(ispromember, login_url='/rowers/paidplans/', - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) def course_mapcompare_view(request, id=0): results = [] @@ -1494,7 +1474,6 @@ def course_compare_view(request, id=0): xparam = chartform.cleaned_data['xparam'] yparam = chartform.cleaned_data['yparam'] plottype = chartform.cleaned_data['plottype'] - teamid = chartform.cleaned_data['teamid'] ids = [int(w.id) for w in workouts] request.session['ids'] = ids elif request.method == 'POST': # pragma: no cover @@ -1508,7 +1487,6 @@ def course_compare_view(request, id=0): xparam = chartform.cleaned_data['xparam'] yparam = chartform.cleaned_data['yparam'] plottype = chartform.cleaned_data['plottype'] - teamid = chartform.cleaned_data['teamid'] try: workoutids = request.session['ids'] except KeyError: # pragma: no cover @@ -1674,7 +1652,6 @@ def virtualevent_compare_view(request, id=0): xparam = chartform.cleaned_data['xparam'] yparam = chartform.cleaned_data['yparam'] plottype = chartform.cleaned_data['plottype'] - teamid = chartform.cleaned_data['teamid'] ids = [int(w.id) for w in workouts] request.session['ids'] = ids elif request.method == 'POST': @@ -1688,7 +1665,6 @@ def virtualevent_compare_view(request, id=0): xparam = chartform.cleaned_data['xparam'] yparam = chartform.cleaned_data['yparam'] plottype = chartform.cleaned_data['plottype'] - teamid = chartform.cleaned_data['teamid'] try: workoutids = request.session['ids'] except KeyError: # pragma: no cover @@ -1758,8 +1734,6 @@ def virtualevent_compare_view(request, id=0): @permission_required('plannedsession.view_session', fn=get_session_by_pk, raise_exception=True) def plannedsession_compare_view(request, id=0, userid=0): - r = getrequestrower(request, userid=userid) - try: ps = PlannedSession.objects.get(id=id) except PlannedSession.DoesNotExist: # pragma: no cover @@ -1769,10 +1743,6 @@ def plannedsession_compare_view(request, id=0, userid=0): ids = [int(w.id) for w in workouts] - labeldict = { - int(w.id): w.__str__() for w in workouts - } - xparam = 'time' yparam = 'hr' plottype = 'line' @@ -1783,8 +1753,6 @@ def plannedsession_compare_view(request, id=0, userid=0): request.session['plottype'] = plottype request.session['ps'] = ps.id - teams = ps.team.all() - if ids: url = reverse('analysis_new', kwargs={ @@ -1832,16 +1800,12 @@ def workouts_view(request, message='', successmessage='', startdate, datetime.time()).astimezone(usertimezone) enddate = datetime.datetime.combine( enddate, datetime.time(23, 59, 59)).astimezone(usertimezone) - #enddate = enddate+datetime.timedelta(days=1) if enddate < startdate: # pragma: no cover s = enddate enddate = startdate startdate = s - startdatestring = startdate.strftime('%Y-%m-%d') - enddatestring = enddate.strftime('%Y-%m-%d') - # start date for the small graph activity_startdate = enddate-datetime.timedelta(days=15) @@ -1926,7 +1890,7 @@ def workouts_view(request, message='', successmessage='', workoutsnohr = workouts.exclude(averagehr__isnull=False) for w in workoutsnohr: # pragma: no cover - res = dataprep.workout_trimp(w) + _ = dataprep.workout_trimp(w) # ids = [w.id for w in workouts] # df = dataprep.getsmallrowdata_db(['time','power'],ids=ids) @@ -2013,7 +1977,8 @@ def workouts_view(request, message='', successmessage='', # List of workouts to compare a selected workout to @user_passes_test(ispromember, login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) def workout_fusion_list(request, id=0, @@ -2036,7 +2001,6 @@ def workout_fusion_list(request, id=0, startdate = datetime.datetime.combine(startdate, datetime.time()) enddate = datetime.datetime.combine(enddate, datetime.time(23, 59, 59)) - #enddate = enddate+datetime.timedelta(days=1) startdate = arrow.get(startdate).datetime enddate = arrow.get(enddate).datetime @@ -2148,8 +2112,6 @@ def workout_view(request, id=0, raceresult=0, sessionresult=0, nocourseraceresul result = CourseTestResult.objects.get(id=sessionresult) startsecond = result.startsecond endsecond = result.endsecond - duration = row.duration - durationsecs = duration.hour*3600+duration.minute*60+duration.second itime = [startsecond, endsecond-startsecond] itype = [3, 4] intervaldata['itime'] = itime @@ -2167,8 +2129,6 @@ def workout_view(request, id=0, raceresult=0, sessionresult=0, nocourseraceresul result = IndoorVirtualRaceResult.objects.get(id=nocourseraceresult) startsecond = result.startsecond endsecond = result.endsecond - duration = row.duration - durationsecs = duration.hour*3600+duration.minute*60+duration.second itime = [startsecond, endsecond-startsecond] itype = [3, 4] intervaldata['itime'] = itime @@ -2186,8 +2146,6 @@ def workout_view(request, id=0, raceresult=0, sessionresult=0, nocourseraceresul result = VirtualRaceResult.objects.get(id=raceresult) startsecond = result.startsecond endsecond = result.endsecond - duration = row.duration - durationsecs = duration.hour*3600+duration.minute*60+duration.second itime = [startsecond, endsecond-startsecond] itype = [3, 4] intervaldata['itime'] = itime @@ -2280,7 +2238,8 @@ def workout_view(request, id=0, raceresult=0, sessionresult=0, nocourseraceresul # Resets stroke data to raw data (pace) @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) @user_passes_test(ispromember, login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) def workout_undo_smoothenpace_view( request, id=0, message="", successmessage="" @@ -2312,7 +2271,8 @@ def workout_undo_smoothenpace_view( # Data smoothing of pace data @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) @user_passes_test(ispromember, login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality.", redirect_field_name=None) def workout_smoothenpace_view(request, id=0, message="", successmessage=""): row = get_workoutuser(id, request) @@ -2342,7 +2302,7 @@ def workout_smoothenpace_view(request, id=0, message="", successmessage=""): return HttpResponseRedirect(url) - if not 'originalvelo' in row.df: + if 'originalvelo' not in row.df: row.df['originalvelo'] = velo velo2 = stravastuff.ewmovingaverage(velo, 5) @@ -2374,7 +2334,8 @@ def workout_smoothenpace_view(request, id=0, message="", successmessage=""): # Get weather for given location and date/time @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) @user_passes_test(ispromember, login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) def workout_downloadwind_view(request, id=0, airportcode=None, @@ -2389,7 +2350,7 @@ def workout_downloadwind_view(request, id=0, return HttpResponse("Error: CSV Data File Not Found") try: - bearing = rowdata.df.loc[:, 'bearing'].values + _ = rowdata.df.loc[:, 'bearing'].values except KeyError: rowdata.add_bearing() rowdata.write_csv(f1, gzip=True) @@ -2399,13 +2360,8 @@ def workout_downloadwind_view(request, id=0, try: avglat = rowdata.df[' latitude'].mean() avglon = rowdata.df[' longitude'].mean() - avgtime = int(rowdata.df['TimeStamp (sec)'].mean( - )-rowdata.df.loc[:, 'TimeStamp (sec)'].iloc[0]) - startdatetime = dateutil.parser.parse("{}, {}".format(row.date, - row.starttime)) - + avgtime = int(rowdata.df['TimeStamp (sec)'].mean()-rowdata.df.loc[:, 'TimeStamp (sec)'].iloc[0]) starttimeunix = int(arrow.get(row.startdatetime).timestamp()) - #starttimeunix = int(mktime(startdatetime.utctimetuple())) avgtime = starttimeunix+avgtime winddata = get_wind_data(avglat, avglon, avgtime) windspeed = winddata[0] @@ -2444,7 +2400,11 @@ def workout_downloadwind_view(request, id=0, @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) -@user_passes_test(ispromember, login_url="/rowers/paidplans", message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) +@user_passes_test(ispromember, + login_url="/rowers/paidplans", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", + redirect_field_name=None) def workout_downloadmetar_view(request, id=0, airportcode=None, message="", successmessage=""): @@ -2458,7 +2418,7 @@ def workout_downloadmetar_view(request, id=0, return HttpResponse("Error: CSV Data File Not Found") try: - bearing = rowdata.df.loc[:, 'bearing'].values + _ = rowdata.df.loc[:, 'bearing'].values except KeyError: rowdata.add_bearing() rowdata.write_csv(f1, gzip=True) @@ -2470,11 +2430,8 @@ def workout_downloadmetar_view(request, id=0, airportcode = get_airport_code(avglat, avglon)[0] avgtime = int(rowdata.df['TimeStamp (sec)'].mean( )-rowdata.df.loc[:, 'TimeStamp (sec)'].iloc[0]) - startdatetime = dateutil.parser.parse("{}, {}".format(row.date, - row.starttime)) starttimeunix = arrow.get(row.startdatetime).timestamp() - #starttimeunix = int(mktime(startdatetime.utctimetuple())) avgtime = starttimeunix + avgtime winddata = get_metar_data(airportcode, avgtime) windspeed = winddata[0] @@ -2513,7 +2470,11 @@ def workout_downloadmetar_view(request, id=0, # Show form to update wind data @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) -@user_passes_test(ispromember, login_url="/rowers/paidplans", message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) +@user_passes_test(ispromember, + login_url="/rowers/paidplans", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", + redirect_field_name=None) def workout_wind_view(request, id=0, message="", successmessage=""): row = get_workoutuser(id, request) r = getrower(request.user) @@ -2553,7 +2514,7 @@ def workout_wind_view(request, id=0, message="", successmessage=""): hascoordinates = 0 try: - bearing = rowdata.df.loc[:, 'bearing'].values + _ = rowdata.df.loc[:, 'bearing'].values except KeyError: rowdata.add_bearing() rowdata.write_csv(f1, gzip=True) @@ -2598,7 +2559,7 @@ def workout_wind_view(request, id=0, message="", successmessage=""): 'id': id } url = reverse('workout_wind_view', kwargs=kwargs) - response = HttpResponseRedirect(url) + _ = HttpResponseRedirect(url) else: form = UpdateWindForm() @@ -2638,7 +2599,11 @@ def workout_wind_view(request, id=0, message="", successmessage=""): # Show form to update River stream data (for river dwellers) @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) -@user_passes_test(ispromember, login_url="/rowers/paidplans", message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) +@user_passes_test(ispromember, + login_url="/rowers/paidplans", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", + redirect_field_name=None) def workout_stream_view(request, id=0, message="", successmessage=""): row = get_workoutuser(id, request) r = getrower(request.user) @@ -2678,7 +2643,7 @@ def workout_stream_view(request, id=0, message="", successmessage=""): kwargs = { 'id': id} url = reverse('workout_wind_view', kwargs=kwargs) - response = HttpResponseRedirect(url) + _ = HttpResponseRedirect(url) else: form = UpdateStreamForm() @@ -2733,8 +2698,6 @@ def workout_otwsetpower_view(request, id=0, message="", successmessage=""): form = AdvancedWorkoutForm(request.POST) if form.is_valid(): - #quick_calc = form.cleaned_data['quick_calc'] - #go_service = form.cleaned_data['go_service'] boattype = form.cleaned_data['boattype'] weightvalue = form.cleaned_data['weightvalue'] coastalbrand = form.cleaned_data['boatbrand'] @@ -2750,19 +2713,19 @@ def workout_otwsetpower_view(request, id=0, message="", successmessage=""): if rowdata == 0: # pragma: no cover return HttpResponse("Error: CSV Data File Not Found") try: - vstream = rowdata.df['vstream'] + _ = rowdata.df['vstream'] except KeyError: rowdata.add_stream(0) rowdata.write_csv(f1, gzip=True) try: - bearing = rowdata.df['bearing'] + _ = rowdata.df['bearing'] except KeyError: rowdata.add_bearing() rowdata.write_csv(f1, gzip=True) try: - vwind = rowdata.df['vwind'] + _ = rowdata.df['vwind'] except KeyError: rowdata.add_wind(0, 0) rowdata.write_csv(f1, gzip=True) @@ -2792,7 +2755,10 @@ def workout_otwsetpower_view(request, id=0, message="", successmessage=""): except KeyError: request.session['async_tasks'] = [(job.id, 'otwsetpower')] - successmessage = 'Your calculations have been submitted. You will receive an email when they are done. You can check the status of your calculations here' + successmessage = 'Your calculations have been submitted." \ + " You will receive an email when they are done." \ + " You can check the status of your calculations" \ + " here' messages.info(request, successmessage) kwargs = { 'id': id} @@ -2868,14 +2834,10 @@ def instroke_view(request, id=0): ] -# form = WorkoutForm(instance=row) - g = GraphImage.objects.filter(workout=w).order_by("-creationdatetime") - # check if user is owner of this workout - rowdata = rrdata(csvfile=w.csvfilename) try: instrokemetrics = rowdata.get_instroke_columns() - instrokemetrics = [m for m in instrokemetrics if not m in nometrics] + instrokemetrics = [m for m in instrokemetrics if m not in nometrics] except AttributeError: # pragma: no cover instrokemetrics = [] @@ -2906,7 +2868,6 @@ def instroke_chart(request, id=0, metric=''): # pragma: no cover fullpathimagename = 'static/plots/'+imagename u = w.user.user r = getrower(u) - title = w.name fig1 = rowdata.get_plot_instroke(metric) canvas = FigureCanvas(fig1) canvas.print_figure('static/plots/'+imagename) @@ -2968,7 +2929,7 @@ def workout_erase_column_view(request, id=0, column=''): return HttpResponseRedirect(url) try: - cdata = data[column] + _ = data[column] except KeyError: # pragma: no cover url = reverse('workout_data_view', kwargs={ 'id': encoder.encode_hex(w.id) @@ -3019,7 +2980,7 @@ def workout_erase_column_view(request, id=0, column=''): row.write_csv(w.csvfilename, gzip=True) row, workout = dataprep.getrowdata(id=w.id) - datadf = dataprep.dataprep(row.df, id=w.id) + _ = dataprep.dataprep(row.df, id=w.id) if column == 'hr': w.hrtss = 0 @@ -3067,6 +3028,7 @@ def workout_erase_column_view(request, id=0, column=''): 'column': column, 'teams': get_my_teams(request.user), 'workout': w, + 'rower': r, 'breadcrumbs': breadcrumbs, } @@ -3210,9 +3172,6 @@ def workout_data_view(request, id=0): except (TypeError, KeyError): pass - # pd.set_option('display.width', 1000) - #pd.set_option('colheader_justify', 'left') - htmltable = datadf.to_html( bold_rows=True, show_dimensions=True, border=1, @@ -3226,6 +3185,7 @@ def workout_data_view(request, id=0): 'data': datadf, 'cols': datadf.columns, 'form': form, + 'rower': r, 'teams': get_my_teams(request.user), 'workout': w, 'breadcrumbs': breadcrumbs, @@ -3281,11 +3241,11 @@ def workout_stats_view(request, id=0, message="", successmessage=""): if datadf.empty: return HttpResponse("CSV data file not found") - #datadf['deltat'] = datadf['time'].diff() + # datadf['deltat'] = datadf['time'].diff() - workoutstateswork = [1, 4, 5, 8, 9, 6, 7] - workoutstatesrest = [3] - workoutstatetransition = [0, 2, 10, 11, 12, 13] + # workoutstateswork = [1, 4, 5, 8, 9, 6, 7] + # workoutstatesrest = [3] + # workoutstatetransition = [0, 2, 10, 11, 12, 13] # Create stats stats = {} @@ -3463,7 +3423,7 @@ def workout_workflow_config2_view(request, userid=0): if value != 'None': newmiddlepanel.append(value) - newmiddlepanel = [i for i in newmiddlepanel if i != None] + newmiddlepanel = [i for i in newmiddlepanel if i is not None] r.workflowmiddlepanel = newmiddlepanel try: r.save() @@ -3496,12 +3456,6 @@ def workout_workflow_view(request, id): row = get_workout_by_opaqueid(request, id) r = getrower(request.user) - result = request.user.is_authenticated and ispromember(request.user) - if result: - promember = 1 - if request.user == row.user.user: - mayedit = 1 - comments = WorkoutComment.objects.filter(workout=row) aantalcomments = len(comments) @@ -3614,7 +3568,7 @@ def workout_flexchart3_view(request, *args, **kwargs): # check if favoritenr is not out of range if favorites: try: - t = favorites[favoritenr].xparam + _ = favorites[favoritenr].xparam except IndexError: # pragma: no cover favoritenr = 0 except AssertionError: @@ -3683,11 +3637,6 @@ def workout_flexchart3_view(request, *args, **kwargs): reststrokes = not workstrokesonly r = getrower(request.user) try: - range = metrics.yaxmaxima[xparam] - if yparam1 is not None: - range = metrics.yaxmaxima[yparam1] - if yparam2 is not None: - range = metrics.yaxmaxima[yparam2] f = FavoriteChart(user=r, xparam=xparam, yparam1=yparam1, yparam2=yparam2, plottype=plottype, workouttype=workouttype, @@ -3774,7 +3723,7 @@ def workout_flexchart3_view(request, *args, **kwargs): try: additionalmetrics = rowdata.get_additional_metrics() additionalmetrics = [ - m for m in additionalmetrics if not m in nometrics] + m for m in additionalmetrics if m not in nometrics] except AttributeError: # pragma: no cover additionalmetrics = [] @@ -3959,9 +3908,6 @@ def workout_otwpowerplot_view(request, id=0, message="", successmessage=""): # check if user is owner of this workout # create interactive plot - f1 = w.csvfilename - u = w.user.user - # r = getrower(u) promember = 0 mayedit = 0 @@ -4064,34 +4010,34 @@ def workout_comment_view(request, id=0): if request.user != r.user: # pragma: no cover a_messages.info(r.user, message.encode('ascii', 'ignore')) - 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, w.name, w.id, - emailbounced=r.emailbounced - ) + _ = myqueue(queuehigh, + handle_sendemailnewcomment, r.user.first_name, + r.user.last_name, + r.user.email, + request.user.first_name, + request.user.last_name, + comment, w.name, w.id, + emailbounced=r.emailbounced + ) commenters = {oc.user for oc in comments if oc.notification} for u in commenters: # pragma: no cover a_messages.info(u, message) if u != request.user and u != r.user: 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, - w.name, - w.id, - c.id, - emailbounced=ocr.emailbounced - ) + _ = myqueue(queue, + handle_sendemailnewresponse, + u.first_name, + u.last_name, + u.email, + request.user.first_name, + request.user.last_name, + comment, + w.name, + w.id, + c.id, + emailbounced=ocr.emailbounced + ) url = reverse('workout_comment_view', kwargs={ @@ -4236,7 +4182,7 @@ def workout_edit_view(request, id=0, message="", successmessage=""): try: # aware object can be in any timezone - out = startdatetime.astimezone(pytz.utc) + _ = startdatetime.astimezone(pytz.utc) except (ValueError, TypeError): # pragma: no cover startdatetime = timezone.make_aware(startdatetime) @@ -4444,9 +4390,6 @@ def workout_map_view(request, id=0): mayedit = 0 if not request.user.is_anonymous: r = getrower(request.user) - result = request.user.is_authenticated and ispromember(request.user) - if result: - promember = 1 if request.user == w.user.user: mayedit = 1 @@ -4618,7 +4561,6 @@ def workout_toggle_ranking(request, id=0): @csrf_exempt def workout_upload_api(request): - stravaid = '' if request.method != 'POST': # pragma: no cover message = {'status': 'false', 'message': 'this view cannot be accessed through GET'} @@ -4672,11 +4614,7 @@ def workout_upload_api(request): return JSONResponse(status=400, data=message) # sync related IDs - stravaid = post_data.get('stravaid', '') c2id = post_data.get('c2id', '') - nkid = post_data.get('nkid', '') - rp3id = post_data.get('rp3id', '') - garminid = post_data.get('garminid', 0) startdatetime = post_data.get('startdatetime', '') oarlockfirmware = post_data.get('oarlockfirmware', None) @@ -4740,11 +4678,6 @@ def workout_upload_api(request): if optionsform.is_valid(): make_plot = optionsform.cleaned_data['make_plot'] plottype = optionsform.cleaned_data['plottype'] - upload_to_c2 = optionsform.cleaned_data['upload_to_C2'] - - upload_to_strava = optionsform.cleaned_data['upload_to_Strava'] - upload_to_st = optionsform.cleaned_data['upload_to_SportTracks'] - upload_to_tp = optionsform.cleaned_data['upload_to_TrainingPeaks'] makeprivate = optionsform.cleaned_data['makeprivate'] else: # pragma: no cover message = optionsform.errors @@ -4852,7 +4785,7 @@ def workout_upload_api(request): 'id': encoder.encode_hex(w.id), } ) - email_sent = send_confirm(r.user, t, link, '') + _ = send_confirm(r.user, t, link, '') return JSONResponse(status=statuscode, data=message) @@ -4894,10 +4827,9 @@ def workout_upload_view(request, if 'uploadoptions' in request.session: uploadoptions = request.session['uploadoptions'] try: - defaultlandingpage = uploadoptions['landingpage'] + _ = uploadoptions['landingpage'] except KeyError: # pragma: no cover uploadoptions['landingpage'] = r.defaultlandingpage - defaultlandingpage = r.defaultlandingpage else: request.session['uploadoptions'] = uploadoptions @@ -5026,15 +4958,17 @@ def workout_upload_view(request, url = settings.UPLOAD_SERVICE_URL - job = myqueue(queuehigh, - handle_request_post, - url, - uploadoptions - ) + _ = myqueue(queuehigh, + handle_request_post, + url, + uploadoptions + ) messages.info( request, - "The file was too large to process in real time. It will be processed in a background process. You will receive an email when it is ready") + "The file was too large to process in real time." + " It will be processed in a background process." + " You will receive an email when it is ready") url = reverse('workout_upload_view') if is_ajax: # pragma: no cover return JSONResponse({'result': 1, 'url': url}) @@ -5051,7 +4985,9 @@ def workout_upload_view(request, response = HttpResponseRedirect(url) return response elif id == -1: # pragma: no cover - message = 'The zip archive will be processed in the background. The files in the archive will only be uploaded without the extra actions. You will receive email when the workouts are ready.' + message = 'The zip archive will be processed in the background." \ + " The files in the archive will only be uploaded without the extra actions." \ + " You will receive email when the workouts are ready.' messages.info(request, message) url = reverse('workout_upload_view') if is_ajax: @@ -5086,7 +5022,7 @@ def workout_upload_view(request, (jobid, 'make_plot')] except KeyError: request.session['async_tasks'] = [(jobid, 'make_plot')] - elif r.staticchartonupload != None: + elif r.staticchartonupload is not None: plottype = r.staticchartonupload res, jobid = uploads.make_plot(r, w, f1, f2, plottype, t) @@ -5345,8 +5281,6 @@ def team_workout_upload_view(request, message="", } ] - myteams = Team.objects.filter(manager=request.user) - make_plot = uploadoptions['make_plot'] plottype = uploadoptions['plottype'] @@ -5406,8 +5340,6 @@ def team_workout_upload_view(request, message="", workouttype = form.cleaned_data['workouttype'] - notes = form.cleaned_data['notes'] - if optionsform.is_valid(): make_plot = optionsform.cleaned_data['make_plot'] plottype = optionsform.cleaned_data['plottype'] @@ -5434,7 +5366,7 @@ def team_workout_upload_view(request, message="", notes='' ) else: # pragma: no cover - job = myqueue( + _ = myqueue( queuehigh, handle_zip_file, r.user.email, @@ -5445,7 +5377,9 @@ def team_workout_upload_view(request, message="", messages.info( request, - "The file was too large to process in real time. It will be processed in a background process. The user will receive an email when it is ready" + "The file was too large to process in real time." + " It will be processed in a background process." + " The user will receive an email when it is ready" ) url = reverse('team_workout_upload_view') @@ -5458,7 +5392,9 @@ def team_workout_upload_view(request, message="", response = HttpResponseRedirect(url) return response elif id == -1: # pragma: no cover - message = 'The zip archive will be processed in the background. The files in the archive will only be uploaded without the extra actions. You will receive email when the workouts are ready.' + message = 'The zip archive will be processed in the background." \ + " The files in the archive will only be uploaded without the extra actions." \ + " You will receive email when the workouts are ready.' messages.info(request, message) url = reverse('team_workout_upload_view') response = HttpResponseRedirect(url) @@ -5652,7 +5588,6 @@ def graph_show_view(request, id): def workout_summary_restore_view(request, id, message="", successmessage=""): row = get_workout_by_opaqueid(request, id) - s = "" # still here - this is a workout we may edit f1 = row.csvfilename u = row.user.user @@ -5681,14 +5616,6 @@ def workout_summary_restore_view(request, id, message="", successmessage=""): row.summary = intervalstats row.save() - # create interactive plot - try: - res = interactive_chart(encoder.decode_hex(id), promember=1) - script = res[0] - div = res[1] - except ValueError: # pragma: no cover - pass - messages.info(request, 'Original Interval Data Restored') url = reverse('workout_summary_edit_view', kwargs={ @@ -5702,7 +5629,8 @@ def workout_summary_restore_view(request, id, message="", successmessage=""): @permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) @user_passes_test(ispromember, login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) def workout_split_view(request, id=0): row = get_workout_by_opaqueid(request, id) @@ -5797,7 +5725,10 @@ def workout_split_view(request, id=0): # Fuse two workouts -@user_passes_test(ispromember, login_url="/rowers/paidplans", message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality", redirect_field_name=None) +@user_passes_test(ispromember, login_url="/rowers/paidplans", + message="This functionality requires a Pro plan or higher." + " If you are already a Pro user, please log in to access this functionality", + redirect_field_name=None) def workout_fusion_view(request, id1=0, id2=1): try: @@ -5812,8 +5743,8 @@ def workout_fusion_view(request, id1=0, id2=1): w1 = Workout.objects.get(id=id1) w2 = Workout.objects.get(id=id2) r = w1.user - if (is_workout_user(request.user, w1) == False) or \ - (is_workout_user(request.user, w2) == False): # pragma: no cover + if (is_workout_user(request.user, w1) is False) or \ + (is_workout_user(request.user, w2) is False): # pragma: no cover raise PermissionDenied("You are not allowed to use these workouts") except Workout.DoesNotExist: # pragma: no cover raise Http404("One of the workouts doesn't exist") @@ -5835,10 +5766,9 @@ def workout_fusion_view(request, id1=0, id2=1): title='Fused data', parent=w1, forceunit=forceunit) - if message != None: # pragma: no cover + if message is not None: # pragma: no cover messages.error(request, message) else: - successmessage = 'Data fused' messages.info(request, message) url = reverse('workout_edit_view', @@ -5947,7 +5877,7 @@ def workout_course_view(request, id): ) record.save() - job = myqueue( + _ = myqueue( queuehigh, handle_check_race_course, row.csvfilename, @@ -5967,7 +5897,9 @@ def workout_course_view(request, id): request.session['async_tasks'] = [ (job.id, 'check_race_course')] - messages.info(request, 'We are checking your time on the course in the background. You will receive an email when the check is complete. You can check the status here') + messages.info(request, 'We are checking your time on the course in the background." \ + " You will receive an email when the check is complete." \ + " You can check the status here') # get results records = VirtualRaceResult.objects.filter( @@ -6033,7 +5965,7 @@ def workout_summary_edit_view(request, id, message="", successmessage="" rowdata = rdata(csvfile=f1, rower=rr) if rowdata == 0: # pragma: no cover return HttpResponse("Error: CSV Data File Not Found") - #intervalstats = rowdata.allstats() + intervalstats = row.summary try: itime, idist, itype = rowdata.intervalstats_values() @@ -6145,7 +6077,7 @@ def workout_summary_edit_view(request, id, message="", successmessage="" ) record.save() - job = myqueue( + _ = myqueue( queuehigh, handle_check_race_course, row.csvfilename, @@ -6165,7 +6097,9 @@ def workout_summary_edit_view(request, id, message="", successmessage="" request.session['async_tasks'] = [ (job.id, 'check_race_course')] - messages.info(request, 'We are checking your time on the course in the background. You will receive an email when the check is complete. You can check the status here') + messages.info(request, 'We are checking your time on the course in the background." \ + " You will receive an email when the check is complete." \ + " You can check the status here') vals = None # feeling lucky / ruptures @@ -6352,7 +6286,7 @@ def workout_summary_edit_view(request, id, message="", successmessage="" itime, idist, itype = rowdata.intervalstats_values() nrintervals = len(idist) row.summary = intervalstats - #intervalstats = rowdata.allstats() + if s: try: row.notes = u'{n} \n {s}'.format( @@ -6634,7 +6568,6 @@ class WorkoutDelete(PermissionRequiredMixin, DeleteView): mayedit = 0 promember = 0 if not self.request.user.is_anonymous: - r = getrower(self.request.user) result = self.request.user.is_authenticated and ispromember( self.request.user) if result: