Merge branch 'release/v10.87'
This commit is contained in:
@@ -196,3 +196,11 @@ def alert_get_stats(alert,nperiod=0):
|
||||
}
|
||||
|
||||
# run alert report
|
||||
|
||||
# check alert permission
|
||||
def checkalertowner(alert,user):
|
||||
if alert.manager == user:
|
||||
return True
|
||||
if alert.rower.user == user:
|
||||
return True
|
||||
return False
|
||||
|
||||
+23
-12
@@ -1081,7 +1081,8 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
makeprivate=False,
|
||||
oarlength=2.89, inboard=0.88,
|
||||
forceunit='lbs',
|
||||
consistencychecks=False):
|
||||
consistencychecks=False,
|
||||
impeller=False):
|
||||
|
||||
message = None
|
||||
powerperc = 100 * np.array([r.pw_ut2,
|
||||
@@ -1289,7 +1290,8 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
startdatetime=workoutstartdatetime,
|
||||
inboard=inboard, oarlength=oarlength,
|
||||
timezone=timezone_str,
|
||||
privacy=privacy)
|
||||
privacy=privacy,
|
||||
impeller=impeller)
|
||||
try:
|
||||
w.save()
|
||||
except ValidationError:
|
||||
@@ -1421,24 +1423,30 @@ def handle_nonpainsled(f2, fileformat, summary=''):
|
||||
oarlength = 2.89
|
||||
inboard = 0.88
|
||||
hasrecognized = False
|
||||
impeller = False
|
||||
|
||||
row,hasrecognized,summary,fileformat = parsenonpainsled(fileformat,f2,summary)
|
||||
|
||||
# Handle c2log
|
||||
if (fileformat == 'c2log' or fileformat == 'rowprolog'):
|
||||
return (0,'',0,0,'')
|
||||
return (0,'',0,0,'',impeller)
|
||||
|
||||
if not hasrecognized:
|
||||
return (0,'',0,0,'')
|
||||
return (0,'',0,0,'',impeller)
|
||||
|
||||
f_to_be_deleted = f2
|
||||
# should delete file
|
||||
f2 = f2[:-4] + 'o.csv'
|
||||
try:
|
||||
row2 = rrdata(df = row.df)
|
||||
row2.write_csv(f2, gzip=True)
|
||||
except:
|
||||
return (0,'',0,0,'')
|
||||
row2 = rrdata(df = row.df)
|
||||
if 'speedcoach2' in fileformat:
|
||||
# impeller consistency
|
||||
impellerdata, consistent, ratio = row.impellerconsistent(threshold=0.3)
|
||||
if impellerdata and consistent:
|
||||
impeller = True
|
||||
if impellerdata and not consistent:
|
||||
row2.use_gpsdata()
|
||||
row2.write_csv(f2, gzip=True)
|
||||
|
||||
|
||||
# os.remove(f2)
|
||||
try:
|
||||
@@ -1449,7 +1457,7 @@ def handle_nonpainsled(f2, fileformat, summary=''):
|
||||
except:
|
||||
pass
|
||||
|
||||
return (f2, summary, oarlength, inboard, fileformat)
|
||||
return (f2, summary, oarlength, inboard, fileformat, impeller)
|
||||
|
||||
# Create new workout from file and store it in the database
|
||||
# This routine should be used everywhere in views.py and mailprocessing.py
|
||||
@@ -1464,6 +1472,7 @@ def new_workout_from_file(r, f2,
|
||||
makeprivate=False,
|
||||
notes=''):
|
||||
message = None
|
||||
impeller = False
|
||||
try:
|
||||
fileformat = get_file_type(f2)
|
||||
except (IOError,UnicodeDecodeError):
|
||||
@@ -1476,6 +1485,7 @@ def new_workout_from_file(r, f2,
|
||||
inboard = 0.88
|
||||
if len(fileformat) == 3 and fileformat[0] == 'zip':
|
||||
f_to_be_deleted = f2
|
||||
impeller = False
|
||||
workoutsbox = Mailbox.objects.filter(name='workouts')[0]
|
||||
msg = Message(mailbox=workoutsbox,
|
||||
from_header=r.user.email,
|
||||
@@ -1543,7 +1553,7 @@ def new_workout_from_file(r, f2,
|
||||
|
||||
# handle non-Painsled by converting it to painsled compatible CSV
|
||||
if (fileformat != 'csv'):
|
||||
f2, summary, oarlength, inboard, fileformat = handle_nonpainsled(
|
||||
f2, summary, oarlength, inboard, fileformat, impeller = handle_nonpainsled(
|
||||
f2,
|
||||
fileformat,
|
||||
summary=summary
|
||||
@@ -1571,7 +1581,8 @@ def new_workout_from_file(r, f2,
|
||||
summary=summary,
|
||||
inboard=inboard, oarlength=oarlength,
|
||||
title=title,
|
||||
forceunit='N'
|
||||
forceunit='N',
|
||||
impeller=impeller,
|
||||
)
|
||||
|
||||
return (id, message, f2)
|
||||
|
||||
@@ -31,6 +31,12 @@ formaxlabels = axlabels.copy()
|
||||
formaxlabels.pop('None')
|
||||
parchoices = list(sorted(formaxlabels.items(), key = lambda x:x[1]))
|
||||
|
||||
class SurveyForm(forms.Form):
|
||||
surveydone = forms.ChoiceField(
|
||||
required=True,
|
||||
choices=(('YES','YES'),('NO','NO')),
|
||||
label='Will you take a 2 minute survey to help improve rowsandall?',
|
||||
widget = forms.RadioSelect)
|
||||
|
||||
class FlexibleDecimalField(forms.DecimalField):
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ def send_confirm(user, name, link, options):
|
||||
|
||||
fullemail = user.email
|
||||
subject = 'New Workout Added: '+name
|
||||
|
||||
|
||||
res = send_template_email('Rowsandall <info@rowsandall.com>',
|
||||
[fullemail],
|
||||
subject,'confirmemail.html',
|
||||
@@ -86,6 +86,7 @@ def rdata(file, rower=rrower()):
|
||||
def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
||||
""" This one is used in processemail """
|
||||
workouttype = 'rower'
|
||||
impeller = False
|
||||
|
||||
try:
|
||||
datafilename = datafile.name
|
||||
@@ -108,7 +109,7 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
||||
if testing:
|
||||
print('Fileformat = ',fileformat)
|
||||
|
||||
|
||||
|
||||
f,e = os.path.splitext(datafilename)
|
||||
if fileformat == 'unknown' and 'txt' not in e:
|
||||
fcopy = "media/"+datafilename
|
||||
@@ -134,12 +135,12 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
||||
|
||||
summary = ''
|
||||
|
||||
|
||||
|
||||
# handle non-Painsled
|
||||
if fileformat == 'att':
|
||||
return 0
|
||||
if fileformat != 'csv':
|
||||
filename_mediadir, summary, oarlength, inboard,fileformat = dataprep.handle_nonpainsled(
|
||||
filename_mediadir, summary, oarlength, inboard,fileformat,impeller = dataprep.handle_nonpainsled(
|
||||
'media/' + datafilename, fileformat, summary)
|
||||
if not filename_mediadir:
|
||||
return 0
|
||||
@@ -148,7 +149,7 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
||||
inboard = 0.88
|
||||
oarlength = 2.89
|
||||
|
||||
row = rdata(filename_mediadir)
|
||||
row = rdata(filename_mediadir)
|
||||
if row == 0:
|
||||
return 0
|
||||
|
||||
@@ -168,7 +169,7 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
||||
row.write_csv(datafilename, gzip=True)
|
||||
dosummary = (fileformat != 'fit' and 'speedcoach2' not in fileformat)
|
||||
dosummary = dosummary or summary == ''
|
||||
|
||||
|
||||
if name == '':
|
||||
name = 'Workout from Background Queue'
|
||||
|
||||
@@ -181,7 +182,7 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
||||
oarlength=oarlength,
|
||||
title=name,
|
||||
workoutsource=fileformat,
|
||||
notes=''
|
||||
notes='',impeller=impeller,
|
||||
)
|
||||
|
||||
|
||||
|
||||
+28
-8
@@ -22,10 +22,10 @@ def getrower(user):
|
||||
|
||||
def do_update(user,mode='rower',days=42):
|
||||
r = getrower(user)
|
||||
|
||||
|
||||
startdate = timezone.now()-datetime.timedelta(days=days)
|
||||
|
||||
# test if not something already done
|
||||
# test if not something already done
|
||||
now_date = timezone.now().strftime('%Y-%m-%d')
|
||||
ms = PowerTimeFitnessMetric.objects.filter(
|
||||
user=user,
|
||||
@@ -37,11 +37,11 @@ def do_update(user,mode='rower',days=42):
|
||||
else:
|
||||
max_workout_id = max([m.last_workout for m in ms])
|
||||
last_update_date = ms[0].date.strftime('%Y-%m-%d')
|
||||
|
||||
|
||||
#last_update_date = max([m.date.strftime('%Y-%m-%d') for m in ms])
|
||||
|
||||
|
||||
|
||||
|
||||
if mode == 'rower':
|
||||
workouts = Workout.objects.filter(
|
||||
user=r,
|
||||
@@ -59,7 +59,7 @@ def do_update(user,mode='rower',days=42):
|
||||
except ValueError:
|
||||
max_id = 0
|
||||
|
||||
|
||||
|
||||
if last_update_date < now_date and max_workout_id < max_id:
|
||||
job = myqueue(queuelow,
|
||||
handle_updatefitnessmetric,
|
||||
@@ -73,7 +73,7 @@ def do_update(user,mode='rower',days=42):
|
||||
class PowerTimeFitnessMetricMiddleWare(object):
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
|
||||
def __call__(self, request):
|
||||
# Code to be executed before the view is called
|
||||
if request.user.is_authenticated:
|
||||
@@ -83,7 +83,7 @@ class PowerTimeFitnessMetricMiddleWare(object):
|
||||
response = self.get_response(request)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
from django.shortcuts import redirect
|
||||
|
||||
|
||||
@@ -98,8 +98,28 @@ allowed_paths = [
|
||||
'/rowers/me/gdpr-optin-confirm'
|
||||
'/rowers/exportallworkouts/',
|
||||
'/rowers/exportallworkouts',
|
||||
'/rowers/survey/'
|
||||
]
|
||||
|
||||
class SurveyMiddleWare(object):
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
if request.user.is_authenticated and request.path not in allowed_paths:
|
||||
r = getrower(request.user)
|
||||
nexturl = request.path
|
||||
if 'survey' in nexturl:
|
||||
nexturl = '/rowers/list-workouts'
|
||||
if not r.surveydone:
|
||||
return redirect(
|
||||
'/rowers/survey/?next=%s' % nexturl
|
||||
)
|
||||
|
||||
response = self.get_response(request)
|
||||
|
||||
return response
|
||||
|
||||
class GDPRMiddleWare(object):
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
@@ -137,7 +157,7 @@ class RowerPlanMiddleWare(object):
|
||||
r.paidplan = basicplans[0]
|
||||
r.save()
|
||||
# remove from Free Coach groups
|
||||
|
||||
|
||||
# send email
|
||||
job = myqueue(queue,
|
||||
handle_sendemail_expired,
|
||||
|
||||
@@ -730,6 +730,8 @@ class Rower(models.Model):
|
||||
# Privacy Data
|
||||
gdproptin = models.BooleanField(default=False)
|
||||
gdproptindate = models.DateTimeField(blank=True,null=True)
|
||||
surveydone = models.BooleanField(default=False)
|
||||
surveydonedate = models.DateTimeField(blank=True,null=True)
|
||||
|
||||
|
||||
# Heart Rate Zone data
|
||||
@@ -2734,6 +2736,7 @@ class Workout(models.Model):
|
||||
choices=privacychoices)
|
||||
rankingpiece = models.BooleanField(default=False,verbose_name='Ranking Piece')
|
||||
duplicate = models.BooleanField(default=False,verbose_name='Duplicate Workout')
|
||||
impeller = models.BooleanField(default=False,verbose_name='Impeller')
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
user = self.user
|
||||
|
||||
@@ -287,10 +287,25 @@
|
||||
<i class="fas fa-calculator-alt fa-fw"></i> OTW Power
|
||||
</a>
|
||||
</li>
|
||||
{% if 'speedcoach2' in workout.workoutsource %}
|
||||
<li id="advanced-usegps">
|
||||
<a href="/rowers/workout/{{ workout.id|encode }}/otwusegps/">
|
||||
<i class="fas fa-satellite"></i>
|
||||
{% if workout.impeller %} {% else %}• {% endif %}Use GPS data
|
||||
</a>
|
||||
</li>
|
||||
<li id="advanced-useimpeller">
|
||||
<a href="/rowers/workout/{{ workout.id|encode }}/otwuseimpeller/">
|
||||
<i class="fas fa-wind-turbine fa-rotate-180"></i>
|
||||
{% if workout.impeller %}• {% else %} {% endif %}Use Impeller data
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<li id="advanced-instroke">
|
||||
<a href="/rowers/workout/{{ workout.id|encode }}/instroke/">
|
||||
<i class="fas fa-search-plus fa-fw"></i> In-Stroke Metrics
|
||||
<i class="fas fa-search-plus fa-fw"></i>
|
||||
In-Stroke Metrics
|
||||
</a>
|
||||
</li>
|
||||
<li id="advanced-recalcsummary">
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
{% extends "newbase.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load rowerfilters %}
|
||||
|
||||
{% block title %}File loading{% endblock %}
|
||||
|
||||
{% block meta %}
|
||||
<script type='text/javascript'
|
||||
src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'>
|
||||
</script>
|
||||
<script type='text/javascript'
|
||||
src='https://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js'>
|
||||
</script>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var frm = $("#surveyform")
|
||||
|
||||
frm.submit(function(e) {
|
||||
// e.preventDefault()
|
||||
const formData = new FormData(e.target);
|
||||
console.log(formData.get('surveydone'));
|
||||
if (formData.get('surveydone')=='YES') {
|
||||
var a = window.open('https://wp.me/P8g86e-Bs', "survey");
|
||||
a.focus();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<ul class="main-content">
|
||||
<li class="grid_4">
|
||||
<form enctype="multipart/form-data" method="post" id="surveyform">
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
<input type="submit" name="submit" value="SUBMIT">
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
{% block sidebar %}
|
||||
{% include 'menu_profile.html' %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,48 @@
|
||||
{% extends "newbase.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load rowerfilters %}
|
||||
|
||||
{% block title %}Rowsandall {% endblock %}
|
||||
|
||||
|
||||
{% block meta %}
|
||||
<script type='text/javascript'
|
||||
src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'>
|
||||
</script>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var frm = $("#surveyform")
|
||||
|
||||
frm.submit(function(e) {
|
||||
e.preventDefault()
|
||||
const formData = new FormData(e.target);
|
||||
console.log(formData);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block main %}
|
||||
|
||||
<ul class="main-content">
|
||||
<li>
|
||||
<form enctype="multipart/form-data" method="post" id="surveyform">
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
<input type="submit" name="submit" value="SUBMIT">
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% block sidebar %}
|
||||
{% include 'menu_profile.html' %}
|
||||
{% endblock %}
|
||||
@@ -20,7 +20,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
@@ -36,7 +36,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
self.rpiet = Rower.objects.create(user=self.upiet,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
self.piet_workouts = WorkoutFactory.create_batch(5, user=self.rpiet)
|
||||
@@ -49,7 +49,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
self.rklaas = Rower.objects.create(user=self.uklaas,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
self.klaas_workouts = WorkoutFactory.create_batch(5, user=self.rklaas)
|
||||
@@ -62,7 +62,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
self.rhenk = Rower.objects.create(user=self.uhenk,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
self.henk_workouts = WorkoutFactory.create_batch(5, user=self.rhenk)
|
||||
@@ -83,7 +83,7 @@ class VirtualEventViewTest(TestCase):
|
||||
self.lastweek = lastweek
|
||||
self.intwoweeks = intwoweeks
|
||||
|
||||
|
||||
|
||||
# erg races
|
||||
self.openergrace = VirtualRace.objects.create(
|
||||
name = faker.word(),
|
||||
@@ -104,7 +104,7 @@ class VirtualEventViewTest(TestCase):
|
||||
country = 'Indoor',
|
||||
manager = self.u
|
||||
)
|
||||
|
||||
|
||||
self.submitergrace = VirtualRace.objects.create(
|
||||
name = faker.word(),
|
||||
startdate = yesterday.date(),
|
||||
@@ -143,7 +143,7 @@ class VirtualEventViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = plannedsessions.add_rower_race(self.rpiet,self.submitergrace)
|
||||
|
||||
|
||||
# register Henk for submitergrace
|
||||
self.henkrecord = IndoorVirtualRaceResult.objects.create(
|
||||
userid = self.rhenk.id,
|
||||
@@ -161,7 +161,7 @@ class VirtualEventViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = plannedsessions.add_rower_race(self.rhenk,self.submitergrace)
|
||||
|
||||
|
||||
# course
|
||||
|
||||
coursefile = 'rowers/tests/testdata/course_22.kml'
|
||||
@@ -176,8 +176,8 @@ class VirtualEventViewTest(TestCase):
|
||||
course = courses.createcourse(self.r,cname,polygons,notes=cnotes)
|
||||
|
||||
self.course = course
|
||||
|
||||
|
||||
|
||||
|
||||
# otw races
|
||||
self.openotwrace = VirtualRace.objects.create(
|
||||
name = faker.word(),
|
||||
@@ -247,11 +247,11 @@ class VirtualEventViewTest(TestCase):
|
||||
distance=result['totaldist'],
|
||||
workouttype = 'water',
|
||||
)
|
||||
|
||||
|
||||
# OTW not matching course
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/onwater2.csv')
|
||||
|
||||
|
||||
self.wwater = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -262,11 +262,11 @@ class VirtualEventViewTest(TestCase):
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
# OTE 1k
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/duzend_ote.csv')
|
||||
|
||||
|
||||
self.wduzend_r = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=nu.time(),
|
||||
@@ -279,7 +279,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
# Piet
|
||||
result = get_random_file(filename='rowers/tests/testdata/duzend_ote.csv')
|
||||
|
||||
|
||||
self.wduzend_rpiet = WorkoutFactory(user=self.rpiet,
|
||||
csvfilename=result['filename'],
|
||||
starttime=nu.time(),
|
||||
@@ -292,7 +292,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
# Klaas
|
||||
result = get_random_file(filename='rowers/tests/testdata/duzend_ote.csv')
|
||||
|
||||
|
||||
self.wduzend_rklaas = WorkoutFactory(user=self.rklaas,
|
||||
csvfilename=result['filename'],
|
||||
starttime=nu.time(),
|
||||
@@ -305,7 +305,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
# Henk
|
||||
result = get_random_file(filename='rowers/tests/testdata/duzend_ote.csv')
|
||||
|
||||
|
||||
self.wduzend_rhenk = WorkoutFactory(user=self.rhenk,
|
||||
csvfilename=result['filename'],
|
||||
starttime=nu.time(),
|
||||
@@ -317,7 +317,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# OTE different
|
||||
result = get_random_file()
|
||||
self.wother_rpiet = WorkoutFactory(user=self.rpiet,
|
||||
@@ -334,8 +334,8 @@ class VirtualEventViewTest(TestCase):
|
||||
os.remove('rowers/tests/testdata/temp/course.kml')
|
||||
except (FileNotFoundError, OSError, IOError):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#Scenarios
|
||||
@@ -344,7 +344,7 @@ class VirtualEventViewTest(TestCase):
|
||||
def test_races_view(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevents_view')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
@@ -360,7 +360,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
form_data = {
|
||||
'country':'All',
|
||||
'regattatype':'ongoing'
|
||||
@@ -370,7 +370,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
form_data = {
|
||||
'country':'All',
|
||||
'regattatype':'previous'
|
||||
@@ -380,13 +380,13 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
|
||||
# set up new OTE race
|
||||
def test_new_indoorrace(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('indoorvirtualevent_create_view')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
@@ -421,15 +421,15 @@ class VirtualEventViewTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url = reverse('virtualevents_view'),
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# set up new OTE race
|
||||
def test_edit_indoorrace(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('indoorvirtualevent_edit_view',
|
||||
kwargs={'id':self.openergrace.id})
|
||||
response = self.c.get(url)
|
||||
@@ -466,17 +466,17 @@ class VirtualEventViewTest(TestCase):
|
||||
expected_url = reverse('virtualevent_view',
|
||||
kwargs={'id':self.openergrace.id}),
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# set up new otw race
|
||||
# set up new OTE race
|
||||
def test_new_race(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevent_create_view')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
@@ -513,7 +513,7 @@ class VirtualEventViewTest(TestCase):
|
||||
def test_edit_race(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevent_edit_view',kwargs={'id':self.openotwrace.id})
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
@@ -547,12 +547,12 @@ class VirtualEventViewTest(TestCase):
|
||||
expected_url = reverse('virtualevent_view',
|
||||
kwargs={'id':self.openotwrace.id}),
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
# view
|
||||
def test_race_view(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevent_view',kwargs={'id':self.openotwrace.id})
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
@@ -565,21 +565,21 @@ class VirtualEventViewTest(TestCase):
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
url = reverse('virtualevent_view',kwargs={'id':self.submitergrace.id})
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
|
||||
# register # withdraw
|
||||
def test_register_race_view(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('indoorvirtualevent_register_view',
|
||||
kwargs={'id':self.openergrace.id})
|
||||
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -607,7 +607,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
login = self.c.login(username=self.upiet.username, password=self.passwordpiet)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('indoorvirtualevent_register_view',kwargs={'id':self.openergrace.id})
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
@@ -653,10 +653,10 @@ class VirtualEventViewTest(TestCase):
|
||||
def test_register_otwrace_view(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevent_register_view',
|
||||
kwargs={'id':self.openotwrace.id})
|
||||
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -705,7 +705,7 @@ class VirtualEventViewTest(TestCase):
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
|
||||
expected_url = reverse('virtualevent_view',kwargs={'id':self.openotwrace.id})
|
||||
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
@@ -716,13 +716,13 @@ class VirtualEventViewTest(TestCase):
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
|
||||
# submit result (OTE)
|
||||
def test_ote_submit(self):
|
||||
login = self.c.login(username=self.upiet.username, password=self.passwordpiet)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevent_submit_result_view',
|
||||
kwargs={'id':self.submitergrace.id,
|
||||
'workoutid':self.wduzend_rpiet.id})
|
||||
@@ -741,7 +741,7 @@ class VirtualEventViewTest(TestCase):
|
||||
therecord = IndoorVirtualRaceResult.objects.get(userid=self.rpiet.id,
|
||||
race=self.submitergrace,
|
||||
id=self.pietrecord.id)
|
||||
|
||||
|
||||
|
||||
self.assertTrue(therecord.coursecompleted)
|
||||
|
||||
@@ -755,7 +755,7 @@ class VirtualEventViewTest(TestCase):
|
||||
def test_ote_submitfalse(self):
|
||||
login = self.c.login(username=self.upiet.username, password=self.passwordpiet)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevent_submit_result_view',
|
||||
kwargs={'id':self.submitergrace.id,
|
||||
'workoutid':self.wother_rpiet.id})
|
||||
@@ -774,7 +774,7 @@ class VirtualEventViewTest(TestCase):
|
||||
therecord = IndoorVirtualRaceResult.objects.get(userid=self.rpiet.id,
|
||||
race=self.submitergrace,
|
||||
id=self.pietrecord.id)
|
||||
|
||||
|
||||
|
||||
self.assertTrue(not therecord.coursecompleted)
|
||||
|
||||
@@ -782,7 +782,7 @@ class VirtualEventViewTest(TestCase):
|
||||
def test_otw_submit(self):
|
||||
login = self.c.login(username=self.upiet.username, password=self.passwordpiet)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('virtualevent_submit_result_view',
|
||||
kwargs={'id':self.submitotwrace.id,
|
||||
'workoutid':self.wuh_otw.id})
|
||||
@@ -819,7 +819,7 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
def test_otw_courses_edit(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
@@ -850,5 +850,4 @@ class VirtualEventViewTest(TestCase):
|
||||
|
||||
# standalone
|
||||
# calculate course adherence
|
||||
# other background jobs
|
||||
|
||||
# other background jobs
|
||||
|
||||
@@ -9,15 +9,15 @@ from .statements import *
|
||||
nu = datetime.datetime.now()
|
||||
|
||||
from rowers.views import *
|
||||
|
||||
|
||||
|
||||
class WorkoutCompareTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -42,7 +42,7 @@ class WorkoutCompareTest(TestCase):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/team-compare-select/workout/'+encoded1+'/team/0/user/1/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -74,14 +74,14 @@ class WorkoutCompareTest(TestCase):
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
class BoxPlotTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -107,7 +107,7 @@ class BoxPlotTest(TestCase):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/user-boxplot-select/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -169,17 +169,17 @@ class BoxPlotTest(TestCase):
|
||||
|
||||
response = self.c.get('/rowers/user-boxplot-data/')
|
||||
|
||||
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
class ListWorkoutTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -223,14 +223,14 @@ class ListWorkoutTest(TestCase):
|
||||
response = self.c.post(url, form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
class PlannedSessionTests(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -281,7 +281,7 @@ class ForcecurveTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -314,10 +314,10 @@ class ForcecurveTest(TestCase):
|
||||
class CumStatsTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -347,14 +347,14 @@ class CumStatsTest(TestCase):
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
class CumFlexTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -393,7 +393,7 @@ class CumFlexTest(TestCase):
|
||||
u'4+',
|
||||
u'8+',
|
||||
u'8x+']
|
||||
|
||||
|
||||
form_data = {
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
@@ -409,7 +409,7 @@ class CumFlexTest(TestCase):
|
||||
|
||||
self.factory.user = self.u
|
||||
form = FlexAxesForm(self.factory,form_data)
|
||||
|
||||
|
||||
|
||||
url = '/rowers/flexall/'
|
||||
|
||||
@@ -447,19 +447,19 @@ class CumFlexTest(TestCase):
|
||||
session['options'] = options
|
||||
session.save()
|
||||
response = self.c.get('/')
|
||||
|
||||
|
||||
url = '/rowers/flexalldata/'
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
class MultiFlexTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -498,7 +498,7 @@ class MultiFlexTest(TestCase):
|
||||
u'4+',
|
||||
u'8+',
|
||||
u'8x+']
|
||||
|
||||
|
||||
form_data = {
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
@@ -550,18 +550,18 @@ class MultiFlexTest(TestCase):
|
||||
session['options'] = options
|
||||
session.save()
|
||||
response = self.c.get('/')
|
||||
|
||||
|
||||
url = '/rowers/user-multiflex-data/'
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
class HistoTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -603,7 +603,7 @@ class HistoTest(TestCase):
|
||||
u'4+',
|
||||
u'8+',
|
||||
u'8x+']
|
||||
|
||||
|
||||
form_data = {
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
@@ -614,11 +614,11 @@ class HistoTest(TestCase):
|
||||
url = '/rowers/histo/'
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
response = self.c.post(url, form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
options = {
|
||||
'includereststrokes':False,
|
||||
'rankingonly':False,
|
||||
@@ -647,10 +647,10 @@ class HistoTest(TestCase):
|
||||
class WorkoutCompareTestNew(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -675,7 +675,7 @@ class WorkoutCompareTestNew(TestCase):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/user-analysis-select/compare/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -724,7 +724,7 @@ class WorkoutCompareTestNew(TestCase):
|
||||
result = form.is_valid()
|
||||
if not result:
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(optionsform.is_valid())
|
||||
self.assertTrue(dateform.is_valid())
|
||||
@@ -736,10 +736,10 @@ class WorkoutCompareTestNew(TestCase):
|
||||
class WorkoutBoxPlotTestNew(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -764,7 +764,7 @@ class WorkoutBoxPlotTestNew(TestCase):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/user-analysis-select/boxplot/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -812,7 +812,7 @@ class WorkoutBoxPlotTestNew(TestCase):
|
||||
result = form.is_valid()
|
||||
if not result:
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(optionsform.is_valid())
|
||||
self.assertTrue(dateform.is_valid())
|
||||
@@ -824,10 +824,10 @@ class WorkoutBoxPlotTestNew(TestCase):
|
||||
class WorkoutHistoTestNew(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -852,7 +852,7 @@ class WorkoutHistoTestNew(TestCase):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/user-analysis-select/histo/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -900,7 +900,7 @@ class WorkoutHistoTestNew(TestCase):
|
||||
result = form.is_valid()
|
||||
if not result:
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(optionsform.is_valid())
|
||||
self.assertTrue(dateform.is_valid())
|
||||
@@ -912,10 +912,10 @@ class WorkoutHistoTestNew(TestCase):
|
||||
class WorkoutFlexallTestNew(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -940,7 +940,7 @@ class WorkoutFlexallTestNew(TestCase):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/user-analysis-select/flexall/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -988,7 +988,7 @@ class WorkoutFlexallTestNew(TestCase):
|
||||
result = form.is_valid()
|
||||
if not result:
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(optionsform.is_valid())
|
||||
self.assertTrue(dateform.is_valid())
|
||||
@@ -1000,10 +1000,10 @@ class WorkoutFlexallTestNew(TestCase):
|
||||
class WorkoutStatsTestNew(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -1028,7 +1028,7 @@ class WorkoutStatsTestNew(TestCase):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/user-analysis-select/stats/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -1082,8 +1082,8 @@ class WorkoutStatsTestNew(TestCase):
|
||||
script, div = statsdata(workouts,options)
|
||||
script, div = comparisondata(workouts,options)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
|
||||
def test_workouts_stats_submit(self, mocked_sqlalchemy,
|
||||
@@ -1126,7 +1126,7 @@ class WorkoutStatsTestNew(TestCase):
|
||||
result = form.is_valid()
|
||||
if not result:
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(optionsform.is_valid())
|
||||
self.assertTrue(dateform.is_valid())
|
||||
@@ -1134,4 +1134,3 @@ class WorkoutStatsTestNew(TestCase):
|
||||
response = self.c.post('/rowers/user-analysis-select/',form_data)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@@ -33,10 +33,10 @@ def create_image(storage, filename, size=(100, 100), image_mode='RGB', image_for
|
||||
class WorkoutViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -48,7 +48,7 @@ class WorkoutViewTest(TestCase):
|
||||
self.u.save()
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/onwater2.csv')
|
||||
|
||||
|
||||
self.wwater = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -75,7 +75,7 @@ class WorkoutViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/erg1.csv')
|
||||
|
||||
|
||||
self.werg1 = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -86,7 +86,7 @@ class WorkoutViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/erg2.csv')
|
||||
|
||||
|
||||
self.werg2 = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -97,7 +97,7 @@ class WorkoutViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/erg2.csv')
|
||||
|
||||
|
||||
self.werg2copy = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -107,9 +107,9 @@ class WorkoutViewTest(TestCase):
|
||||
workouttype = 'rower',
|
||||
)
|
||||
|
||||
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/erg3.csv')
|
||||
|
||||
|
||||
self.werg3 = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -141,7 +141,7 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_joins(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -154,7 +154,7 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
d1 = self.werg1.date-datetime.timedelta(days=2)
|
||||
d2 = self.werg2.date+datetime.timedelta(days=2)
|
||||
|
||||
|
||||
date_form_data = {
|
||||
'startdate': d1.strftime('%Y-%m%d'),
|
||||
'enddate': d2.strftime('%Y-%m%d')
|
||||
@@ -162,7 +162,7 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
response = self.c.post(url,date_form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
url = reverse('workouts_join_view')
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
@@ -197,7 +197,7 @@ class WorkoutViewTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.middleware.myqueue')
|
||||
@@ -224,8 +224,8 @@ class WorkoutViewTest(TestCase):
|
||||
'plottype':'line',
|
||||
'teamid': '',
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -269,7 +269,7 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_smoothen(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -287,7 +287,7 @@ class WorkoutViewTest(TestCase):
|
||||
'id':encoder.encode_hex(self.wwater.id)
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
@@ -302,12 +302,12 @@ class WorkoutViewTest(TestCase):
|
||||
'id':encoder.encode_hex(self.wwater.id)
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_windform(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -363,7 +363,7 @@ class WorkoutViewTest(TestCase):
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_setpowerform(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -409,7 +409,7 @@ class WorkoutViewTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_commentview(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -435,7 +435,7 @@ class WorkoutViewTest(TestCase):
|
||||
url = reverse('workout_unsubscribe_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_mapview(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -471,7 +471,7 @@ class WorkoutViewTest(TestCase):
|
||||
#if not form.is_valid():
|
||||
# print form.errors
|
||||
#self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
response = self.c.post(url,form_data,format='multipart',follow=True)
|
||||
|
||||
expected_url = reverse(self.r.defaultlandingpage,
|
||||
@@ -480,7 +480,7 @@ class WorkoutViewTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db)
|
||||
@@ -536,7 +536,7 @@ class WorkoutViewTest(TestCase):
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_editsummaryview(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -590,7 +590,7 @@ class WorkoutViewTest(TestCase):
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_workout_delete(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
@@ -611,4 +611,3 @@ class WorkoutViewTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ from rowers.views import get_workout
|
||||
class SimpleViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
@@ -59,4 +59,3 @@ class SimpleViewTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/list-workouts/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class CoursesTest(TestCase):
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
)
|
||||
@@ -73,9 +73,8 @@ class CoursesTest(TestCase):
|
||||
|
||||
response = self.c.get('/rowers/courses/1/downloadkml/')
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
self.assertEquals(
|
||||
response.get('Content-Disposition'),
|
||||
'attachment; filename="course_1.kml"'
|
||||
)
|
||||
|
||||
|
||||
@@ -13,15 +13,15 @@ from rowers.utils import calculate_age
|
||||
|
||||
import rowers.dataprep as dataprep
|
||||
|
||||
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class OTWCPChartTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,sex='male',
|
||||
gdproptin=True,surveydone=True,sex='male',
|
||||
weightcategory='hwt',
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
@@ -45,8 +45,8 @@ class OTWCPChartTest(TestCase):
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -54,7 +54,7 @@ class OTWCPChartTest(TestCase):
|
||||
|
||||
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
|
||||
duration = datetime.time(hour=hours,minute=minutes,second=seconds)
|
||||
|
||||
|
||||
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
||||
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
||||
|
||||
@@ -104,16 +104,16 @@ class OTWCPChartTest(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class CPChartTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,sex='male',
|
||||
gdproptin=True,surveydone=True,sex='male',
|
||||
weightcategory='hwt',
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
@@ -146,7 +146,7 @@ class CPChartTest(TestCase):
|
||||
perfsdf = pd.read_csv('rowers/tests/testdata/calcageperformance.csv')
|
||||
|
||||
r = self.u.rower
|
||||
|
||||
|
||||
for i in perfsdf.index:
|
||||
perf = CalcAgePerformance(
|
||||
age = age,
|
||||
@@ -156,14 +156,14 @@ class CPChartTest(TestCase):
|
||||
weightcategory = r.weightcategory
|
||||
)
|
||||
perf.save()
|
||||
|
||||
|
||||
def tearDown(self):
|
||||
for workout in self.user_workouts:
|
||||
try:
|
||||
os.remove(workout.csvfilename)
|
||||
except (IOError, FileNotFoundError,OSError):
|
||||
pass
|
||||
|
||||
|
||||
def test_analytics_page(self):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
@@ -228,7 +228,7 @@ class CPChartTest(TestCase):
|
||||
|
||||
r = self.u.rower
|
||||
age = calculate_age(r.birthdate)
|
||||
|
||||
|
||||
wcdurations = []
|
||||
wcpower = []
|
||||
durations = [1,4,30,60]
|
||||
@@ -244,7 +244,7 @@ class CPChartTest(TestCase):
|
||||
)
|
||||
|
||||
jsondf = df.to_json()
|
||||
|
||||
|
||||
result = handle_getagegrouprecords(
|
||||
jsondf,distances,durations,age,r.sex,r.weightcategory)
|
||||
|
||||
@@ -258,8 +258,8 @@ class CPChartTest(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.fetchcperg', side_effect = mocked_fetchcperg)
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_rankingpieces(self, mocked_fetchcperg, mocked_sqlalchemy):
|
||||
@@ -322,5 +322,3 @@ class CPChartTest(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
+35
-36
@@ -12,23 +12,23 @@ class EmailUpload(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
self.rtheadmin = Rower.objects.create(user=self.theadmin,
|
||||
birthdate = faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
workoutsbox = Mailbox.objects.create(name='workouts1')
|
||||
workoutsbox.save()
|
||||
failbox = Mailbox.objects.create(name='Failed')
|
||||
failbox.save()
|
||||
|
||||
|
||||
m = Message(mailbox=workoutsbox,
|
||||
from_header = u.email,
|
||||
subject = "run",
|
||||
@@ -73,23 +73,23 @@ class ZipEmailUpload(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
self.rtheadmin = Rower.objects.create(user=self.theadmin,
|
||||
birthdate = faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
workoutsbox = Mailbox.objects.create(name='workouts1')
|
||||
workoutsbox.save()
|
||||
failbox = Mailbox.objects.create(name='Failed')
|
||||
failbox.save()
|
||||
|
||||
|
||||
m = Message(mailbox=workoutsbox,
|
||||
from_header = u.email,
|
||||
subject = "Sprint",
|
||||
@@ -127,7 +127,7 @@ workout water
|
||||
w = ws[4]
|
||||
self.assertEqual(w.name,'Sprint (5)')
|
||||
|
||||
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class EmailUniCodeUpload(TestCase):
|
||||
def setUp(self):
|
||||
@@ -135,23 +135,23 @@ class EmailUniCodeUpload(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
self.rtheadmin = Rower.objects.create(user=self.theadmin,
|
||||
birthdate = faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
workoutsbox = Mailbox.objects.create(name='workouts2')
|
||||
workoutsbox.save()
|
||||
failbox = Mailbox.objects.create(name='Failed')
|
||||
failbox.save()
|
||||
|
||||
|
||||
m = Message(mailbox=workoutsbox,
|
||||
from_header = u.email,
|
||||
subject = "Třeboň",
|
||||
@@ -196,23 +196,23 @@ class EmailBikeErgUpload(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
self.rtheadmin = Rower.objects.create(user=self.theadmin,
|
||||
birthdate = faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
workoutsbox = Mailbox.objects.create(name='workouts2')
|
||||
workoutsbox.save()
|
||||
failbox = Mailbox.objects.create(name='Failed')
|
||||
failbox.save()
|
||||
|
||||
|
||||
m = Message(mailbox=workoutsbox,
|
||||
from_header = u.email,
|
||||
subject = "bikeerg",
|
||||
@@ -257,23 +257,23 @@ class EmailBikeUpload(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
self.rtheadmin = Rower.objects.create(user=self.theadmin,
|
||||
birthdate = faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
workoutsbox = Mailbox.objects.create(name='workouts3')
|
||||
workoutsbox.save()
|
||||
failbox = Mailbox.objects.create(name='Failed')
|
||||
failbox.save()
|
||||
|
||||
|
||||
m = Message(mailbox=workoutsbox,
|
||||
from_header = u.email,
|
||||
subject = "bike",
|
||||
@@ -311,9 +311,9 @@ workout bike
|
||||
w = ws[0]
|
||||
self.assertEqual(w.workouttype,'Bike')
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class EmailTests(TestCase):
|
||||
def setUp(self):
|
||||
@@ -321,24 +321,24 @@ class EmailTests(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
self.rtheadmin = Rower.objects.create(user=self.theadmin,
|
||||
birthdate = faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
workoutsbox = Mailbox.objects.create(name='workouts4')
|
||||
workoutsbox.save()
|
||||
failbox = Mailbox.objects.create(name='Failed')
|
||||
failbox.save()
|
||||
|
||||
|
||||
|
||||
for filename in os.listdir(u'rowers/tests/testdata/emails'):
|
||||
m = Message(mailbox=workoutsbox,
|
||||
from_header = u.email,
|
||||
@@ -384,7 +384,7 @@ race 1
|
||||
os.remove(path)
|
||||
except (IOError,FileNotFoundError,OSError):
|
||||
pass
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.polarstuff.get_polar_notifications')
|
||||
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
|
||||
@@ -396,7 +396,7 @@ race 1
|
||||
self.assertIn('Successfully processed email attachments',out.getvalue())
|
||||
|
||||
|
||||
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class EmailAdminUpload(TestCase):
|
||||
def setUp(self):
|
||||
@@ -404,7 +404,7 @@ class EmailAdminUpload(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
birthdate = faker.profile()['birthdate']
|
||||
)
|
||||
@@ -412,10 +412,10 @@ class EmailAdminUpload(TestCase):
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
self.rtheadmin = Rower.objects.create(user=self.theadmin,
|
||||
birthdate = faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
self.race = RaceFactory(manager = self.theadmin)
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
@@ -423,7 +423,7 @@ class EmailAdminUpload(TestCase):
|
||||
workoutsbox.save()
|
||||
failbox = Mailbox.objects.create(name='Failed')
|
||||
failbox.save()
|
||||
|
||||
|
||||
m = Message(mailbox=workoutsbox,
|
||||
from_header = self.theadmin.email,
|
||||
subject = "johnsworkout",
|
||||
@@ -460,7 +460,7 @@ race 1
|
||||
if not len(ws):
|
||||
for w in Workout.objects.all():
|
||||
print(w)
|
||||
|
||||
|
||||
self.assertEqual(len(ws),1)
|
||||
|
||||
w = ws[0]
|
||||
@@ -473,4 +473,3 @@ race 1
|
||||
result = results[0]
|
||||
|
||||
self.assertTrue(result.coursecompleted)
|
||||
|
||||
|
||||
@@ -14,10 +14,10 @@ class EmpowerTest(TestCase):
|
||||
'sander@ds.ds',
|
||||
'koeinsloot',
|
||||
)
|
||||
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True,
|
||||
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now())
|
||||
self.c = Client()
|
||||
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
otwfilename = 'rowers/tests/testdata/empower.csv'
|
||||
@@ -27,20 +27,20 @@ class EmpowerTest(TestCase):
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=otwfilename)
|
||||
|
||||
|
||||
powerperc = 100*np.array([r.pw_ut2,
|
||||
r.pw_ut1,
|
||||
r.pw_at,
|
||||
r.pw_tr,r.pw_an])/r.ftp
|
||||
|
||||
|
||||
|
||||
self.hrdata = {
|
||||
'hrmax':r.max,
|
||||
'hrut2':r.ut2,
|
||||
|
||||
@@ -9,10 +9,10 @@ from .statements import *
|
||||
class WorkoutViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
showfavoritechartnotes=True)
|
||||
@@ -25,7 +25,7 @@ class WorkoutViewTest(TestCase):
|
||||
self.u.save()
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/onwater2.csv')
|
||||
|
||||
|
||||
self.wwater = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -47,7 +47,7 @@ class WorkoutViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/erg1.csv')
|
||||
|
||||
|
||||
self.werg1 = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -58,7 +58,7 @@ class WorkoutViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/erg2.csv')
|
||||
|
||||
|
||||
self.werg2 = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -69,7 +69,7 @@ class WorkoutViewTest(TestCase):
|
||||
)
|
||||
|
||||
result = get_random_file(filename='rowers/tests/testdata/erg3.csv')
|
||||
|
||||
|
||||
self.werg3 = WorkoutFactory(user=self.r,
|
||||
csvfilename=result['filename'],
|
||||
starttime=result['starttime'],
|
||||
@@ -98,7 +98,7 @@ class WorkoutViewTest(TestCase):
|
||||
notes=faker.word(),
|
||||
user=self.r
|
||||
)
|
||||
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
@@ -113,7 +113,7 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
# change chart
|
||||
form_data = {
|
||||
'xaxis':'time',
|
||||
@@ -161,7 +161,7 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
# change chart
|
||||
form_data = {
|
||||
'xaxis':'time',
|
||||
@@ -190,4 +190,4 @@ class WorkoutViewTest(TestCase):
|
||||
}
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -10,7 +10,7 @@ nu = datetime.datetime.now()
|
||||
|
||||
import rowers
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class C2Objects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
@@ -22,7 +22,7 @@ class C2Objects(DjangoTestCase):
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
@@ -33,9 +33,9 @@ class C2Objects(DjangoTestCase):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -44,7 +44,7 @@ class C2Objects(DjangoTestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -65,15 +65,15 @@ class C2Objects(DjangoTestCase):
|
||||
csvfilename=filename
|
||||
)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.c2stuff.Session', side_effect=mocked_requests)
|
||||
def test_c2_callback(self, mock_Session):
|
||||
response = self.c.get('/call_back?code=dsdoij232s',follow=True)
|
||||
|
||||
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.c2stuff.Session', side_effect=mocked_requests)
|
||||
def test_c2_token_refresh(self, mock_Session):
|
||||
response = self.c.get('/rowers/me/c2refresh/',follow=True)
|
||||
@@ -99,7 +99,7 @@ class C2Objects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/c2list',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_c2_import(self, mock_get, mocked_sqlalchemy):
|
||||
@@ -112,7 +112,7 @@ class C2Objects(DjangoTestCase):
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_strokedata(self, mocked_sqlalchemy):
|
||||
with open('rowers/tests/testdata/c2stroketestdata.txt','r') as infile:
|
||||
@@ -157,7 +157,7 @@ class C2ObjectsTokenExpired(DjangoTestCase):
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
@@ -168,9 +168,9 @@ class C2ObjectsTokenExpired(DjangoTestCase):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -179,7 +179,7 @@ class C2ObjectsTokenExpired(DjangoTestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -200,7 +200,7 @@ class C2ObjectsTokenExpired(DjangoTestCase):
|
||||
csvfilename=filename
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
|
||||
@@ -209,7 +209,7 @@ class C2ObjectsTokenExpired(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/c2list',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_c2_import(self, mock_get, mocked_sqlalchemy):
|
||||
@@ -222,9 +222,9 @@ class C2ObjectsTokenExpired(DjangoTestCase):
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class StravaObjects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
@@ -236,7 +236,7 @@ class StravaObjects(DjangoTestCase):
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
@@ -247,9 +247,9 @@ class StravaObjects(DjangoTestCase):
|
||||
self.r.save()
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -258,7 +258,7 @@ class StravaObjects(DjangoTestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -329,10 +329,10 @@ class StravaObjects(DjangoTestCase):
|
||||
self.assertEqual(result,"987654321234567898765432123456789")
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class STObjects(DjangoTestCase):
|
||||
class STObjects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
self.u = User.objects.create_user('john',
|
||||
@@ -342,7 +342,7 @@ class STObjects(DjangoTestCase):
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
@@ -355,9 +355,9 @@ class STObjects(DjangoTestCase):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -366,7 +366,7 @@ class STObjects(DjangoTestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -391,10 +391,10 @@ class STObjects(DjangoTestCase):
|
||||
def test_sporttracks_callback(self, mock_post):
|
||||
response = self.c.get('/sporttracks_callback?code=dsdoij232s',follow=True)
|
||||
|
||||
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.sporttracksstuff.requests.post', side_effect=mocked_requests)
|
||||
def test_sporttracks_token_refresh(self, mock_post):
|
||||
response = self.c.get('/rowers/me/sporttracksrefresh/',follow=True)
|
||||
@@ -419,7 +419,7 @@ class STObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/sporttracksimport',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.imports.requests.get', side_effect=mocked_requests)
|
||||
def test_sporttracks_import(self, mock_get):
|
||||
|
||||
@@ -478,9 +478,9 @@ class STObjects(DjangoTestCase):
|
||||
|
||||
res = add_workout_from_data(self.u,1,data,data)
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class RunKeeperObjects(DjangoTestCase):
|
||||
class RunKeeperObjects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
self.u = User.objects.create_user('john',
|
||||
@@ -490,7 +490,7 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
@@ -502,9 +502,9 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -513,7 +513,7 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -557,7 +557,7 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/runkeeperimport',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.imports.requests.get', side_effect=mocked_requests)
|
||||
def test_runkeeper_import(self, mock_get):
|
||||
|
||||
@@ -570,10 +570,10 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
||||
@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class UAObjects(DjangoTestCase):
|
||||
class UAObjects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
self.u = User.objects.create_user('john',
|
||||
@@ -583,7 +583,7 @@ class UAObjects(DjangoTestCase):
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
@@ -596,9 +596,9 @@ class UAObjects(DjangoTestCase):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -607,7 +607,7 @@ class UAObjects(DjangoTestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -632,10 +632,10 @@ class UAObjects(DjangoTestCase):
|
||||
def test_underarmour_callback(self, mock_post):
|
||||
response = self.c.get('/underarmour_callback?code=dsdoij232s',follow=True)
|
||||
|
||||
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.underarmourstuff.requests.post', side_effect=mocked_requests)
|
||||
def test_underarmour_token_refresh(self, mock_post):
|
||||
response = self.c.get('/rowers/me/underarmourrefresh/',follow=True)
|
||||
@@ -660,7 +660,7 @@ class UAObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/underarmourimport',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.imports.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_underarmour_import(self, mock_get, mocked_sqlalchemy):
|
||||
@@ -674,9 +674,9 @@ class UAObjects(DjangoTestCase):
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class TPObjects(DjangoTestCase):
|
||||
class TPObjects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
self.u = User.objects.create_user('john',
|
||||
@@ -686,7 +686,7 @@ class TPObjects(DjangoTestCase):
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
@@ -699,9 +699,9 @@ class TPObjects(DjangoTestCase):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -710,7 +710,7 @@ class TPObjects(DjangoTestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -735,10 +735,10 @@ class TPObjects(DjangoTestCase):
|
||||
def test_tp_callback(self, mock_post):
|
||||
response = self.c.get('/tp_callback?code=dsdoij232s',follow=True)
|
||||
|
||||
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.tpstuff.requests.post', side_effect=mocked_requests)
|
||||
def test_tp_token_refresh(self, mock_post):
|
||||
response = self.c.get('/rowers/me/tprefresh/',follow=True)
|
||||
@@ -761,7 +761,7 @@ class TPObjects(DjangoTestCase):
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class AutoExportTests(TestCase):
|
||||
def setUp(self):
|
||||
@@ -769,7 +769,7 @@ class AutoExportTests(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ class InteractiveChartTest(TestCase):
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
@@ -26,7 +26,7 @@ class InteractiveChartTest(TestCase):
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=self.filename)
|
||||
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
@@ -40,7 +40,7 @@ class InteractiveChartTest(TestCase):
|
||||
def test_painsled(self, mocked_sqlalchemy, mocked_read_df_sql):
|
||||
u = User.objects.get(username='john')
|
||||
r = Rower.objects.get(user=u)
|
||||
|
||||
|
||||
rr = rrower(hrmax=r.max,hrut2=r.ut2,
|
||||
hrut1=r.ut1,hrat=r.at,
|
||||
hrtr=r.tr,hran=r.an,ftp=r.ftp)
|
||||
@@ -59,7 +59,7 @@ class InteractiveChartTest(TestCase):
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_interactive_chart2(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_getsmallrowdata_db):
|
||||
res = iplots.interactive_chart(self.wote.id,promember=1)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@@ -69,7 +69,7 @@ class InteractiveChartTest(TestCase):
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart4(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
def test_interactive_chart4(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_bar_chart(self.wote.id,promember=1)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@@ -90,7 +90,7 @@ class InteractiveChartTest(TestCase):
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_interactive_chart7(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_getsmallrowdata_db):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=0,
|
||||
xparam='time',
|
||||
yparam1='pace',yparam2='spm')
|
||||
@@ -98,8 +98,8 @@ class InteractiveChartTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_interactive_chart8(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
def test_interactive_chart8(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=0,xparam='distance',
|
||||
yparam1='pace',yparam2='spm')
|
||||
@@ -108,23 +108,23 @@ class InteractiveChartTest(TestCase):
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_interactive_chart9(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
mocked_getsmallrowdata_db):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='hr')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_interactive_chart10(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
def test_interactive_chart10(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='distance',
|
||||
yparam1='pace',yparam2='hr')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_interactive_chart11(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
def test_interactive_chart11(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='spm')
|
||||
@@ -132,10 +132,8 @@ class InteractiveChartTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_interactive_chart12(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
def test_interactive_chart12(self, mocked_sqlalchemy,mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=1,
|
||||
xparam='distance',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
|
||||
|
||||
@@ -9,15 +9,15 @@ from .statements import *
|
||||
nu = datetime.datetime.now()
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class WorkoutTests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
nu = datetime.datetime.now()
|
||||
@@ -30,14 +30,14 @@ class WorkoutTests(TestCase):
|
||||
def test_checkworkoutuser(self):
|
||||
self.assertEqual(checkworkoutuser(self.u,self.w),True)
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
class C2Tests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
@@ -54,7 +54,7 @@ class C2Tests(TestCase):
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
class subroutinetests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
@@ -77,6 +77,3 @@ class subroutinetests(TestCase):
|
||||
jsond = json.dumps(data)
|
||||
data = c2stuff.createc2workoutdata_as_splits(w)
|
||||
jsond = json.dumps(data)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ from .statements import *
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class NewUserRegistrationTest(TestCase):
|
||||
def setUp(self):
|
||||
@@ -20,7 +20,7 @@ class NewUserRegistrationTest(TestCase):
|
||||
os.remove('rowsandall_workouts_2018-01-01_2019-01-01.csv')
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
@patch('rowers.dataprep.workout_summary_to_df',side_effect=mock_workout_summaries)
|
||||
def test_newuser(self,mock_workout_summaries):
|
||||
form_data = {
|
||||
@@ -40,11 +40,11 @@ class NewUserRegistrationTest(TestCase):
|
||||
|
||||
form = RegistrationFormUniqueEmail(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
response = self.c.post('/rowers/register/', form_data, follow=True)
|
||||
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/me/gdpr-optin/?next=/rowers/list-workouts/',
|
||||
expected_url='/rowers/survey/?next=/rowers/list-workouts/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ class NewUserRegistrationTest(TestCase):
|
||||
response = self.c.post(url,form_data)
|
||||
|
||||
self.assertTrue(response.status_code,200)
|
||||
|
||||
|
||||
url = '/rowers/me/delete/'
|
||||
|
||||
form_data = {
|
||||
@@ -84,6 +84,3 @@ class NewUserRegistrationTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url='/login/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class PaymentTest(TestCase):
|
||||
def setUp(self):
|
||||
|
||||
# settings.DEBUG = True
|
||||
|
||||
|
||||
p1 = PaidPlan(
|
||||
shortname='free',
|
||||
name='Basic',
|
||||
@@ -64,7 +64,7 @@ class PaymentTest(TestCase):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -79,7 +79,7 @@ class PaymentTest(TestCase):
|
||||
u.save()
|
||||
login = self.c.login(username=u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/billing/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -93,7 +93,7 @@ class PaymentTest(TestCase):
|
||||
for code, name in list(countries):
|
||||
if name.lower() == country.lower():
|
||||
countrycode = code
|
||||
|
||||
|
||||
form_data = {
|
||||
'street_address':faker.street_address(),
|
||||
'city':faker.city(),
|
||||
@@ -112,7 +112,7 @@ class PaymentTest(TestCase):
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = '/rowers/checkout/'+str(plan.id)+'/'
|
||||
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
@@ -122,7 +122,7 @@ class PaymentTest(TestCase):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -139,10 +139,10 @@ class PaymentTest(TestCase):
|
||||
r.save()
|
||||
u.set_password(self.password)
|
||||
u.save()
|
||||
|
||||
|
||||
login = self.c.login(username=u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/upgrade/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -156,7 +156,7 @@ class PaymentTest(TestCase):
|
||||
for code, name in list(countries):
|
||||
if name.lower() == country.lower():
|
||||
countrycode = code
|
||||
|
||||
|
||||
form_data = {
|
||||
'street_address':faker.street_address(),
|
||||
'city':faker.city(),
|
||||
@@ -175,7 +175,7 @@ class PaymentTest(TestCase):
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = '/rowers/upgradecheckout/'+str(plan.id)+'/'
|
||||
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
@@ -185,7 +185,7 @@ class PaymentTest(TestCase):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -208,10 +208,10 @@ class PaymentTest(TestCase):
|
||||
r.save()
|
||||
u.set_password(self.password)
|
||||
u.save()
|
||||
|
||||
|
||||
login = self.c.login(username=u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/downgrade/'
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -222,7 +222,7 @@ class PaymentTest(TestCase):
|
||||
for code, name in list(countries):
|
||||
if name.lower() == country.lower():
|
||||
countrycode = code
|
||||
|
||||
|
||||
form_data = {
|
||||
'street_address':faker.street_address(),
|
||||
'city':faker.city(),
|
||||
@@ -241,7 +241,7 @@ class PaymentTest(TestCase):
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = '/rowers/downgradecheckout/'+str(plans[0].id)+'/'
|
||||
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
@@ -251,7 +251,7 @@ class PaymentTest(TestCase):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -274,22 +274,22 @@ class PaymentTest(TestCase):
|
||||
|
||||
r.paidplan = plan
|
||||
r.save()
|
||||
|
||||
|
||||
login = self.c.login(username=u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/me/cancelsubscriptions/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
@patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway)
|
||||
def test_planstobasic_view(self,mocked_gateway):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -312,10 +312,10 @@ class PaymentTest(TestCase):
|
||||
|
||||
r.paidplan = plan
|
||||
r.save()
|
||||
|
||||
|
||||
login = self.c.login(username=u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = '/rowers/me/cancelsubscription/34/'
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
@@ -329,7 +329,7 @@ class PaymentTest(TestCase):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -344,13 +344,13 @@ class PaymentTest(TestCase):
|
||||
r.save()
|
||||
result = mocktest(r)
|
||||
self.assertEqual(result,'121')
|
||||
|
||||
|
||||
@patch('rowers.views.braintreestuff.create_subscription', side_effect=mock_create_subscription)
|
||||
def test_checkouts_view(self,mock_subscription):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -396,7 +396,7 @@ class PaymentTest(TestCase):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -435,13 +435,13 @@ class PaymentTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/paymentcompleted/?amount=20.00',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@patch('rowers.views.braintreestuff.update_subscription', side_effect=mock_update_subscription)
|
||||
def test_downgrade_checkouts_view(self,mock_subscription):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -480,13 +480,13 @@ class PaymentTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/downgradecompleted/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@patch('rowers.views.braintreestuff.create_subscription', side_effect=mock_create_subscription)
|
||||
def test_checkouts_view(self,mock_subscription):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -536,7 +536,7 @@ class PaymentTest(TestCase):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -575,13 +575,13 @@ class PaymentTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/paymentcompleted/?amount=20.00',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
@patch('rowers.views.braintreestuff.update_subscription', side_effect=mock_update_subscription)
|
||||
def test_downgrade_checkouts_view(self,mock_subscription):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
@@ -620,4 +620,3 @@ class PaymentTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/downgradecompleted/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
+111
-111
@@ -23,7 +23,7 @@ class PermissionsFreeCoach(TestCase):
|
||||
self.ufreecoach = UserFactory(username='coachuser')
|
||||
self.rfreecoach = Rower.objects.create(user=self.ufreecoach,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='freecoach',clubsize=100)
|
||||
|
||||
self.coachinggroup = CoachingGroup.objects.create()
|
||||
@@ -33,11 +33,11 @@ class PermissionsFreeCoach(TestCase):
|
||||
self.password = faker.word()
|
||||
self.ufreecoach.set_password(self.password)
|
||||
self.ufreecoach.save()
|
||||
|
||||
|
||||
self.uplan = UserFactory(username='planuser')
|
||||
self.rplan = Rower.objects.create(user=self.uplan,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||
@@ -45,11 +45,11 @@ class PermissionsFreeCoach(TestCase):
|
||||
self.password = faker.word()
|
||||
self.uplan.set_password(self.password)
|
||||
self.uplan.save()
|
||||
|
||||
|
||||
self.upro = UserFactory(username='prouser')
|
||||
self.rpro = Rower.objects.create(user=self.upro,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
|
||||
@@ -61,7 +61,7 @@ class PermissionsFreeCoach(TestCase):
|
||||
self.uplan2 = UserFactory(username='planuser2')
|
||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||
@@ -69,11 +69,11 @@ class PermissionsFreeCoach(TestCase):
|
||||
self.password = faker.word()
|
||||
self.uplan2.set_password(self.password)
|
||||
self.uplan2.save()
|
||||
|
||||
|
||||
self.upro2 = UserFactory(username='prouser2')
|
||||
self.rpro2 = Rower.objects.create(user=self.upro2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
||||
@@ -85,7 +85,7 @@ class PermissionsFreeCoach(TestCase):
|
||||
self.ubasic = UserFactory(username='basicuser')
|
||||
self.rbasic = Rower.objects.create(user=self.ubasic,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
|
||||
@@ -93,9 +93,9 @@ class PermissionsFreeCoach(TestCase):
|
||||
self.ubasicpassword = faker.word()
|
||||
self.ubasic.set_password(self.ubasicpassword)
|
||||
self.ubasic.save()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## TeamFreeCoach
|
||||
|
||||
self.teamfreecoach = Team.objects.create(
|
||||
@@ -120,8 +120,8 @@ class PermissionsFreeCoach(TestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(team2.manager,self.ufreecoach)
|
||||
|
||||
|
||||
|
||||
|
||||
team3 = Team.objects.create(
|
||||
name = 'ThirdTeam',
|
||||
notes = faker.text(),
|
||||
@@ -129,9 +129,9 @@ class PermissionsFreeCoach(TestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(team3.manager,self.ufreecoach)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Free coach can create more than one group
|
||||
def test_plan_groupmanager(self):
|
||||
team1 = Team.objects.create(
|
||||
@@ -147,11 +147,11 @@ class PermissionsFreeCoach(TestCase):
|
||||
notes = faker.text(),
|
||||
manager = self.ufreecoach,
|
||||
)
|
||||
|
||||
self.assertEqual(team2.manager,self.ufreecoach)
|
||||
|
||||
|
||||
|
||||
self.assertEqual(team2.manager,self.ufreecoach)
|
||||
|
||||
|
||||
|
||||
## Free Coach can create planned sessions and team planned sessions
|
||||
## Self Coach and higher can create planned sessions and team planned sessions
|
||||
def test_plan_create_session(self):
|
||||
@@ -161,7 +161,7 @@ class PermissionsFreeCoach(TestCase):
|
||||
comment=faker.text()
|
||||
)
|
||||
self.assertEqual(ps.manager,self.ufreecoach)
|
||||
|
||||
|
||||
def test_coach_create_session(self):
|
||||
ps = PlannedSession.objects.create(
|
||||
manager=self.ufreecoach,
|
||||
@@ -169,8 +169,8 @@ class PermissionsFreeCoach(TestCase):
|
||||
comment=faker.text()
|
||||
)
|
||||
self.assertEqual(ps.manager,self.ufreecoach)
|
||||
|
||||
|
||||
|
||||
|
||||
## Basic cannot join groups led by Free Coach
|
||||
def test_add_basic_pro_or_plan(self):
|
||||
with transaction.atomic():
|
||||
@@ -191,7 +191,7 @@ class PermissionsFreeCoach(TestCase):
|
||||
distance=result['totaldist'],
|
||||
workouttype = 'rower',
|
||||
)
|
||||
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class PermissionsBasicsTests(TestCase):
|
||||
def setUp(self):
|
||||
@@ -201,7 +201,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.ucoach = UserFactory(username='coachuser')
|
||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='coach',clubsize=10)
|
||||
|
||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||
@@ -212,11 +212,11 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.password = faker.word()
|
||||
self.ucoach.set_password(self.password)
|
||||
self.ucoach.save()
|
||||
|
||||
|
||||
self.uplan = UserFactory(username='planuser')
|
||||
self.rplan = Rower.objects.create(user=self.uplan,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||
@@ -224,11 +224,11 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.password = faker.word()
|
||||
self.uplan.set_password(self.password)
|
||||
self.uplan.save()
|
||||
|
||||
|
||||
self.upro = UserFactory(username='prouser')
|
||||
self.rpro = Rower.objects.create(user=self.upro,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
|
||||
@@ -240,7 +240,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.uplan2 = UserFactory(username='planuser2')
|
||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||
@@ -248,11 +248,11 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.password = faker.word()
|
||||
self.uplan2.set_password(self.password)
|
||||
self.uplan2.save()
|
||||
|
||||
|
||||
self.upro2 = UserFactory(username='prouser2')
|
||||
self.rpro2 = Rower.objects.create(user=self.upro2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
||||
@@ -264,7 +264,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.ubasic = UserFactory(username='basicuser')
|
||||
self.rbasic = Rower.objects.create(user=self.ubasic,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
|
||||
@@ -272,9 +272,9 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.ubasicpassword = faker.word()
|
||||
self.ubasic.set_password(self.ubasicpassword)
|
||||
self.ubasic.save()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## TeamPro, TeamCoach, TeamSelfCoach
|
||||
|
||||
self.teampro = Team.objects.create(
|
||||
@@ -293,9 +293,9 @@ class PermissionsBasicsTests(TestCase):
|
||||
manager=self.ucoach)
|
||||
|
||||
# Requirements
|
||||
|
||||
|
||||
## Low level
|
||||
|
||||
|
||||
## Coach can have any number of groups
|
||||
def test_coach_groupmanager(self):
|
||||
team1 = Team.objects.create(
|
||||
@@ -313,8 +313,8 @@ class PermissionsBasicsTests(TestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(team2.manager,self.ucoach)
|
||||
|
||||
|
||||
|
||||
|
||||
team3 = Team.objects.create(
|
||||
name = 'ThirdTeam',
|
||||
notes = faker.text(),
|
||||
@@ -322,15 +322,15 @@ class PermissionsBasicsTests(TestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(team3.manager,self.ucoach)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Basic athletes can be member of Coach led group
|
||||
def test_add_coach(self):
|
||||
self.rbasic.team.add(self.teamcoach)
|
||||
self.assertIn(self.teamcoach,self.rbasic.team.all())
|
||||
|
||||
|
||||
|
||||
|
||||
## Self coach can create one group
|
||||
## Self coach cannot create more than one group
|
||||
def test_plan_groupmanager(self):
|
||||
@@ -348,9 +348,9 @@ class PermissionsBasicsTests(TestCase):
|
||||
notes = faker.text(),
|
||||
manager = self.uplan,
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Pro users (and higher) can join group led by other Pro (or higher) user
|
||||
def test_add_proplan_pro_or_plan(self):
|
||||
self.rpro.team.add(self.teamplan)
|
||||
@@ -371,9 +371,9 @@ class PermissionsBasicsTests(TestCase):
|
||||
self.rcoach.team.add(self.teampro)
|
||||
self.assertIn(self.teampro,self.rcoach.team.all())
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Coach can create planned sessions and team planned sessions
|
||||
## Self Coach and higher can create planned sessions and team planned sessions
|
||||
def test_plan_create_session(self):
|
||||
@@ -383,7 +383,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
comment=faker.text()
|
||||
)
|
||||
self.assertEqual(ps.manager,self.uplan)
|
||||
|
||||
|
||||
def test_coach_create_session(self):
|
||||
ps = PlannedSession.objects.create(
|
||||
manager=self.ucoach,
|
||||
@@ -391,7 +391,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
comment=faker.text()
|
||||
)
|
||||
self.assertEqual(ps.manager,self.ucoach)
|
||||
|
||||
|
||||
## Pro can have one group
|
||||
## Pro cannot create more than one group
|
||||
def test_pro_groupmanager(self):
|
||||
@@ -409,8 +409,8 @@ class PermissionsBasicsTests(TestCase):
|
||||
notes = faker.text(),
|
||||
manager = self.upro,
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
## Pro or Basic cannot create planned sessions or team planned sessions
|
||||
def test_pro_create_plannedsession(self):
|
||||
with self.assertRaises(ValidationError):
|
||||
@@ -419,7 +419,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
name = faker.word(),
|
||||
comment = faker.text()
|
||||
)
|
||||
|
||||
|
||||
def test_basic_create_plannedsession(self):
|
||||
with self.assertRaises(ValidationError):
|
||||
ps = PlannedSession.objects.create(
|
||||
@@ -427,7 +427,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
name = faker.word(),
|
||||
comment = faker.text()
|
||||
)
|
||||
|
||||
|
||||
## Basic cannot join groups led by Pro or Self Coach
|
||||
def test_add_basic_pro_or_plan(self):
|
||||
with transaction.atomic():
|
||||
@@ -437,7 +437,7 @@ class PermissionsBasicsTests(TestCase):
|
||||
with transaction.atomic():
|
||||
with self.assertRaises(ValidationError):
|
||||
self.rbasic.team.add(self.teampro)
|
||||
|
||||
|
||||
|
||||
## Basic cannot manage a group
|
||||
def test_basic_groupmanager(self):
|
||||
@@ -461,7 +461,7 @@ class PermissionsViewTests(TestCase):
|
||||
self.ucoach = UserFactory(username='coachuser')
|
||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='coach',clubsize=10)
|
||||
|
||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||
@@ -472,11 +472,11 @@ class PermissionsViewTests(TestCase):
|
||||
self.ucoachpassword = faker.word()
|
||||
self.ucoach.set_password(self.ucoachpassword)
|
||||
self.ucoach.save()
|
||||
|
||||
|
||||
self.uplan = UserFactory(username='planuser')
|
||||
self.rplan = Rower.objects.create(user=self.uplan,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||
@@ -484,11 +484,11 @@ class PermissionsViewTests(TestCase):
|
||||
self.uplanpassword = faker.word()
|
||||
self.uplan.set_password(self.uplanpassword)
|
||||
self.uplan.save()
|
||||
|
||||
|
||||
self.upro = UserFactory(username='prouser')
|
||||
self.rpro = Rower.objects.create(user=self.upro,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
|
||||
@@ -500,7 +500,7 @@ class PermissionsViewTests(TestCase):
|
||||
self.uplan2 = UserFactory(username='planuser2')
|
||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||
@@ -508,11 +508,11 @@ class PermissionsViewTests(TestCase):
|
||||
self.uplan2password = faker.word()
|
||||
self.uplan2.set_password(self.uplan2password)
|
||||
self.uplan2.save()
|
||||
|
||||
|
||||
self.upro2 = UserFactory(username='prouser2')
|
||||
self.rpro2 = Rower.objects.create(user=self.upro2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
||||
@@ -524,7 +524,7 @@ class PermissionsViewTests(TestCase):
|
||||
self.ubasic = UserFactory(username='basicuser')
|
||||
self.rbasic = Rower.objects.create(user=self.ubasic,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
|
||||
@@ -532,9 +532,9 @@ class PermissionsViewTests(TestCase):
|
||||
self.ubasicpassword = faker.word()
|
||||
self.ubasic.set_password(self.ubasicpassword)
|
||||
self.ubasic.save()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## TeamPro, TeamCoach, TeamSelfCoach
|
||||
|
||||
self.teampro = Team.objects.create(
|
||||
@@ -557,7 +557,7 @@ class PermissionsViewTests(TestCase):
|
||||
def test_coach_groups_create(self):
|
||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('team_create_view')
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -574,7 +574,7 @@ class PermissionsViewTests(TestCase):
|
||||
form = TeamForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
expected_url = reverse('rower_teams_view')
|
||||
@@ -596,7 +596,7 @@ class PermissionsViewTests(TestCase):
|
||||
form = TeamForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
expected_url = reverse('rower_teams_view')
|
||||
@@ -605,7 +605,7 @@ class PermissionsViewTests(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
## Basic athletes can be member of Coach led group
|
||||
|
||||
## Coach can create planned sessions and team planned sessions
|
||||
@@ -682,7 +682,7 @@ class PermissionsViewTests(TestCase):
|
||||
'theuser':self.ubasic.id,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
@@ -700,7 +700,7 @@ class PermissionsViewTests(TestCase):
|
||||
'theuser':self.ubasic.id,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code,403)
|
||||
@@ -747,11 +747,11 @@ class PermissionsViewTests(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url = url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
aantal2 = len(Workout.objects.filter(user=self.rbasic))
|
||||
|
||||
self.assertEqual(aantal2,aantal+1)
|
||||
|
||||
|
||||
## Coach can upload on behalf of athlete - if team allows
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
@@ -791,11 +791,11 @@ class PermissionsViewTests(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url = url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
aantal2 = len(Workout.objects.filter(user=self.rbasic))
|
||||
|
||||
self.assertEqual(aantal2,aantal)
|
||||
|
||||
|
||||
## Coach can edit athlete's workout
|
||||
def test_coach_edit_athlete_workout(self):
|
||||
self.rbasic.team.add(self.teamcoach)
|
||||
@@ -809,13 +809,13 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,403)
|
||||
|
||||
|
||||
## Self coach can create one group
|
||||
## Self coach cannot create more than one group
|
||||
def test_plan_groups_create(self):
|
||||
login = self.c.login(username=self.uplan.username, password=self.uplanpassword)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('team_create_view')
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -832,7 +832,7 @@ class PermissionsViewTests(TestCase):
|
||||
form = TeamForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
expected_url = reverse('rower_teams_view')
|
||||
@@ -854,7 +854,7 @@ class PermissionsViewTests(TestCase):
|
||||
form = TeamForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
expected_url = reverse('paidplans')
|
||||
@@ -927,7 +927,7 @@ class PermissionsViewTests(TestCase):
|
||||
'theuser':self.ubasic.id,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code,403)
|
||||
@@ -952,7 +952,7 @@ class PermissionsViewTests(TestCase):
|
||||
def test_pro_groups_create(self):
|
||||
login = self.c.login(username=self.upro.username, password=self.upropassword)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
url = reverse('team_create_view')
|
||||
|
||||
response = self.c.get(url)
|
||||
@@ -969,7 +969,7 @@ class PermissionsViewTests(TestCase):
|
||||
form = TeamForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
expected_url = reverse('rower_teams_view')
|
||||
@@ -991,7 +991,7 @@ class PermissionsViewTests(TestCase):
|
||||
form = TeamForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
expected_url = reverse('paidplans')
|
||||
@@ -1049,7 +1049,7 @@ class PermissionsViewTests(TestCase):
|
||||
'theuser':self.ubasic.id,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code,403)
|
||||
@@ -1095,7 +1095,7 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
## Self Coach users can see team members' workout, but not edit
|
||||
def test_plan_edit_athlete_workout(self):
|
||||
@@ -1117,7 +1117,7 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
## Basic users can see team members' workout, but not edit
|
||||
def test_basic_edit_athlete_workout(self):
|
||||
@@ -1148,7 +1148,7 @@ class PermissionsViewTests(TestCase):
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
# workflow
|
||||
url = reverse('workout_workflow_view',
|
||||
kwargs={'id':encoder.encode_hex(self.uplan2_workouts[0].id)}
|
||||
@@ -1165,7 +1165,7 @@ class PermissionsViewTests(TestCase):
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
## Pro users (and higher) can join group led by other Pro (or higher) user
|
||||
def test_team_member_request_pro_pro(self):
|
||||
login = self.c.login(username=self.upro.username,password=self.upropassword)
|
||||
@@ -1215,7 +1215,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
self.ucoach = UserFactory(username='coachuser')
|
||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='coach',clubsize=10)
|
||||
|
||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||
@@ -1226,11 +1226,11 @@ class PermissionsCoachingTests(TestCase):
|
||||
self.ucoachpassword = faker.word()
|
||||
self.ucoach.set_password(self.ucoachpassword)
|
||||
self.ucoach.save()
|
||||
|
||||
|
||||
self.uplan = UserFactory(username='planuser')
|
||||
self.rplan = Rower.objects.create(user=self.uplan,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||
@@ -1238,11 +1238,11 @@ class PermissionsCoachingTests(TestCase):
|
||||
self.password = faker.word()
|
||||
self.uplan.set_password(self.password)
|
||||
self.uplan.save()
|
||||
|
||||
|
||||
self.upro = UserFactory(username='prouser')
|
||||
self.rpro = Rower.objects.create(user=self.upro,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
|
||||
@@ -1254,7 +1254,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
self.uplan2 = UserFactory(username='planuser2')
|
||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='plan')
|
||||
|
||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||
@@ -1262,11 +1262,11 @@ class PermissionsCoachingTests(TestCase):
|
||||
self.password = faker.word()
|
||||
self.uplan2.set_password(self.password)
|
||||
self.uplan2.save()
|
||||
|
||||
|
||||
self.upro2 = UserFactory(username='prouser2')
|
||||
self.rpro2 = Rower.objects.create(user=self.upro2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='pro')
|
||||
|
||||
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
||||
@@ -1278,7 +1278,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
self.ubasic = UserFactory(username='basicuser')
|
||||
self.rbasic = Rower.objects.create(user=self.ubasic,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
|
||||
@@ -1286,9 +1286,9 @@ class PermissionsCoachingTests(TestCase):
|
||||
self.ubasicpassword = faker.word()
|
||||
self.ubasic.set_password(self.ubasicpassword)
|
||||
self.ubasic.save()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## TeamPro, TeamCoach, TeamSelfCoach
|
||||
|
||||
self.teampro = Team.objects.create(
|
||||
@@ -1360,7 +1360,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
coachingrequests = CoachOffer.objects.filter(user=self.ubasic)
|
||||
self.assertEqual(len(coachingrequests),0)
|
||||
|
||||
|
||||
|
||||
def test_athlete_request_coach_reject(self):
|
||||
login = self.c.login(username=self.ubasic.username,password=self.ubasicpassword)
|
||||
self.assertTrue(login)
|
||||
@@ -1421,7 +1421,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
coachingrequests = CoachOffer.objects.filter(user=self.ubasic)
|
||||
self.assertEqual(len(coachingrequests),0)
|
||||
|
||||
|
||||
|
||||
def test_athlete_request_coach_accept_coach_drop(self):
|
||||
login = self.c.login(username=self.ubasic.username,password=self.ubasicpassword)
|
||||
self.assertTrue(login)
|
||||
@@ -1512,7 +1512,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
|
||||
coaches = teams.rower_get_coaches(self.rbasic)
|
||||
self.assertEqual(len(coaches),0)
|
||||
|
||||
|
||||
def test_coach_offer_athlete_accept_coach_drop(self):
|
||||
login = self.c.login(username=self.ucoach.username,password=self.ucoachpassword)
|
||||
self.assertTrue(login)
|
||||
@@ -1558,7 +1558,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
|
||||
coaches = teams.rower_get_coaches(self.rbasic)
|
||||
self.assertEqual(len(coaches),0)
|
||||
|
||||
|
||||
|
||||
def test_athlete_request_coach_accept_athlete_drop(self):
|
||||
login = self.c.login(username=self.ubasic.username,password=self.ubasicpassword)
|
||||
@@ -1611,7 +1611,7 @@ class PermissionsCoachingTests(TestCase):
|
||||
coaches = teams.rower_get_coaches(self.rbasic)
|
||||
self.assertEqual(len(coaches),0)
|
||||
|
||||
|
||||
|
||||
# coach related
|
||||
|
||||
## coach disappears from list when downgrading
|
||||
|
||||
@@ -17,7 +17,7 @@ class TrainingPlanTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -175,7 +175,7 @@ class SessionLinkTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -348,7 +348,7 @@ class SessionCompleteTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -603,7 +603,7 @@ class ChallengeCompleteTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -827,7 +827,7 @@ class MandatoryTestCompleteTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -1040,7 +1040,7 @@ class PlannedSessionsView(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
self.r.save()
|
||||
@@ -1049,7 +1049,7 @@ class PlannedSessionsView(TestCase):
|
||||
self.u2 = UserFactory(username='testbasicuser')
|
||||
self.r2 = Rower.objects.create(user=self.u2,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
|
||||
@@ -11,10 +11,10 @@ from rowers.views import hasplannedsessions,iscoachmember,ispromember
|
||||
class TrialsTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
|
||||
@@ -46,7 +46,7 @@ class TrialsTest(TestCase):
|
||||
|
||||
self.r.plantrialexpires = (nu+datetime.timedelta(days=10)).date()
|
||||
self.r.save()
|
||||
|
||||
|
||||
self.assertEqual(hasplannedsessions(self.u),True)
|
||||
self.assertEqual(iscoachmember(self.u),False)
|
||||
self.assertEqual(ispromember(self.u),True)
|
||||
@@ -60,10 +60,7 @@ class TrialsTest(TestCase):
|
||||
|
||||
self.r.plantrialexpires = (nu+datetime.timedelta(days=10)).date()
|
||||
self.r.save()
|
||||
|
||||
|
||||
self.assertEqual(hasplannedsessions(self.u),True)
|
||||
self.assertEqual(iscoachmember(self.u),False)
|
||||
self.assertEqual(ispromember(self.u),True)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,14 +7,14 @@ from __future__ import unicode_literals
|
||||
from .statements import *
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
class DataTest(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
@@ -36,7 +36,7 @@ class SimpleViewTest(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ nu = datetime.datetime.now()
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class PlotTests(TestCase):
|
||||
def setUp(self):
|
||||
@@ -18,7 +18,7 @@ class PlotTests(TestCase):
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='basic')
|
||||
self.nu = datetime.datetime.now()
|
||||
@@ -29,14 +29,14 @@ class PlotTests(TestCase):
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
|
||||
# timestr = strftime("%Y%m%d-%H%M%S")
|
||||
# imagename = f1+timestr+'.png'
|
||||
# fullpathimagename = 'static/plots/'+imagename
|
||||
@@ -45,7 +45,7 @@ class PlotTests(TestCase):
|
||||
r.pw_at,
|
||||
r.pw_tr,r.pw_an])/r.ftp
|
||||
|
||||
|
||||
|
||||
self.hrdata = {
|
||||
'hrmax':r.max,
|
||||
'hrut2':r.ut2,
|
||||
@@ -64,7 +64,7 @@ class PlotTests(TestCase):
|
||||
@patch('rowers.tasks.FigureCanvas')
|
||||
def test_ote_plots(self, mocked_rowingdata, mocked_canvas):
|
||||
w = self.wote
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
imagename = f1+timestr+'.png'
|
||||
fullpathimagename = 'static/plots/'+imagename
|
||||
@@ -72,7 +72,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -85,7 +85,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -98,7 +98,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 2
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -111,7 +111,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 3
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -124,7 +124,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 4
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -137,7 +137,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 5
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -150,7 +150,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 6
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -163,7 +163,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 7
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -176,7 +176,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 8
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -189,7 +189,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 13
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -203,7 +203,7 @@ class PlotTests(TestCase):
|
||||
@patch('rowers.tasks.FigureCanvas')
|
||||
def test_chartrequests(self, mocked_rowingdata, mocked_canvas):
|
||||
opid = encoder.encode_hex(self.wotw.id)
|
||||
|
||||
|
||||
url = reverse('workout_add_chart_view',
|
||||
kwargs={'id':opid,
|
||||
'plotnr':13
|
||||
@@ -212,7 +212,7 @@ class PlotTests(TestCase):
|
||||
workout_edit_url = reverse('workout_edit_view',
|
||||
kwargs={'id':opid})
|
||||
|
||||
|
||||
|
||||
|
||||
login = self.c.login(username='john', password='koeinsloot')
|
||||
self.assertTrue(login)
|
||||
@@ -246,12 +246,12 @@ class PlotTests(TestCase):
|
||||
self.assertEqual(len(i),0)
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.tasks.rdata')
|
||||
@patch('rowers.tasks.FigureCanvas')
|
||||
def test_otw_plots(self, mocked_rowingdata, mocked_canvas):
|
||||
w = self.wotw
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
imagename = f1+timestr+'.png'
|
||||
fullpathimagename = 'static/plots/'+imagename
|
||||
@@ -259,7 +259,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -272,7 +272,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -285,7 +285,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 2
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -298,7 +298,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 3
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -311,7 +311,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 4
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -324,7 +324,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 5
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -337,7 +337,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 6
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -350,7 +350,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 7
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -363,7 +363,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 8
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -376,7 +376,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 9
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
@@ -389,7 +389,7 @@ class PlotTests(TestCase):
|
||||
plotnr = 13
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
|
||||
+23
-25
@@ -38,10 +38,10 @@ class TeamTest(TestCase):
|
||||
for i in range(6):
|
||||
u = UserFactory(username=usernames[i])
|
||||
self.users.append(u)
|
||||
|
||||
|
||||
r = Rower.objects.create(
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
user=u,
|
||||
@@ -53,7 +53,7 @@ class TeamTest(TestCase):
|
||||
u.set_password(password)
|
||||
u.save()
|
||||
self.user_passwords.append(password)
|
||||
|
||||
|
||||
|
||||
workouts = WorkoutFactory.create_batch(5, user=r)
|
||||
for w in workouts:
|
||||
@@ -64,7 +64,7 @@ class TeamTest(TestCase):
|
||||
|
||||
self.u = self.users[0]
|
||||
self.password = self.user_passwords[0]
|
||||
|
||||
|
||||
self.t = TeamFactory(manager=self.u)
|
||||
|
||||
# need to set up some requests for testing (they are not good below)
|
||||
@@ -105,7 +105,7 @@ class TeamTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/me/teams/'.format(t=self.t.id),
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
def test_teamview(self):
|
||||
login = self.c.login(username=self.u.username, password = self.password)
|
||||
self.assertTrue(login)
|
||||
@@ -113,9 +113,9 @@ class TeamTest(TestCase):
|
||||
url = '/rowers/team/{t}/'.format(t=self.t.id)
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
def test_teamview_member(self):
|
||||
|
||||
|
||||
id,comment = add_member(self.t.id,self.users[1].rower)
|
||||
self.assertEqual(id,self.t.id)
|
||||
|
||||
@@ -132,7 +132,7 @@ class TeamTest(TestCase):
|
||||
|
||||
login = self.c.login(username=self.users[2].username, password = self.user_passwords[2])
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -147,11 +147,11 @@ class TeamTest(TestCase):
|
||||
print(u)
|
||||
print(response.status_code)
|
||||
self.assertIn(response.status_code,[200,302])
|
||||
|
||||
|
||||
login = self.c.login(username=self.users[1].username,
|
||||
password = self.user_passwords[1])
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -166,14 +166,14 @@ class TeamTest(TestCase):
|
||||
print(u)
|
||||
print(response.status_code)
|
||||
self.assertIn(response.status_code,[200,302])
|
||||
|
||||
|
||||
def test_teamsview_manager(self):
|
||||
|
||||
url = '/rowers/me/teams/'
|
||||
|
||||
login = self.c.login(username=self.u,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -190,14 +190,14 @@ class TeamTest(TestCase):
|
||||
self.assertIn(response.status_code,[200,302])
|
||||
|
||||
def test_teamview_member_request(self):
|
||||
|
||||
|
||||
login = self.c.login(username=self.users[3].username, password = self.user_passwords[3])
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/team/{t}/requestmembership/{u}/'.format(
|
||||
t=self.t.id,
|
||||
u=self.users[3].id)
|
||||
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -226,8 +226,8 @@ class TeamTest(TestCase):
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/me/teams/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
|
||||
|
||||
def test_team_invite_view(self):
|
||||
login = self.c.login(username=self.u.username, password = self.password)
|
||||
self.assertTrue(login)
|
||||
@@ -238,11 +238,11 @@ class TeamTest(TestCase):
|
||||
'email': self.users[1].email,
|
||||
'user': u''
|
||||
}
|
||||
|
||||
|
||||
response = self.c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class TeamTestLowLevel(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
@@ -261,10 +261,10 @@ class TeamTestLowLevel(TestCase):
|
||||
for i in range(6):
|
||||
u = UserFactory(username=usernames[i])
|
||||
self.users.append(u)
|
||||
|
||||
|
||||
r = Rower.objects.create(
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
user=u,
|
||||
@@ -276,7 +276,7 @@ class TeamTestLowLevel(TestCase):
|
||||
u.set_password(password)
|
||||
u.save()
|
||||
self.user_passwords.append(password)
|
||||
|
||||
|
||||
|
||||
workouts = WorkoutFactory.create_batch(5, user=r)
|
||||
for w in workouts:
|
||||
@@ -287,7 +287,7 @@ class TeamTestLowLevel(TestCase):
|
||||
|
||||
self.u = self.users[0]
|
||||
self.password = self.user_passwords[0]
|
||||
|
||||
|
||||
self.t = TeamFactory(manager=self.u)
|
||||
|
||||
|
||||
@@ -353,5 +353,3 @@ class TeamTestLowLevel(TestCase):
|
||||
# cannot create invite for team you don't manage
|
||||
id, comment = create_invite(self.t, self.users[3],self.users[4])
|
||||
self.assertEqual(id,0)
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ class ForceUnits(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
@@ -164,7 +164,7 @@ class TestForceUnit(TestCase):
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ nu = datetime.datetime.now()
|
||||
|
||||
from rowers.views import add_defaultfavorites
|
||||
|
||||
#@pytest.mark.django_db
|
||||
#@pytest.mark.django_db
|
||||
@override_settings(TESTING=True)
|
||||
class ViewTest(TestCase):
|
||||
def setUp(self):
|
||||
@@ -18,13 +18,13 @@ class ViewTest(TestCase):
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
)
|
||||
|
||||
add_defaultfavorites(self.r)
|
||||
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
def test_upload_view_notloggedin(self):
|
||||
@@ -35,13 +35,13 @@ class ViewTest(TestCase):
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_upload_view_sled(self, mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username='john',password='koeinsloot')
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -70,7 +70,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/edit/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/histo/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -108,7 +108,7 @@ class ViewTest(TestCase):
|
||||
self.assertTrue(form.is_valid())
|
||||
response = self.c.post('/rowers/workout/'+encoded1+'/edit/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
@@ -128,11 +128,11 @@ class ViewTest(TestCase):
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_sled_negativetime(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/tim.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -157,7 +157,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
|
||||
|
||||
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@@ -165,9 +165,9 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
f.close()
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
@@ -175,12 +175,12 @@ class ViewTest(TestCase):
|
||||
except (FileNotFoundError,OSError):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_sled_noname(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -216,7 +216,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_logcard(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/logcard.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -245,12 +245,12 @@ class ViewTest(TestCase):
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.TCXParser')
|
||||
def test_upload_view_TCX_CN(self, mocked_sqlalchemy, mocked_tcx_parser):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/crewnerddata.tcx'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -300,7 +300,7 @@ class ViewTest(TestCase):
|
||||
def test_upload_view_TCX_SpeedCoach2a(self, mocked_sqlalchemy,
|
||||
mocked_tcx_parser):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/Speedcoach2example.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -337,7 +337,7 @@ class ViewTest(TestCase):
|
||||
def test_upload_view_TCX_SpeedCoach2b(self, mocked_sqlalchemy,
|
||||
mocked_tcx_parser):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/Speedcoach2example.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -371,12 +371,12 @@ class ViewTest(TestCase):
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.TCXParser')
|
||||
def test_upload_view_TCX_SpeedCoach2c(self, mocked_sqlalchemy,
|
||||
mocked_tcx_parser):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/speedcoach3test3.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -412,7 +412,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_SpeedCoach2v127(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/SpeedCoach2Linkv1.27.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -449,7 +449,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_SpeedCoach2v127intervals(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/SpeedCoach2Link_interval.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -488,7 +488,7 @@ class ViewTest(TestCase):
|
||||
def test_upload_view_TCX_NoHR(self, mocked_sqlalchemy,
|
||||
mocked_tcx_parser):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/NoHR.tcx'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -526,7 +526,7 @@ class ViewTest(TestCase):
|
||||
def test_upload_view_TCX_CN(self, mocked_sqlalchemy,
|
||||
mocked_tcx_parser):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/rowinginmotionexample.tcx'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -559,7 +559,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_RP(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/RP_testdata.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -580,7 +580,7 @@ class ViewTest(TestCase):
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
@@ -592,7 +592,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_Mystery(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/mystery.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -613,7 +613,7 @@ class ViewTest(TestCase):
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
@@ -625,7 +625,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_RP_interval(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/RP_interval.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -646,7 +646,7 @@ class ViewTest(TestCase):
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
@@ -655,11 +655,11 @@ class ViewTest(TestCase):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_sled_desktop(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/painsled_desktop_example.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -680,7 +680,7 @@ class ViewTest(TestCase):
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
@@ -691,7 +691,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_sled_ergdata(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/ergdata_example.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -712,7 +712,7 @@ class ViewTest(TestCase):
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
@@ -723,7 +723,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_sled_boatcoach(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/boatcoach.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -744,7 +744,7 @@ class ViewTest(TestCase):
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
@@ -755,7 +755,7 @@ class ViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_sled_ergstick(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
filename = 'rowers/tests/testdata/ergstick.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
@@ -776,11 +776,10 @@ class ViewTest(TestCase):
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
try:
|
||||
os.remove(f_to_be_deleted+'.gz')
|
||||
except (FileNotFoundError,OSError):
|
||||
pass
|
||||
|
||||
|
||||
+23
-25
@@ -18,13 +18,13 @@ class UserMiddleWareTest(TestCase):
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=u)
|
||||
|
||||
|
||||
self.c = Client()
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
@@ -33,7 +33,7 @@ class UserMiddleWareTest(TestCase):
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
@@ -53,13 +53,13 @@ class UserMiddleWareTest(TestCase):
|
||||
duration=duration,distance=totaldist,
|
||||
csvfilename=filename
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
def test_middleware(self):
|
||||
response = self.c.get('/rowers/list-workouts',follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
|
||||
class UserTestsNoRower(TestCase):
|
||||
def setUp(self):
|
||||
u = User.objects.create_user('john',
|
||||
@@ -69,19 +69,19 @@ class UserTestsNoRower(TestCase):
|
||||
self.c = Client()
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
|
||||
def test_user(self):
|
||||
response = self.c.get('/rowers/list-workouts',follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
class UserPreferencesTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
gdproptin=True,surveydone=Trueoptin=True,
|
||||
gdproptin=True,surveydone=Trueoptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
@@ -123,14 +123,14 @@ class UserPreferencesTest(TestCase):
|
||||
userform = UserForm(form_data,instance=self.u)
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(userform.is_valid())
|
||||
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
|
||||
def test_exportsettings(self):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
@@ -149,15 +149,15 @@ class UserPreferencesTest(TestCase):
|
||||
'sporttracks_auto_export':False,
|
||||
'strava_auto_export':False,
|
||||
'strava_auto_import':False,
|
||||
'trainingpeaks_auto_export':False,
|
||||
'trainingpeaks_auto_export':False,
|
||||
}
|
||||
|
||||
form = RowerExportForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
def test_zones_workflowsettings(self):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
@@ -174,7 +174,7 @@ class UserPreferencesTest(TestCase):
|
||||
u'middlepanel-7-panel':u'None',
|
||||
u'middlepanel-8-panel':u'None',
|
||||
u'middlepanel-INITIAL_FORMS':'8',
|
||||
u'middlepanel-MAX_NUM_FORMS':u'1000',
|
||||
u'middlepanel-MAX_NUM_FORMS':u'1000',
|
||||
u'middlepanel-MIN_NUM_FORMS':u'0',
|
||||
u'middlepanel-TOTAL_FORMS':u'8',
|
||||
}
|
||||
@@ -182,7 +182,7 @@ class UserPreferencesTest(TestCase):
|
||||
MiddlePanelFormSet = formset_factory(WorkFlowMiddlePanelElement,extra=1)
|
||||
middlepanel_formset = MiddlePanelFormSet(post_data,prefix='middlepanel')
|
||||
self.assertTrue(middlepanel_formset.is_valid())
|
||||
|
||||
|
||||
url = '/rowers/me/workflowconfig2/'
|
||||
response = self.c.get(url)
|
||||
|
||||
@@ -190,7 +190,7 @@ class UserPreferencesTest(TestCase):
|
||||
|
||||
response = self.c.post(url,post_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
def test_zones_preferences(self):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
@@ -209,7 +209,7 @@ class UserPreferencesTest(TestCase):
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
url = '/rowers/me/preferences/'
|
||||
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -228,7 +228,7 @@ class UserPreferencesTest(TestCase):
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
form_data = {
|
||||
'pw_ut2':150,
|
||||
'pw_ut1':160,
|
||||
@@ -245,5 +245,3 @@ class UserPreferencesTest(TestCase):
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
|
||||
@@ -283,6 +283,10 @@ urlpatterns = [
|
||||
re_path(r'^graph/(?P<pk>\d+)/delete/$',views.GraphDelete.as_view(),name='graph_delete'),
|
||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/get-thumbnails/$',views.get_thumbnails,
|
||||
name='get_thumbnails'),
|
||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/otwuseimpeller/$',views.otw_use_impeller,
|
||||
name='otw_use_impeller'),
|
||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/otwusegps/$',views.otw_use_gps,
|
||||
name='otw_use_gps'),
|
||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/toggle-ranking/$',views.workout_toggle_ranking,
|
||||
name='workout_toggle_ranking'),
|
||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/get-testscript/$',views.get_testscript,
|
||||
@@ -445,6 +449,7 @@ urlpatterns = [
|
||||
re_path(r'^user-multiflex-data/$',views.multiflex_data,name='multiflex_data'),
|
||||
re_path(r'^me/deactivate/$',views.deactivate_user,name='deactivate_user'),
|
||||
re_path(r'^me/delete/$',views.remove_user,name='remove_user'),
|
||||
re_path(r'^survey/$',views.survey,name='survey'),
|
||||
re_path(r'^me/gdpr-optin-confirm/?/$',views.user_gdpr_confirm,name='user_gdpr_confirm'),
|
||||
re_path(r'^me/gdpr-optin-confirm/$',views.user_gdpr_confirm,name='user_gdpr_confirm'),
|
||||
re_path(r'^me/gdpr-optin/?/$',views.user_gdpr_optin,name='user_gdpr_optin'),
|
||||
|
||||
@@ -4322,9 +4322,10 @@ def agegrouprecordview(request,sex='male',weightcategory='hwt',
|
||||
})
|
||||
|
||||
# alert overview view
|
||||
@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)
|
||||
@login_required
|
||||
def alerts_view(request,userid=0):
|
||||
r = getrequestrower(request,userid=userid)
|
||||
|
||||
@@ -4436,9 +4437,7 @@ def alert_create_view(request,userid=0):
|
||||
})
|
||||
|
||||
# alert report view
|
||||
@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)
|
||||
@login_required()
|
||||
def alert_report_view(request,id=0,userid=0,nperiod=0):
|
||||
r = getrequestrower(request,userid=userid)
|
||||
if userid == 0:
|
||||
@@ -4453,7 +4452,7 @@ def alert_report_view(request,id=0,userid=0,nperiod=0):
|
||||
raise Http404("This alert doesn't exist")
|
||||
|
||||
|
||||
if alert.manager != request.user:
|
||||
if not checkalertowner(alert,request.user):
|
||||
raise PermissionDenied('You are not allowed to edit this Alert')
|
||||
|
||||
stats = alert_get_stats(alert,nperiod=nperiod)
|
||||
@@ -4505,7 +4504,7 @@ def alert_edit_view(request,id=0,userid=0):
|
||||
raise Http404("This alert doesn't exist")
|
||||
|
||||
|
||||
if alert.manager != request.user:
|
||||
if not alert.manager != request.user:
|
||||
raise PermissionDenied('You are not allowed to edit this Alert')
|
||||
|
||||
FilterFormSet = formset_factory(ConditionEditForm, formset=BaseConditionFormSet,extra=0)
|
||||
@@ -4603,6 +4602,7 @@ def alert_edit_view(request,id=0,userid=0):
|
||||
})
|
||||
|
||||
# alert delete view
|
||||
|
||||
class AlertDelete(DeleteView):
|
||||
login_requird = True
|
||||
model = Alert
|
||||
@@ -4650,6 +4650,9 @@ class AlertDelete(DeleteView):
|
||||
def get_object(self, *args, **kwargs):
|
||||
obj = super(AlertDelete, self).get_object(*args, **kwargs)
|
||||
|
||||
if obj.manager != self.request.user:
|
||||
raise PermissionDenied("You are not allowed to delete this Alert")
|
||||
|
||||
# some checks
|
||||
|
||||
return obj
|
||||
|
||||
@@ -60,7 +60,7 @@ from rowers.forms import (
|
||||
MetricsForm,DisqualificationForm,disqualificationreasons,
|
||||
disqualifiers,SearchForm,BillingForm,PlanSelectForm,
|
||||
VideoAnalysisCreateForm,WorkoutSingleSelectForm,
|
||||
VideoAnalysisMetricsForm,
|
||||
VideoAnalysisMetricsForm,SurveyForm,
|
||||
)
|
||||
|
||||
from django.urls import reverse, reverse_lazy
|
||||
|
||||
@@ -5,6 +5,31 @@ from __future__ import unicode_literals
|
||||
|
||||
from rowers.views.statements import *
|
||||
|
||||
@login_required()
|
||||
def survey(request):
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
surveyform = SurveyForm()
|
||||
|
||||
if request.method == 'POST':
|
||||
form = SurveyForm(request.POST)
|
||||
r.surveydone = True
|
||||
r.surveydonedate = timezone.now()
|
||||
r.save()
|
||||
|
||||
nexturl = request.GET.get('next')
|
||||
return HttpResponseRedirect(nexturl)
|
||||
|
||||
context = {
|
||||
'teams':get_my_teams(request.user),
|
||||
'rower':r,
|
||||
'form':surveyform,
|
||||
}
|
||||
|
||||
|
||||
return render(request,'survey.html',context)
|
||||
|
||||
@login_required()
|
||||
def start_trial_view(request):
|
||||
r = getrower(request.user)
|
||||
|
||||
@@ -456,18 +456,54 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
|
||||
# Test asynchronous tasking and messaging
|
||||
#@login_required()
|
||||
#def workout_test_task_view(request,id=0):
|
||||
# row = Workout.objects.get(id=id)
|
||||
# res = myqueue(queuehigh,addcomment2,request.user.id,row.id)#
|
||||
#
|
||||
#
|
||||
# url = reverse('workout_edit_view',
|
||||
# kwargs = {
|
||||
# 'id':int(id),
|
||||
# })
|
||||
# return HttpResponseRedirect(url)
|
||||
# Switch from GPS to Impeller (only for SpeedCoach 2, if impeller data)
|
||||
@login_required
|
||||
def otw_use_impeller(request,id=0):
|
||||
w = get_workout(id)
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
raise PermissionDenied("Access denied")
|
||||
|
||||
row = rdata(w.csvfilename)
|
||||
success = row.use_impellerdata()
|
||||
if success:
|
||||
row.write_csv(w.csvfilename)
|
||||
dataprep.update_strokedata(w.id,row.df)
|
||||
w.impeller = True
|
||||
w.save()
|
||||
messages.info(request,'The distance and speed data are now based on Impeller data')
|
||||
else:
|
||||
messages.error(request,'No impeller data found')
|
||||
|
||||
url = reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(w.id)})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
# Switch from Impeller to GPS (only for SpeedCoach 2, if impeller data)
|
||||
@login_required
|
||||
def otw_use_gps(request,id=0):
|
||||
w = get_workout(id)
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
raise PermissionDenied("Access denied")
|
||||
|
||||
row = rdata(w.csvfilename)
|
||||
success = row.use_gpsdata()
|
||||
if success:
|
||||
row.write_csv(w.csvfilename)
|
||||
dataprep.update_strokedata(w.id,row.df)
|
||||
w.impeller = False
|
||||
w.save()
|
||||
messages.info(request,'The distance and speed data are now based on GPS data')
|
||||
else:
|
||||
messages.error(request,'No GPS data found')
|
||||
|
||||
url = reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(w.id)})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
|
||||
# Show Stroke power histogram for a workout
|
||||
@login_required()
|
||||
|
||||
@@ -97,6 +97,7 @@ MIDDLEWARE = [
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'tz_detect.middleware.TimezoneMiddleware',
|
||||
'rowers.middleware.SurveyMiddleWare',
|
||||
'rowers.middleware.GDPRMiddleWare',
|
||||
'rowers.middleware.PowerTimeFitnessMetricMiddleWare',
|
||||
'rowers.middleware.RowerPlanMiddleWare',
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
<link rel="stylesheet" href="/static/css/resetnew.css" />
|
||||
<link rel="stylesheet" href="/static/fontawesome/css/fontawesome.min.css">
|
||||
<link rel="stylesheet" href="/static/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.12.0/css/all.css" integrity="sha384-ekOryaXPbeCpWQNxMwSWVvQ0+1VrStoPJq54shlYhR8HzQgig1v5fas6YgOqLoKz" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="/static/css/styles2.min.css">
|
||||
<link rel="stylesheet" href="/static/css/text2.css" />
|
||||
<link rel="stylesheet" href="/static/css/rowsandall2.min.css" />
|
||||
@@ -326,6 +327,11 @@
|
||||
</p>
|
||||
{% endif %}
|
||||
{% block ad %}
|
||||
<div class="site-announcement-box">
|
||||
<div class="site-announcement-white">
|
||||
<a href="https://wp.me/P8g86e-Bs">Please take 2 minutes to fill out the survey!</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="id_blogs">
|
||||
</div>
|
||||
<a href="https://pryglrowing.com">
|
||||
|
||||
Reference in New Issue
Block a user