opening analysis for rowers themselves
This commit is contained in:
@@ -208,7 +208,8 @@ class StravaPrivacy(TestCase):
|
|||||||
|
|
||||||
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
||||||
workouts = set([w for w in workouts if w not in [
|
workouts = set([w for w in workouts if w not in [
|
||||||
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport']])
|
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport',
|
||||||
|
'intervalsimport']])
|
||||||
|
|
||||||
self.assertEqual(len(workouts),5)
|
self.assertEqual(len(workouts),5)
|
||||||
|
|
||||||
@@ -230,7 +231,8 @@ class StravaPrivacy(TestCase):
|
|||||||
|
|
||||||
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
||||||
workouts = set([w for w in workouts if w not in [
|
workouts = set([w for w in workouts if w not in [
|
||||||
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport']])
|
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport',
|
||||||
|
'intervalsimport']])
|
||||||
|
|
||||||
self.assertEqual(len(workouts),2)
|
self.assertEqual(len(workouts),2)
|
||||||
|
|
||||||
@@ -251,7 +253,8 @@ class StravaPrivacy(TestCase):
|
|||||||
|
|
||||||
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
||||||
workouts = set([w for w in workouts if w not in [
|
workouts = set([w for w in workouts if w not in [
|
||||||
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport']])
|
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport',
|
||||||
|
'intervalsimport']])
|
||||||
|
|
||||||
self.assertEqual(len(workouts),2)
|
self.assertEqual(len(workouts),2)
|
||||||
|
|
||||||
@@ -272,7 +275,8 @@ class StravaPrivacy(TestCase):
|
|||||||
|
|
||||||
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
||||||
workouts = set([w for w in workouts if w not in [
|
workouts = set([w for w in workouts if w not in [
|
||||||
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport']])
|
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport',
|
||||||
|
'intervalsimport']])
|
||||||
|
|
||||||
self.assertEqual(len(workouts),2)
|
self.assertEqual(len(workouts),2)
|
||||||
|
|
||||||
@@ -293,7 +297,8 @@ class StravaPrivacy(TestCase):
|
|||||||
|
|
||||||
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
# throw out "c2import", "nkimport", "stravaimport", "concept2import", "sporttracksimport" from the set
|
||||||
workouts = set([w for w in workouts if w not in [
|
workouts = set([w for w in workouts if w not in [
|
||||||
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport']])
|
'upload', 'addmanual', 'c2import', 'polarimport', 'rp3import', 'nkimport', 'stravaimport', 'concept2import', 'sporttracksimport',
|
||||||
|
'intervalsimport']])
|
||||||
|
|
||||||
self.assertEqual(len(workouts),2)
|
self.assertEqual(len(workouts),2)
|
||||||
|
|
||||||
@@ -447,7 +452,8 @@ class StravaPrivacy(TestCase):
|
|||||||
# print all lines of response.content that contain '<label for="id_workouts_'
|
# print all lines of response.content that contain '<label for="id_workouts_'
|
||||||
#print([line for line in response.content.decode('utf-8').split('\n') if '<label for="id_workouts_' in line])
|
#print([line for line in response.content.decode('utf-8').split('\n') if '<label for="id_workouts_' in line])
|
||||||
#print(form_data['workouts'])
|
#print(form_data['workouts'])
|
||||||
self.assertEqual(response.content.count(b'<label for="id_workouts_'),2)
|
#self.assertEqual(response.content.count(b'<label for="id_workouts_'),2) <-- if we forbid the user to use strava workouts
|
||||||
|
self.assertEqual(response.content.count(b'<label for="id_workouts_'),5)
|
||||||
|
|
||||||
# get data from histodata function
|
# get data from histodata function
|
||||||
ws = Workout.objects.filter(user=self.r)
|
ws = Workout.objects.filter(user=self.r)
|
||||||
@@ -460,7 +466,8 @@ class StravaPrivacy(TestCase):
|
|||||||
self.assertTrue(data.startswith('data = ['))
|
self.assertTrue(data.startswith('data = ['))
|
||||||
self.assertTrue(data.endswith(']'))
|
self.assertTrue(data.endswith(']'))
|
||||||
# count the number of commas between the brackets
|
# count the number of commas between the brackets
|
||||||
self.assertEqual(data.count(','),2062)
|
#self.assertEqual(data.count(','),2062) <-- if we forbid the user to use strava workouts
|
||||||
|
self.assertEqual(data.count(','),5155)
|
||||||
|
|
||||||
|
|
||||||
class OwnApi(TestCase):
|
class OwnApi(TestCase):
|
||||||
|
|||||||
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
@@ -156,6 +156,8 @@ def do_sync(w, options, quick=False):
|
|||||||
do_icu_export = False
|
do_icu_export = False
|
||||||
if w.user.intervals_auto_export is True:
|
if w.user.intervals_auto_export is True:
|
||||||
do_icu_export = True
|
do_icu_export = True
|
||||||
|
if w.workoutsource == 'strava':
|
||||||
|
do_icu_export = False
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
do_icu_export = options['upload_to_Intervals']
|
do_icu_export = options['upload_to_Intervals']
|
||||||
@@ -208,6 +210,8 @@ def do_sync(w, options, quick=False):
|
|||||||
do_c2_export = False
|
do_c2_export = False
|
||||||
if w.user.c2_auto_export is True:
|
if w.user.c2_auto_export is True:
|
||||||
do_c2_export = True
|
do_c2_export = True
|
||||||
|
if w.workoutsource == 'strava':
|
||||||
|
do_c2_export = False
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
do_c2_export = options['upload_to_C2'] or do_c2_export
|
do_c2_export = options['upload_to_C2'] or do_c2_export
|
||||||
@@ -282,6 +286,8 @@ def do_sync(w, options, quick=False):
|
|||||||
try: # pragma: no cover
|
try: # pragma: no cover
|
||||||
upload_to_st = options['upload_to_SportTracks'] or do_st_export
|
upload_to_st = options['upload_to_SportTracks'] or do_st_export
|
||||||
do_st_export = upload_to_st
|
do_st_export = upload_to_st
|
||||||
|
if w.workoutsource == 'strava':
|
||||||
|
do_st_export = False
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_to_st = False
|
upload_to_st = False
|
||||||
|
|
||||||
@@ -304,6 +310,8 @@ def do_sync(w, options, quick=False):
|
|||||||
do_tp_export = w.user.trainingpeaks_auto_export
|
do_tp_export = w.user.trainingpeaks_auto_export
|
||||||
try:
|
try:
|
||||||
upload_to_tp = options['upload_to_TrainingPeaks'] or do_tp_export
|
upload_to_tp = options['upload_to_TrainingPeaks'] or do_tp_export
|
||||||
|
if w.workoutsource == 'strava':
|
||||||
|
do_tp_export = False
|
||||||
do_tp_export = upload_to_tp
|
do_tp_export = upload_to_tp
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_to_st = False
|
upload_to_st = False
|
||||||
|
|||||||
@@ -48,9 +48,9 @@ def analysis_new(request,
|
|||||||
firstworkout = get_workout(id)
|
firstworkout = get_workout(id)
|
||||||
if not is_workout_team(request.user, firstworkout): # pragma: no cover
|
if not is_workout_team(request.user, firstworkout): # pragma: no cover
|
||||||
raise PermissionDenied("You are not allowed to use this workout")
|
raise PermissionDenied("You are not allowed to use this workout")
|
||||||
if workout_is_strava(firstworkout):
|
#if workout_is_strava(firstworkout):
|
||||||
messages.error(request, "You cannot use Strava workouts for analysis")
|
# messages.error(request, "You cannot use Strava workouts for analysis")
|
||||||
raise PermissionDenied("You cannot use Strava workouts for analysis")
|
# raise PermissionDenied("You cannot use Strava workouts for analysis")
|
||||||
firstworkoutquery = Workout.objects.filter(id=encoder.decode_hex(id))
|
firstworkoutquery = Workout.objects.filter(id=encoder.decode_hex(id))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -202,14 +202,14 @@ def analysis_new(request,
|
|||||||
startdatetime__lte=enddate,
|
startdatetime__lte=enddate,
|
||||||
workouttype__in=modalities,
|
workouttype__in=modalities,
|
||||||
rankingpiece__in=rankingtypes,
|
rankingpiece__in=rankingtypes,
|
||||||
).exclude(workoutsource='strava')
|
)#.exclude(workoutsource='strava')
|
||||||
elif theteam is not None and theteam.viewing == 'coachonly': # pragma: no cover
|
elif theteam is not None and theteam.viewing == 'coachonly': # pragma: no cover
|
||||||
workouts = Workout.objects.filter(team=theteam, user=r,
|
workouts = Workout.objects.filter(team=theteam, user=r,
|
||||||
startdatetime__gte=startdate,
|
startdatetime__gte=startdate,
|
||||||
startdatetime__lte=enddate,
|
startdatetime__lte=enddate,
|
||||||
workouttype__in=modalities,
|
workouttype__in=modalities,
|
||||||
rankingpiece__in=rankingtypes,
|
rankingpiece__in=rankingtypes,
|
||||||
).exclude(workoutsource='strava')
|
)#.exclude(workoutsource='strava')
|
||||||
elif thesession is not None:
|
elif thesession is not None:
|
||||||
workouts = get_workouts_session(r, thesession)
|
workouts = get_workouts_session(r, thesession)
|
||||||
else:
|
else:
|
||||||
@@ -257,7 +257,7 @@ def analysis_new(request,
|
|||||||
else:
|
else:
|
||||||
selectedworkouts = Workout.objects.filter(id__in=ids)
|
selectedworkouts = Workout.objects.filter(id__in=ids)
|
||||||
|
|
||||||
form.fields["workouts"].queryset = (workouts | selectedworkouts).exclude(workoutsource='strava')
|
form.fields["workouts"].queryset = (workouts | selectedworkouts)#.exclude(workoutsource='strava')
|
||||||
|
|
||||||
optionsform = AnalysisOptionsForm(initial={
|
optionsform = AnalysisOptionsForm(initial={
|
||||||
'modality': modality,
|
'modality': modality,
|
||||||
@@ -367,10 +367,10 @@ def trendflexdata(workouts, options, userid=0):
|
|||||||
|
|
||||||
savedata = options.get('savedata',False)
|
savedata = options.get('savedata',False)
|
||||||
|
|
||||||
try:
|
#try:
|
||||||
workouts = workouts.exclude(workoutsource='strava')
|
# workouts = workouts.exclude(workoutsource='strava')
|
||||||
except AttributeError: # pragma: no cover
|
#except AttributeError: # pragma: no cover
|
||||||
workouts = [w for w in workouts if w.workoutsource != 'strava']
|
# workouts = [w for w in workouts if w.workoutsource != 'strava']
|
||||||
|
|
||||||
fieldlist, fielddict = dataprep.getstatsfields()
|
fieldlist, fielddict = dataprep.getstatsfields()
|
||||||
fieldlist = [xparam, yparam, groupby,
|
fieldlist = [xparam, yparam, groupby,
|
||||||
@@ -574,10 +574,10 @@ def flexalldata(workouts, options):
|
|||||||
trendline = options['trendline']
|
trendline = options['trendline']
|
||||||
promember = True
|
promember = True
|
||||||
|
|
||||||
try:
|
#try:
|
||||||
workouts = workouts.exclude(workoutsource='strava')
|
# workouts = workouts.exclude(workoutsource='strava')
|
||||||
except AttributeError: # pragma: no cover
|
#except AttributeError: # pragma: no cover
|
||||||
workouts = [w for w in workouts if w.workoutsource != 'strava']
|
# workouts = [w for w in workouts if w.workoutsource != 'strava']
|
||||||
|
|
||||||
workstrokesonly = not includereststrokes
|
workstrokesonly = not includereststrokes
|
||||||
|
|
||||||
@@ -625,10 +625,10 @@ def histodata(workouts, options):
|
|||||||
workmax = options['workmax']
|
workmax = options['workmax']
|
||||||
userid = options['userid']
|
userid = options['userid']
|
||||||
|
|
||||||
try:
|
#try:
|
||||||
workouts = workouts.exclude(workoutsource='strava')
|
# workouts = workouts.exclude(workoutsource='strava')
|
||||||
except AttributeError: # pragma: no cover
|
#except AttributeError: # pragma: no cover
|
||||||
workouts = [w for w in workouts if w.workoutsource != 'strava']
|
# workouts = [w for w in workouts if w.workoutsource != 'strava']
|
||||||
|
|
||||||
|
|
||||||
if userid == 0: # pragma: no cover
|
if userid == 0: # pragma: no cover
|
||||||
@@ -818,10 +818,10 @@ def cpdata(workouts, options):
|
|||||||
|
|
||||||
|
|
||||||
def statsdata(workouts, options):
|
def statsdata(workouts, options):
|
||||||
try:
|
#try:
|
||||||
workouts = workouts.exclude(workoutsource='strava')
|
# workouts = workouts.exclude(workoutsource='strava')
|
||||||
except AttributeError: # pragma: no cover
|
#except AttributeError: # pragma: no cover
|
||||||
workouts = [w for w in workouts if w.workoutsource != 'strava']
|
# workouts = [w for w in workouts if w.workoutsource != 'strava']
|
||||||
|
|
||||||
includereststrokes = options['includereststrokes']
|
includereststrokes = options['includereststrokes']
|
||||||
ids = options['ids']
|
ids = options['ids']
|
||||||
@@ -897,10 +897,10 @@ def statsdata(workouts, options):
|
|||||||
|
|
||||||
|
|
||||||
def comparisondata(workouts, options):
|
def comparisondata(workouts, options):
|
||||||
try:
|
#try:
|
||||||
workouts = workouts.exclude(workoutsource='strava')
|
# workouts = workouts.exclude(workoutsource='strava')
|
||||||
except AttributeError: # pragma: no cover
|
#except AttributeError: # pragma: no cover
|
||||||
workouts = [w for w in workouts if w.workoutsource != 'strava']
|
# workouts = [w for w in workouts if w.workoutsource != 'strava']
|
||||||
|
|
||||||
includereststrokes = options['includereststrokes']
|
includereststrokes = options['includereststrokes']
|
||||||
xparam = options['xaxis']
|
xparam = options['xaxis']
|
||||||
@@ -945,10 +945,10 @@ def comparisondata(workouts, options):
|
|||||||
|
|
||||||
|
|
||||||
def boxplotdata(workouts, options):
|
def boxplotdata(workouts, options):
|
||||||
try:
|
#try:
|
||||||
workouts = workouts.exclude(workoutsource='strava')
|
# workouts = workouts.exclude(workoutsource='strava')
|
||||||
except AttributeError:
|
#except AttributeError:
|
||||||
workouts = [w for w in workouts if w.workoutsource != 'strava']
|
# workouts = [w for w in workouts if w.workoutsource != 'strava']
|
||||||
|
|
||||||
includereststrokes = options['includereststrokes']
|
includereststrokes = options['includereststrokes']
|
||||||
spmmin = options['spmmin']
|
spmmin = options['spmmin']
|
||||||
@@ -1055,8 +1055,9 @@ def analysis_view_data(request, userid=0):
|
|||||||
for id in ids:
|
for id in ids:
|
||||||
try:
|
try:
|
||||||
w = Workout.objects.get(id=id)
|
w = Workout.objects.get(id=id)
|
||||||
if w.workoutsource != 'strava':
|
#if w.workoutsource != 'strava':
|
||||||
workouts.append(w)
|
# workouts.append(w)
|
||||||
|
workouts.append(w)
|
||||||
except Workout.DoesNotExist: # pragma: no cover
|
except Workout.DoesNotExist: # pragma: no cover
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -1106,7 +1107,7 @@ def create_marker_workouts_view(request, userid=0,
|
|||||||
workouts = Workout.objects.filter(user=theuser.rower, date__gte=startdate,
|
workouts = Workout.objects.filter(user=theuser.rower, date__gte=startdate,
|
||||||
date__lte=enddate,
|
date__lte=enddate,
|
||||||
workouttype__in=mytypes.rowtypes,
|
workouttype__in=mytypes.rowtypes,
|
||||||
duplicate=False).order_by('date').exclude(workoutsource='strava')
|
duplicate=False).order_by('date')#.exclude(workoutsource='strava')
|
||||||
|
|
||||||
for workout in workouts:
|
for workout in workouts:
|
||||||
_ = dataprep.check_marker(workout)
|
_ = dataprep.check_marker(workout)
|
||||||
@@ -1150,7 +1151,7 @@ def goldmedalscores_view(request, userid=0,
|
|||||||
theuser, startdate=startdate, enddate=enddate,
|
theuser, startdate=startdate, enddate=enddate,
|
||||||
)
|
)
|
||||||
|
|
||||||
bestworkouts = Workout.objects.filter(id__in=ids).order_by('-date').exclude(workoutsource='strava')
|
bestworkouts = Workout.objects.filter(id__in=ids).order_by('-date')#.exclude(workoutsource='strava')
|
||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
@@ -1348,7 +1349,7 @@ def performancemanager_view(request, userid=0, mode='rower',
|
|||||||
user = therower, date__gte=startdate-datetime.timedelta(days=90),
|
user = therower, date__gte=startdate-datetime.timedelta(days=90),
|
||||||
date__lte=enddate,
|
date__lte=enddate,
|
||||||
duplicate=False,
|
duplicate=False,
|
||||||
rankingpiece=True, workouttype__in=mytypes.rowtypes).order_by('date').exclude(workoutsource='strava')
|
rankingpiece=True, workouttype__in=mytypes.rowtypes).order_by('date')#.exclude(workoutsource='strava')
|
||||||
|
|
||||||
ids = [w.id for w in markerworkouts]
|
ids = [w.id for w in markerworkouts]
|
||||||
form = PerformanceManagerForm(initial={
|
form = PerformanceManagerForm(initial={
|
||||||
@@ -1360,7 +1361,7 @@ def performancemanager_view(request, userid=0, mode='rower',
|
|||||||
|
|
||||||
ids = pd.Series(ids, dtype='int').dropna().values
|
ids = pd.Series(ids, dtype='int').dropna().values
|
||||||
|
|
||||||
bestworkouts = Workout.objects.filter(id__in=ids).order_by('-date').exclude(workoutsource='strava')
|
bestworkouts = Workout.objects.filter(id__in=ids).order_by('-date')#.exclude(workoutsource='strava')
|
||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user