Private
Public Access
1
0

improved most tests

This commit is contained in:
Sander Roosendaal
2019-01-04 18:14:42 +01:00
parent 879e16e057
commit c85bc53632
11 changed files with 1872 additions and 404 deletions

View File

@@ -673,6 +673,9 @@ def fitnessmetric_chart(fitnessmetrics,user,workoutmode='rower'):
dates = [m.date for m in fitnessmetrics]
mode = [m.workoutmode for m in fitnessmetrics]
if len(power4min) == 0:
return ['','']
df = pd.DataFrame(
{'power4min':power4min,
'power2k':power2k,

View File

@@ -493,21 +493,26 @@ def micromacroid(id):
@register.filter
def nextworkout(workout,user):
if user.rower == workout.user:
ws = Workout.objects.filter(
startdatetime__gte=workout.startdatetime,
user=workout.user
).order_by(
"startdatetime"
).exclude(id=workout.id)
try:
ws = Workout.objects.filter(
startdatetime__gte=workout.startdatetime,
user=workout.user
).order_by(
"startdatetime"
).exclude(id=workout.id)
except ValueError:
return 0
else:
ws = Workout.objects.filter(
startdatetime__gte=workout.startdatetime,
user=workout.user,privacy='visible'
).order_by(
"startdatetime"
).exclude(id=workout.id)
try:
ws = Workout.objects.filter(
startdatetime__gte=workout.startdatetime,
user=workout.user,privacy='visible'
).order_by(
"startdatetime"
).exclude(id=workout.id)
except ValueError:
return 0
if ws:
return ws[0].id
else:
@@ -518,19 +523,25 @@ def nextworkout(workout,user):
@register.filter
def previousworkout(workout,user):
if user.rower == workout.user:
ws = Workout.objects.filter(
startdatetime__lte=workout.startdatetime,
user=workout.user
).order_by(
try:
ws = Workout.objects.filter(
startdatetime__lte=workout.startdatetime,
user=workout.user
).order_by(
"-startdatetime"
).exclude(id=workout.id)
).exclude(id=workout.id)
except ValueError:
return 0
else:
ws = Workout.objects.filter(
startdatetime__lte=workout.startdatetime,
user=workout.user,privacy='visible'
).order_by(
"-startdatetime"
).exclude(id=workout.id)
try:
ws = Workout.objects.filter(
startdatetime__lte=workout.startdatetime,
user=workout.user,privacy='visible'
).order_by(
"-startdatetime"
).exclude(id=workout.id)
except ValueError:
return 0
if ws:

View File

@@ -113,7 +113,17 @@ def mocked_read_df_sql(id):
return df
def mocked_getsmallrowdata_db(*args, **kwargs):
df = pd.read_csv('rowers/tests/testdata/colsfromdb.csv')
return df
def mocked_read_df_cols_sql(ids, columns, convertnewtons=True):
df = pd.read_csv('rowers/tests/testdata/fake_strokedata.csv')
extracols = []
return df, extracols
class mocked_rowingdata(rowingdata):
def __init__(self, *args, **kwargs):

View File

@@ -6,11 +6,12 @@ pytestmark = pytest.mark.django_db
from bs4 import BeautifulSoup
import re
from nose_parameterized import parameterized
from django.test import TestCase, Client,override_settings
from django.test import TestCase, Client,override_settings, RequestFactory
from django.core.management import call_command
from django.utils.six import StringIO
from django.test.client import RequestFactory
from rowers.views import checkworkoutuser,c2_open
from rowers.views import checkworkoutuser,c2_open, multi_compare_view
from rowers.forms import (
DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail,
@@ -44,6 +45,7 @@ from rowers.views import (
)
from rowers.dataprep import delete_strokedata
from django.contrib.sessions.middleware import SessionMiddleware
from redis import StrictRedis
redis_connection = StrictRedis()
@@ -53,7 +55,7 @@ from django_mailbox.models import Mailbox,MessageAttachment,Message
from rowers.tests.mocks import *
from rowers.models import *
from rowers.tests.mocks import *
import factory
from faker import Factory
@@ -107,22 +109,41 @@ class WorkoutFactory(factory.DjangoModelFactory):
class ModelObjectsTest(TestCase):
def setUp(self):
self.u = UserFactory()
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True)
gdproptin=True,
gdproptindate=timezone.now(),
rowerplan='coach')
self.c = Client()
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
self.factory = RequestFactory()
self.password = faker.word()
self.u.set_password(self.password)
self.u.save()
def test_workouts_compare(self):
self.c.login(username=self.u.username,password=self.u.password)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_workouts_compare(self, mocked_sqlalchemy,
mocked_getsmallrowdata_db):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = '/rowers/team-compare-select/workout/1/team/0/user/1/'
response = self.c.get(url,follow=True)
response = self.c.get(url)
self.assertEqual(response.status_code,200)
def test_workouts_compare_submit(self):
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_workouts_compare_submit(self, mocked_sqlalchemy,
mocked_getsmallrowdata_db):
login = self.c.login(username=self.u.username,password=self.password)
self.assertTrue(login)
form_data = {
'chartform':'Compare',
'plottype':'scatter',
@@ -137,6 +158,20 @@ class ModelObjectsTest(TestCase):
self.assertTrue(form.is_valid)
self.assertTrue(chartform.is_valid)
response = self.c.post('/rowers/multi-compare',form_data,follow=True)
# request = self.factory.post('/rowers/multi-compare/')
# request.user = self.u
# request.POST = form_data
# SessionMiddleware().process_request(request)
# request.session['ids'] = []
# response = multi_compare_view(request)
# self.assertEqual(response.status_code, 200)
response = self.c.post('/rowers/multi-compare/',form_data)
self.assertEqual(response.status_code,200)

View File

@@ -126,10 +126,10 @@ class C2Objects(DjangoTestCase):
response = self.c.get('/rowers/workout/1/c2uploadw/')
self.assertRedirects(response,
expected_url = '/rowers/workout/1/edit',
expected_url = '/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.url, '/rowers/workout/1/edit')
self.assertEqual(response.url, '/rowers/workout/1/edit/')
self.assertEqual(response.status_code, 302)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
@@ -146,7 +146,7 @@ class C2Objects(DjangoTestCase):
response = self.c.get('/rowers/workout/c2import/12/',follow=True)
self.assertRedirects(response,
expected_url='/rowers/workout/2/edit',
expected_url='/rowers/workout/2/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -294,7 +294,7 @@ class StravaObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/stravaimport/12',follow=True)
self.assertRedirects(response,
expected_url='/rowers/workout/1/edit',
expected_url='/rowers/workout/1/edit/',
status_code=301,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -378,10 +378,10 @@ class STObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/1/sporttracksuploadw/')
self.assertRedirects(response,
expected_url = '/rowers/workout/1/edit',
expected_url = '/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.url, '/rowers/workout/1/edit')
self.assertEqual(response.url, '/rowers/workout/1/edit/')
self.assertEqual(response.status_code, 302)
@patch('rowers.sporttracksstuff.requests.get', side_effect=mocked_requests)
@@ -396,7 +396,7 @@ class STObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/sporttracksimport/12/',follow=True)
self.assertRedirects(response,
expected_url='/rowers/workout/2/edit',
expected_url='/rowers/workout/2/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -488,10 +488,10 @@ class RunKeeperObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/1/runkeeperuploadw/')
self.assertRedirects(response,
expected_url = '/rowers/workout/1/edit',
expected_url = '/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.url, '/rowers/workout/1/edit')
self.assertEqual(response.url, '/rowers/workout/1/edit/')
self.assertEqual(response.status_code, 302)
@patch('rowers.runkeeperstuff.requests.get', side_effect=mocked_requests)
@@ -506,7 +506,7 @@ class RunKeeperObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/runkeeperimport/12/',follow=True)
self.assertRedirects(response,
expected_url='/rowers/workout/2/edit',
expected_url='/rowers/workout/2/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -590,10 +590,10 @@ class UAObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/1/underarmouruploadw/')
self.assertRedirects(response,
expected_url = '/rowers/workout/1/edit',
expected_url = '/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.url, '/rowers/workout/1/edit')
self.assertEqual(response.url, '/rowers/workout/1/edit/')
self.assertEqual(response.status_code, 302)
@patch('rowers.underarmourstuff.requests.get', side_effect=mocked_requests)
@@ -609,7 +609,7 @@ class UAObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/underarmourimport/12/',follow=True)
self.assertRedirects(response,
expected_url='/rowers/workout/2/edit',
expected_url='/rowers/workout/2/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -692,10 +692,10 @@ class TPObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/1/tpuploadw/')
self.assertRedirects(response,
expected_url = '/rowers/workout/1/edit',
expected_url = '/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.url, '/rowers/workout/1/edit')
self.assertEqual(response.url, '/rowers/workout/1/edit/')
self.assertEqual(response.status_code, 302)

View File

@@ -53,9 +53,9 @@ class URLTests(TestCase):
'sander@ds.ds',
'koeinsloot',
)
r = Rower.objects.create(user=u,rowerplan='coach')
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True,
gdproptindate=timezone.now())
self.c = Client()
self.c.login(username='john',password='koeinsloot')
self.nu = datetime.datetime.now()
filename = 'rowers/tests/testdata/testdata.csv'
@@ -98,100 +98,100 @@ class URLTests(TestCase):
'/rowers/500/',
'/rowers/502/',
'/rowers/1/list-workouts/',
'/rowers/1/list-workouts/2016-01-01/2016-12-31',
'/rowers/1/list-workouts/2016-01-01/2016-12-31/',
'/rowers/1/ote-bests/',
'/rowers/1/ote-bests2/2016-01-01/2016-12-31',
'/rowers/about',
'/rowers/addmanual/',
'/rowers/agegroupcp/30',
'/rowers/agegroupcp/30/1',
'/rowers/agegrouprecords/male/hwt',
'/rowers/agegrouprecords/male/hwt/2000m',
'/rowers/agegrouprecords/male/hwt/2000min',
'/rowers/ajax_agegroup/45/hwt/male/1',
'/rowers/1/ote-bests2/2016-01-01/2016-12-31/',
'/rowers/about/',
'/rowers/workout/addmanual/',
'/rowers/agegroupcp/30/',
'/rowers/agegroupcp/30/1/',
'/rowers/agegrouprecords/male/hwt/',
'/rowers/agegrouprecords/male/hwt/2000m/',
'/rowers/agegrouprecords/male/hwt/2000min/',
'/rowers/ajax_agegroup/45/hwt/male/1/',
'/rowers/analysis/',
'/rowers/analysis/user/1',
'/rowers/brochure',
'/rowers/courses/upload',
'/rowers/analysis/user/1/',
'/rowers/brochure/',
'/rowers/courses/upload/',
'/rowers/createplan/',
'/rowers/createplan/user/1/',
'/rowers/cumstats/',
'/rowers/cumstats/2016-01-01/2016-12-31',
'/rowers/cumstats/user/1',
'/rowers/cumstats/user/1/2016-01-01/2016-12-31',
'/rowers/developers',
'/rowers/cumstats/2016-01-01/2016-12-31/',
'/rowers/cumstats/user/1/',
'/rowers/cumstats/user/1/2016-01-01/2016-12-31/',
'/rowers/developers/',
'/rowers/email/',
'/rowers/email/thankyou/',
'/rowers/fitness-progress/',
'/rowers/fitness-progress/user/1',
'/rowers/fitness-progress/user/1/rower',
'/rowers/fitness-progress/user/1/',
'/rowers/fitness-progress/user/1/rower/',
'/rowers/flexall/',
'/rowers/flexall/spm/hr/None/',
'/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/',
'/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/user/1',
'/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/user/1/',
'/rowers/flexall/user/1/',
'/rowers/flexalldata/',
'/rowers/help',
'/rowers/help/',
'/rowers/histo/',
'/rowers/histo/user/1',
'/rowers/histo/user/1/2016-01-01/2016-12-31',
'/rowers/histodata',
'/rowers/job-kill/1',
'/rowers/histo/user/1/',
'/rowers/histo/user/1/2016-01-01/2016-12-31/',
'/rowers/histodata/',
'/rowers/job-kill/1/',
'/rowers/jobs-status/',
'/rowers/laboratory/',
'/rowers/laboratory/user/1',
'/rowers/legal',
'/rowers/laboratory/user/1/',
'/rowers/legal/',
'/rowers/list-courses/',
'/rowers/list-graphs/',
'/rowers/list-jobs/',
'/rowers/list-workouts/',
'/rowers/list-workouts/2016-01-01/2016-12-31',
'/rowers/list-workouts/2016-01-01/2016-12-31/',
'/rowers/list-workouts/2016-01-01/2016-12-31/user/1/',
'/rowers/list-workouts/ranking',
'/rowers/list-workouts/ranking/',
'/rowers/list-workouts/user/1/',
'/rowers/me/calcdps/',
'/rowers/me/edit/',
'/rowers/me/edit/user/1',
'/rowers/me/edit/user/1/',
'/rowers/me/exportsettings/',
'/rowers/me/exportsettings/user/1',
'/rowers/me/exportsettings/user/1/',
'/rowers/me/favoritecharts/',
'/rowers/me/favoritecharts/user/1',
'/rowers/me/favoritecharts/user/1/',
'/rowers/me/invitation/',
'/rowers/me/preferences/',
'/rowers/me/preferences/user/1',
'/rowers/me/preferences/user/1/',
'/rowers/me/request/',
'/rowers/me/teams/',
'/rowers/me/workflowconfig2/',
'/rowers/me/workflowconfig2/user/1',
'/rowers/me/workflowdefault',
'/rowers/multi-compare',
'/rowers/me/workflowconfig2/user/1/',
'/rowers/me/workflowdefault/',
# '/rowers/multi-compare/',
'/rowers/ote-bests/',
'/rowers/ote-bests/2016-01-01/2016-12-31',
'/rowers/ote-bests/user/1',
'/rowers/ote-bests/user/1/2016-01-01/2016-12-31',
'/rowers/ote-bests/2016-01-01/2016-12-31/',
'/rowers/ote-bests/user/1/',
'/rowers/ote-bests/user/1/2016-01-01/2016-12-31/',
'/rowers/ote-bests2/',
'/rowers/ote-bests2/2016-01-01/2016-12-31',
'/rowers/ote-bests2/user/1',
'/rowers/ote-bests2/2016-01-01/2016-12-31/',
'/rowers/ote-bests2/user/1/',
'/rowers/ote-ranking/',
'/rowers/ote-ranking/2016-01-01/2016-12-31',
'/rowers/ote-ranking/2016-01-01/2016-12-31/',
'/rowers/ote-ranking/user/1/',
'/rowers/ote-ranking/user/1/2016-01-01/2016-12-31',
'/rowers/ote-ranking/user/1/2016-01-01/2016-12-31/',
'/rowers/otw-bests/',
'/rowers/otw-bests/2016-01-01/2016-12-31',
'/rowers/otw-bests/user/1/2016-01-01/2016-12-31',
'/rowers/partners',
'/rowers/physics',
'/rowers/planrequired',
'/rowers/promembership',
'/rowers/register',
'/rowers/otw-bests/2016-01-01/2016-12-31/',
'/rowers/otw-bests/user/1/2016-01-01/2016-12-31/',
'/rowers/partners/',
'/rowers/physics/',
'/rowers/planrequired/',
'/rowers/promembership/',
'/rowers/register/',
'/rowers/register/thankyou/',
'/rowers/sessions/',
'/rowers/sessions/2016-01-01/2016-12-31',
'/rowers/sessions/2016-01-01/2016-12-31/user/1',
'/rowers/sessions/2016-01-01/2016-12-31/',
'/rowers/sessions/2016-01-01/2016-12-31/user/1/',
'/rowers/sessions/coach/',
'/rowers/sessions/coach/user/1/',
'/rowers/sessions/create/',
'/rowers/sessions/create/user/1',
'/rowers/sessions/create/user/1/',
'/rowers/sessions/manage/',
'/rowers/sessions/manage/user/1/',
'/rowers/sessions/multiclone/',
@@ -199,83 +199,82 @@ class URLTests(TestCase):
'/rowers/sessions/multicreate/',
'/rowers/sessions/multicreate/user/1/',
'/rowers/sessions/print/',
'/rowers/sessions/print/user/1',
'/rowers/sessions/print/user/1/',
'/rowers/sessions/teamcreate/',
'/rowers/sessions/user/1',
'/rowers/sessions/user/1/',
'/rowers/team-compare-select/',
'/rowers/team-compare-select/workout/1',
'/rowers/team-compare-select/2016-01-01/2016-12-31',
'/rowers/test-job/2',
'/rowers/test-job2/2',
'/rowers/test_callback',
'/rowers/updatefitness',
'/rowers/updatefitness/rower',
'/rowers/updatefitness/rower/50',
'/rowers/user-boxplot',
'/rowers/user-boxplot-data',
'/rowers/user-boxplot-select/',
'/rowers/user-boxplot-select/user/1/',
'/rowers/user-boxplot/user/1',
'/rowers/user-multiflex-data',
'/rowers/user-multiflex-select/',
'/rowers/user-multiflex-select/2016-01-01/2016-12-31',
'/rowers/user-multiflex-select/user/1/',
'/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31',
'/rowers/user-multiflex/',
'/rowers/user-multiflex/user/1',
'/rowers/team-compare-select/workout/1/',
'/rowers/team-compare-select/2016-01-01/2016-12-31/',
'/rowers/test-job/2/',
'/rowers/test-job2/2/',
# '/rowers/test_callback/',
# '/rowers/updatefitness/',
# '/rowers/updatefitness/rower/',
# '/rowers/updatefitness/rower/50/',
# '/rowers/user-boxplot/',
# '/rowers/user-boxplot-data/',
# '/rowers/user-boxplot-select/',
# '/rowers/user-boxplot-select/user/1/',
# '/rowers/user-boxplot/user/1/',
# '/rowers/user-multiflex-data/',
# '/rowers/user-multiflex-select/',
# '/rowers/user-multiflex-select/2016-01-01/2016-12-31/',
# '/rowers/user-multiflex-select/user/1/',
# '/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31/',
# '/rowers/user-multiflex/',
# '/rowers/user-multiflex/user/1/',
'/rowers/workout/1/',
'/rowers/workout/1/adddistanceplot',
'/rowers/workout/1/adddistanceplot2',
'/rowers/workout/1/addotwpowerplot',
'/rowers/workout/1/addpiechart',
'/rowers/workout/1/addpowerpiechart',
'/rowers/workout/1/addstatic',
'/rowers/workout/1/addstatic/3',
'/rowers/workout/1/addtimeplot',
'/rowers/workout/1/addtimeplot2',
'/rowers/workout/1/comment',
'/rowers/workout/1/darkskywind',
'/rowers/workout/1/data',
'/rowers/workout/1/edit',
'/rowers/workout/1/editintervals',
'/rowers/workout/1/flexchart',
'/rowers/workout/1/flexchart/spm/hr/None',
'/rowers/workout/1/flexchart/spm/hr/None/scatter',
'/rowers/workout/1/flexchart/spm/hr/None/scatter/',
'/rowers/workout/1/forcecurve',
'/rowers/workout/1/get-testscript',
'/rowers/workout/1/get-thumbnails',
'/rowers/workout/1/histo',
'/rowers/workout/1/image',
'/rowers/workout/1/instroke',
'/rowers/workout/1/interactiveotwplot',
'/rowers/workout/1/map',
'/rowers/workout/1/otwsetpower',
'/rowers/workout/1/adddistanceplot/',
'/rowers/workout/1/adddistanceplot2/',
'/rowers/workout/1/addotwpowerplot/',
'/rowers/workout/1/addpiechart/',
'/rowers/workout/1/addpowerpiechart/',
'/rowers/workout/1/addstatic/',
'/rowers/workout/1/addstatic/3/',
'/rowers/workout/1/addtimeplot/',
'/rowers/workout/1/addtimeplot2/',
'/rowers/workout/1/comment/',
'/rowers/workout/1/darkskywind/',
'/rowers/workout/1/data/',
'/rowers/workout/1/edit/',
'/rowers/workout/1/editintervals/',
'/rowers/workout/1/flexchart/',
'/rowers/workout/1/forcecurve/',
'/rowers/workout/1/get-testscript/',
'/rowers/workout/1/get-thumbnails/',
'/rowers/workout/1/histo/',
'/rowers/workout/1/image/',
'/rowers/workout/1/instroke/',
'/rowers/workout/1/interactiveotwplot/',
'/rowers/workout/1/map/',
'/rowers/workout/1/otwsetpower/',
'/rowers/workout/1/recalcsummary/',
'/rowers/workout/1/restore',
'/rowers/workout/1/smoothenpace',
'/rowers/workout/1/split',
'/rowers/workout/1/stats',
'/rowers/workout/1/stream',
'/rowers/workout/1/task',
'/rowers/workout/1/test_strokedata',
'/rowers/workout/1/toggle-ranking',
'/rowers/workout/1/undosmoothenpace',
'/rowers/workout/1/unsubscribe',
'/rowers/workout/1/updatecp',
'/rowers/workout/1/view',
'/rowers/workout/1/wind',
'/rowers/workout/1/workflow',
'/rowers/workout/compare/1/2016-01-01/2016-12-31',
'/rowers/workout/1/restore/',
'/rowers/workout/1/smoothenpace/',
'/rowers/workout/1/split/',
'/rowers/workout/1/stats/',
'/rowers/workout/1/stream/',
'/rowers/workout/1/task/',
'/rowers/workout/1/test_strokedata/',
'/rowers/workout/1/toggle-ranking/',
'/rowers/workout/1/undosmoothenpace/',
'/rowers/workout/1/unsubscribe/',
'/rowers/workout/1/updatecp/',
'/rowers/workout/1/view/',
'/rowers/workout/1/wind/',
'/rowers/workout/1/workflow/',
'/rowers/workout/compare/1/2016-01-01/2016-12-31/',
'/rowers/workout/fusion/1/',
'/rowers/workout/fusion/1/2016-01-01/2016-12-31',
'/rowers/workout/fusion/1/2016-01-01/2016-12-31/',
'/rowers/workout/upload/',
'/rowers/workout/upload/team/',
'/rowers/workouts-join',
'/rowers/workouts-join/',
'/rowers/workouts-join-select/',
'/rowers/workouts-join-select/2016-01-01/2016-12-31',
'/rowers/workouts-join-select/2016-01-01/2016-12-31/',
]
# urlstotest = ['/rowers/createplan/user/1/']
lijst = []
for url in urlstotest:
lijst.append(
@@ -283,12 +282,20 @@ class URLTests(TestCase):
)
@parameterized.expand(lijst)
def test_url_generator(self,url,expected):
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.read_df_sql')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_url_generator(self,url,expected,
mocked_sqlalchemy,
mocked_read_df_sql,
mocked_getsmallrowdata_db):
login = self.c.login(username='john',password='koeinsloot')
self.assertTrue(login)
response = self.c.get(url,follow=True)
if response.status_code != expected:
print url
print response.status_code
self.assertEqual(response.status_code,
expected,
msg=url+' response status code not 200')
expected)

1399
rowers/tests/testdata/colsfromdb.csv vendored Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -86,7 +86,7 @@ class NewUserRegistrationTest(TestCase):
form = RegistrationFormUniqueEmail(form_data)
self.assertTrue(form.is_valid())
response = self.c.post('/rowers/register', form_data, follow=True)
response = self.c.post('/rowers/register/', form_data, follow=True)
self.assertRedirects(response,
expected_url='/rowers/me/gdpr-optin/?next=/rowers/list-workouts/',
@@ -408,7 +408,8 @@ class ViewTest(TestCase):
@patch('rowers.dataprep.create_engine')
def test_upload_view_sled(self, mocked_sqlalchemy):
self.c.login(username='john',password='koeinsloot')
login = self.c.login(username='john',password='koeinsloot')
self.assertTrue(login)
filename = 'rowers/tests/testdata/testdata.csv'
f = open(filename,'rb')
@@ -429,7 +430,7 @@ class ViewTest(TestCase):
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -437,14 +438,14 @@ class ViewTest(TestCase):
response = self.c.get('/rowers/workout/1/', form_data, follow=True)
self.assertEqual(response.status_code, 200)
response = self.c.get('/rowers/workout/1/edit', form_data, follow=True)
response = self.c.get('/rowers/workout/1/edit/', form_data, follow=True)
self.assertEqual(response.status_code, 200)
response = self.c.get('/rowers/workout/1/histo', form_data, follow=True)
response = self.c.get('/rowers/workout/1/histo/', form_data, follow=True)
self.assertEqual(response.status_code, 200)
response = self.c.get('/rowers/workout/1/workflow',
response = self.c.get('/rowers/workout/1/workflow/',
follow=True)
self.assertEqual(response.status_code, 200)
@@ -465,7 +466,7 @@ class ViewTest(TestCase):
}
form = WorkoutForm(data=form_data)
self.assertTrue(form.is_valid())
response = self.c.post('/rowers/workout/1/edit', form_data, follow=True)
response = self.c.post('/rowers/workout/1/edit/', form_data, follow=True)
self.assertEqual(response.status_code, 200)
@@ -518,7 +519,7 @@ class ViewTest(TestCase):
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -560,7 +561,7 @@ class ViewTest(TestCase):
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -629,7 +630,7 @@ class ViewTest(TestCase):
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -679,7 +680,7 @@ class ViewTest(TestCase):
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -716,7 +717,7 @@ class ViewTest(TestCase):
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -755,7 +756,7 @@ class ViewTest(TestCase):
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -791,7 +792,7 @@ class ViewTest(TestCase):
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -828,7 +829,7 @@ class ViewTest(TestCase):
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -867,7 +868,7 @@ class ViewTest(TestCase):
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
f.close()
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -903,7 +904,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -936,7 +937,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -969,7 +970,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -1002,7 +1003,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -1036,7 +1037,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -1068,7 +1069,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -1100,7 +1101,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -1132,7 +1133,7 @@ class ViewTest(TestCase):
form = DocumentsForm(form_data,file_data)
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -1169,7 +1170,7 @@ class ViewTest(TestCase):
# form_data, follow=True,
# format='multipart')
# f.close()
# self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
# self.assertRedirects(response, expected_url='/rowers/workout/1/edit/',
# status_code=302,target_status_code=200)
# self.assertEqual(response.status_code, 200)

View File

@@ -108,9 +108,9 @@ urlpatterns = [
url(r'^o/authorize/$', base.AuthorizationView.as_view(), name="authorize"),
url(r'^o/token/$', base.TokenView.as_view(), name="token"),
url(r'^', include(router.urls)),
url(r'^api-docs$', views.schema_view),
url(r'^api-docs/$', views.schema_view),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^api/workouts/(?P<id>\d+)/strokedata$',views.strokedatajson),
url(r'^api/workouts/(?P<id>\d+)/strokedata/$',views.strokedatajson),
url(r'^500v/$',views.error500_view),
url(r'^502/$', TemplateView.as_view(template_name='502.html'),name='502'),
url(r'^500/$', TemplateView.as_view(template_name='500.html'),name='500'),
@@ -118,244 +118,244 @@ urlpatterns = [
url(r'^400/$', TemplateView.as_view(template_name='400.html'),name='400'),
url(r'^403/$', TemplateView.as_view(template_name='403.html'),name='403'),
# url(r'^imports/$', views.imports_view),
url(r'^exportallworkouts/?$',views.workouts_summaries_email_view),
url(r'^update_empower$',views.rower_update_empower_view),
url(r'^agegroupcp/(?P<age>\d+)$',views.agegroupcpview),
url(r'^agegroupcp/(?P<age>\d+)/(?P<normalize>\d+)$',views.agegroupcpview),
url(r'^ajax_agegroup/(?P<age>\d+)/(?P<weightcategory>\w+.*)/(?P<sex>\w+.*)/(?P<userid>\d+)$',
url(r'^exportallworkouts/?/$',views.workouts_summaries_email_view),
url(r'^update_empower/$',views.rower_update_empower_view),
url(r'^agegroupcp/(?P<age>\d+)/$',views.agegroupcpview),
url(r'^agegroupcp/(?P<age>\d+)/(?P<normalize>\d+)/$',views.agegroupcpview),
url(r'^ajax_agegroup/(?P<age>\d+)/(?P<weightcategory>\w+.*)/(?P<sex>\w+.*)/(?P<userid>\d+)/$',
views.ajax_agegrouprecords),
url(r'^updatefitness/(?P<mode>\w+.*)/(?P<days>\d+)$',views.fitness_metric_view),
url(r'^updatefitness/(?P<mode>\w+.*)$',views.fitness_metric_view),
url(r'^updatefitness$',views.fitness_metric_view),
url(r'^agegrouprecords/(?P<sex>\w+.*)/(?P<weightcategory>\w+.*)/(?P<distance>\d+)m$',
url(r'^updatefitness/(?P<mode>\w+.*)/(?P<days>\d+)/$',views.fitness_metric_view),
url(r'^updatefitness/(?P<mode>\w+.*)/$',views.fitness_metric_view),
url(r'^updatefitness/$',views.fitness_metric_view),
url(r'^agegrouprecords/(?P<sex>\w+.*)/(?P<weightcategory>\w+.*)/(?P<distance>\d+)m/$',
views.agegrouprecordview),
url(r'^agegrouprecords/(?P<sex>\w+.*)/(?P<weightcategory>\w+.*)/(?P<duration>\d+)min$',
url(r'^agegrouprecords/(?P<sex>\w+.*)/(?P<weightcategory>\w+.*)/(?P<duration>\d+)min/$',
views.agegrouprecordview),
url(r'^agegrouprecords/(?P<sex>\w+.*)/(?P<weightcategory>\w+.*)$',
url(r'^agegrouprecords/(?P<sex>\w+.*)/(?P<weightcategory>\w+.*)/$',
views.agegrouprecordview),
url(r'^list-workouts/ranking$',views.workouts_view,{'rankingonly':True}),
url(r'^list-workouts/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.workouts_view),
url(r'^list-workouts/ranking/$',views.workouts_view,{'rankingonly':True}),
url(r'^list-workouts/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workouts_view),
url(r'^list-workouts/team/(?P<teamid>\d+)/$',views.workouts_view),
url(r'^(?P<rowerid>\d+)/list-workouts/$',views.workouts_view),
url(r'^(?P<rowerid>\d+)/list-workouts/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.workouts_view),
url(r'^(?P<rowerid>\d+)/list-workouts/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workouts_view),
url(r'^list-workouts/user/(?P<userid>\d+)/$',views.workouts_view),
url(r'^list-workouts/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.workouts_view),
url(r'^list-workouts/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.workouts_view),
url(r'^virtualevents$',views.virtualevents_view),
url(r'^virtualevent/create$',views.virtualevent_create_view),
url(r'^virtualevent/createindoor$',views.indoorvirtualevent_create_view),
url(r'^list-workouts/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workouts_view),
url(r'^virtualevents/$',views.virtualevents_view),
url(r'^virtualevent/create/$',views.virtualevent_create_view),
url(r'^virtualevent/createindoor/$',views.indoorvirtualevent_create_view),
url(r'^raceregistration/togglenotification/(?P<id>\d+)/$',
views.virtualevent_toggle_email_view),
url(r'^indoorraceregistration/togglenotification/(?P<id>\d+)/$',
views.indoorvirtualevent_toggle_email_view),
url(r'^virtualevent/(?P<id>\d+)$',views.virtualevent_view),
url(r'^virtualevent/(?P<id>\d+)/edit$',views.virtualevent_edit_view),
url(r'^virtualevent/(?P<id>\d+)/editindoor$',views.indoorvirtualevent_edit_view),
url(r'^virtualevent/(?P<id>\d+)/register$',views.virtualevent_register_view),
url(r'^virtualevent/(?P<id>\d+)/registerindoor$',views.indoorvirtualevent_register_view),
url(r'^virtualevent/(?P<id>\d+)/adddiscipline$',views.virtualevent_addboat_view),
url(r'^virtualevent/(?P<id>\d+)/withdraw/(?P<recordid>\d+)$',views.virtualevent_withdraw_view),
url(r'^virtualevent/(?P<id>\d+)/withdraw$',views.virtualevent_withdraw_view),
url(r'^virtualevent/(?P<id>\d+)/submit$',
url(r'^virtualevent/(?P<id>\d+)/$',views.virtualevent_view),
url(r'^virtualevent/(?P<id>\d+)/edit/$',views.virtualevent_edit_view),
url(r'^virtualevent/(?P<id>\d+)/editindoor/$',views.indoorvirtualevent_edit_view),
url(r'^virtualevent/(?P<id>\d+)/register/$',views.virtualevent_register_view),
url(r'^virtualevent/(?P<id>\d+)/registerindoor/$',views.indoorvirtualevent_register_view),
url(r'^virtualevent/(?P<id>\d+)/adddiscipline/$',views.virtualevent_addboat_view),
url(r'^virtualevent/(?P<id>\d+)/withdraw/(?P<recordid>\d+)/$',views.virtualevent_withdraw_view),
url(r'^virtualevent/(?P<id>\d+)/withdraw/$',views.virtualevent_withdraw_view),
url(r'^virtualevent/(?P<id>\d+)/submit/$',
views.virtualevent_submit_result_view),
url(r'^virtualevent/(?P<id>\d+)/submit/(?P<workoutid>\d+)$',
url(r'^virtualevent/(?P<id>\d+)/submit/(?P<workoutid>\d+)/$',
views.virtualevent_submit_result_view),
url(r'^virtualevent/(?P<raceid>\d+)/disqualify/(?P<recordid>\d+)/',
views.virtualevent_disqualify_view),
url(r'^list-workouts/$',views.workouts_view),
url(r'^list-courses/$',views.courses_view),
url(r'^courses/upload$',views.course_upload_view),
url(r'^courses/upload/$',views.course_upload_view),
url(r'^workout/addmanual/$',views.addmanual_view),
url(r'^team-compare-select/workout/(?P<id>\d+)/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/team/(?P<teamid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/team/(?P<teamid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.team_comparison_select),
url(r'^team-compare-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/team/(?P<teamid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/$',views.team_comparison_select),
url(r'^workouts-join-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.workouts_join_select),
url(r'^workouts-join$',views.workouts_join_view),
url(r'^workouts-join-select/team/(?P<teamid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workouts_join_select),
url(r'^workouts-join/$',views.workouts_join_view),
url(r'^workouts-join-select/team/(?P<teamid>\d+)/$',views.workouts_join_select),
url(r'^workouts-join-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.workouts_join_select),
url(r'^workouts-join-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workouts_join_select),
url(r'^workouts-join-select/$',views.workouts_join_select),
url(r'^user-boxplot-select/user/(?P<userid>\d+)/$',views.user_boxplot_select),
url(r'^user-boxplot-select/$',views.user_boxplot_select),
url(r'^user-multiflex-select/user/(?P<userid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.user_multiflex_select),
url(r'^user-multiflex-select/user/(?P<userid>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.user_multiflex_select),
url(r'^user-multiflex-select/user/(?P<userid>\d+)/$',views.user_multiflex_select),
url(r'^user-multiflex-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.user_multiflex_select),
url(r'^user-multiflex-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.user_multiflex_select),
url(r'^user-multiflex-select/$',views.user_multiflex_select),
url(r'^list-jobs/$',views.session_jobs_view),
url(r'^jobs-status/$',views.session_jobs_status),
url(r'^job-kill/(?P<id>.*)$',views.kill_async_job),
url(r'^test-job/(?P<aantal>\d+)$',views.test_job_view),
url(r'^test-job2/(?P<aantal>\d+)$',views.test_job_view2),
url(r'^record-progress/(?P<value>\d+)/(?P<id>.*)$',views.post_progress),
url(r'^record-progress/(?P<id>.*)$',views.post_progress),
url(r'^record-progress$',views.post_progress),
url(r'^job-kill/(?P<id>.*)/$',views.kill_async_job),
url(r'^test-job/(?P<aantal>\d+)/$',views.test_job_view),
url(r'^test-job2/(?P<aantal>\d+)/$',views.test_job_view2),
url(r'^record-progress/(?P<value>\d+)/(?P<id>.*)/$',views.post_progress),
url(r'^record-progress/(?P<id>.*)/$',views.post_progress),
url(r'^record-progress/$',views.post_progress),
url(r'^list-graphs/$',views.graphs_view),
url(r'^fitness-progress/$',views.fitnessmetric_view),
url(r'^fitness-progress/user/(?P<id>\d+)$',views.fitnessmetric_view),
url(r'^fitness-progress/user/(?P<id>\d+)/(?P<mode>\w+.*)$',views.fitnessmetric_view),
url(r'^ote-bests/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.rankings_view),
url(r'^ote-bests/user/(?P<theuser>\d+)$',views.rankings_view),
url(r'^ote-bests/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.rankings_view),
url(r'^fitness-progress/user/(?P<id>\d+)/$',views.fitnessmetric_view),
url(r'^fitness-progress/user/(?P<id>\d+)/(?P<mode>\w+.*)/$',views.fitnessmetric_view),
url(r'^ote-bests/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.rankings_view),
url(r'^ote-bests/user/(?P<theuser>\d+)/$',views.rankings_view),
url(r'^ote-bests/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.rankings_view),
url(r'^ote-bests/$',views.rankings_view),
url(r'^(?P<theuser>\d+)/ote-bests/$',views.rankings_view),
url(r'^(?P<theuser>\d+)/ote-bests2/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.rankings_view2),
url(r'^ote-bests2/user/(?P<theuser>\d+)$',views.rankings_view2),
url(r'^ote-bests2/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.rankings_view2),
url(r'^(?P<theuser>\d+)/ote-bests2/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.rankings_view2),
url(r'^ote-bests2/user/(?P<theuser>\d+)/$',views.rankings_view2),
url(r'^ote-bests2/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.rankings_view2),
url(r'^ote-bests2/$',views.rankings_view2),
url(r'^otw-bests/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.otwrankings_view),
url(r'^otw-bests/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.otwrankings_view),
url(r'^otw-bests/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otwrankings_view),
url(r'^otw-bests/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otwrankings_view),
url(r'^otw-bests/user/(?P<theuser>\d+)/$',views.otwrankings_view),
url(r'^otw-bests/$',views.otwrankings_view),
url(r'^ote-ranking/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.oterankings_view),
url(r'^ote-ranking/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.oterankings_view),
url(r'^ote-ranking/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.oterankings_view),
url(r'^ote-ranking/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.oterankings_view),
url(r'^ote-ranking/$',views.oterankings_view),
url(r'^ote-ranking/user/(?P<theuser>\d+)/$',views.oterankings_view),
url(r'^flexall/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<theuser>\d+)$',views.cum_flex),
url(r'^flexall/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<theuser>\d+)/$',views.cum_flex),
url(r'^flexall/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.cum_flex),
url(r'^flexall/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/$',views.cum_flex),
url(r'^flexall/user/(?P<theuser>\d+)/$',views.cum_flex),
url(r'^flexall/$',views.cum_flex),
url(r'^flexalldata/$',views.cum_flex_data),
url(r'^histo/user/(?P<theuser>\d+)$',views.histo),
url(r'^histodata$',views.histo_data),
url(r'^histo/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.histo),
url(r'^histo/user/(?P<theuser>\d+)/$',views.histo),
url(r'^histodata/$',views.histo_data),
url(r'^histo/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.histo),
url(r'^histo/$',views.histo),
url(r'^cumstats/user/(?P<theuser>\d+)$',views.cumstats),
url(r'^cumstats/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.cumstats),
url(r'^cumstats/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.cumstats),
url(r'^cumstats/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.cumstats),
url(r'^cumstats/user/(?P<theuser>\d+)/$',views.cumstats),
url(r'^cumstats/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.cumstats),
url(r'^cumstats/user/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.cumstats),
url(r'^cumstats/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.cumstats),
url(r'^cumstats/$',views.cumstats),
url(r'^graph/(?P<id>\d+)/$',views.graph_show_view),
url(r'^graph/(?P<pk>\d+)/delete$',views.GraphDelete.as_view(),name='graph_delete'),
url(r'^workout/(?P<id>\d+)/get-thumbnails$',views.get_thumbnails),
url(r'^workout/(?P<id>\d+)/toggle-ranking$',views.workout_toggle_ranking),
url(r'^workout/(?P<id>\d+)/get-testscript$',views.get_testscript),
url(r'^graph/(?P<pk>\d+)/delete/$',views.GraphDelete.as_view(),name='graph_delete'),
url(r'^workout/(?P<id>\d+)/get-thumbnails/$',views.get_thumbnails),
url(r'^workout/(?P<id>\d+)/toggle-ranking/$',views.workout_toggle_ranking),
url(r'^workout/(?P<id>\d+)/get-testscript/$',views.get_testscript),
url(r'^workout/upload/team/$',views.team_workout_upload_view),
url(r'^workout/upload/$',views.workout_upload_view,name='workout_upload_view'),
url(r'^workout/(?P<id>\d+)/histo$',views.workout_histo_view),
url(r'^workout/(?P<id>\d+)/task$',views.workout_test_task_view),
url(r'^workout/(?P<id>\d+)/forcecurve$',views.workout_forcecurve_view),
url(r'^workout/(?P<id>\d+)/unsubscribe$',views.workout_unsubscribe_view),
# url(r'^workout/(?P<id>\d+)/export$',views.workout_export_view),
url(r'^workout/(?P<id>\d+)/comment$',views.workout_comment_view),
url(r'^workout/(?P<id>\d+)/emailtcx$',views.workout_tcxemail_view),
url(r'^workout/(?P<id>\d+)/emailgpx$',views.workout_gpxemail_view),
url(r'^workout/(?P<id>\d+)/emailcsv$',views.workout_csvemail_view),
url(r'^workout/(?P<id>\d+)/csvtoadmin$',views.workout_csvtoadmin_view),
url(r'^ergcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.otecp_toadmin_view),
url(r'^otwcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.otwcp_toadmin_view),
url(r'^workout/(?P<id>\d+)/histo/$',views.workout_histo_view),
url(r'^workout/(?P<id>\d+)/task/$',views.workout_test_task_view),
url(r'^workout/(?P<id>\d+)/forcecurve/$',views.workout_forcecurve_view),
url(r'^workout/(?P<id>\d+)/unsubscribe/$',views.workout_unsubscribe_view),
# url(r'^workout/(?P<id>\d+)/export/$',views.workout_export_view),
url(r'^workout/(?P<id>\d+)/comment/$',views.workout_comment_view),
url(r'^workout/(?P<id>\d+)/emailtcx/$',views.workout_tcxemail_view),
url(r'^workout/(?P<id>\d+)/emailgpx/$',views.workout_gpxemail_view),
url(r'^workout/(?P<id>\d+)/emailcsv/$',views.workout_csvemail_view),
url(r'^workout/(?P<id>\d+)/csvtoadmin/$',views.workout_csvtoadmin_view),
url(r'^ergcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otecp_toadmin_view),
url(r'^otwcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otwcp_toadmin_view),
# url(r'^workout/compare/(?P<id>\d+)/$',views.workout_comparison_list),
# url(r'^workout/compare2/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/$',views.workout_comparison_view),
url(r'^workout/compare/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.workout_comparison_list),
url(r'^workout/(?P<id>\d+)/edit$',views.workout_edit_view,
url(r'^workout/compare/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workout_comparison_list),
url(r'^workout/(?P<id>\d+)/edit/$',views.workout_edit_view,
name='workout_edit_view'),
url(r'^workout/(?P<id>\d+)/map$',views.workout_map_view),
# url(r'^workout/(?P<id>\d+)/setprivate$',views.workout_setprivate_view),
url(r'^workout/(?P<id>\d+)/updatecp$',views.workout_update_cp_view),
# url(r'^workout/(?P<id>\d+)/makepublic$',views.workout_makepublic_view),
# url(r'^workout/(?P<id>\d+)/geeky$',views.workout_geeky_view),
# url(r'^workout/(?P<id>\d+)/advanced$',views.workout_advanced_view),
url(r'^workout/(?P<id>\d+)/instroke/(?P<metric>\w+.*)$',views.instroke_chart),
url(r'^workout/(?P<id>\d+)/instroke$',views.instroke_view),
url(r'^workout/(?P<id>\d+)/stats$',views.workout_stats_view,name='workout_stats_view'),
url(r'^workout/(?P<id>\d+)/data$',views.workout_data_view,
url(r'^workout/(?P<id>\d+)/map/$',views.workout_map_view),
# url(r'^workout/(?P<id>\d+)/setprivate/$',views.workout_setprivate_view),
url(r'^workout/(?P<id>\d+)/updatecp/$',views.workout_update_cp_view),
# url(r'^workout/(?P<id>\d+)/makepublic/$',views.workout_makepublic_view),
# url(r'^workout/(?P<id>\d+)/geeky/$',views.workout_geeky_view),
# url(r'^workout/(?P<id>\d+)/advanced/$',views.workout_advanced_view),
url(r'^workout/(?P<id>\d+)/instroke/(?P<metric>\w+.*)/$',views.instroke_chart),
url(r'^workout/(?P<id>\d+)/instroke/$',views.instroke_view),
url(r'^workout/(?P<id>\d+)/stats/$',views.workout_stats_view,name='workout_stats_view'),
url(r'^workout/(?P<id>\d+)/data/$',views.workout_data_view,
name='workout_data_view'),
url(r'^workout/(?P<id>\d+)/otwsetpower$',views.workout_otwsetpower_view),
url(r'^workout/(?P<id>\d+)/interactiveotwplot$',views.workout_otwpowerplot_view),
url(r'^workout/(?P<id>\d+)/wind$',views.workout_wind_view),
url(r'^workout/(?P<id>\d+)/image$',views.workout_uploadimage_view),
url(r'^virtualevent/(?P<id>\d+)/compare$',views.virtualevent_compare_view),
url(r'^virtualevent/(?P<id>\d+)/image$',
url(r'^workout/(?P<id>\d+)/otwsetpower/$',views.workout_otwsetpower_view),
url(r'^workout/(?P<id>\d+)/interactiveotwplot/$',views.workout_otwpowerplot_view),
url(r'^workout/(?P<id>\d+)/wind/$',views.workout_wind_view),
url(r'^workout/(?P<id>\d+)/image/$',views.workout_uploadimage_view),
url(r'^virtualevent/(?P<id>\d+)/compare/$',views.virtualevent_compare_view),
url(r'^virtualevent/(?P<id>\d+)/image/$',
views.virtualevent_uploadimage_view),
url(r'^virtualevent/(?P<id>\d+)/setimage/(?P<logoid>\d+)/$',
views.virtualevent_setlogo_view),
url(r'^logo/(?P<id>\d+)/delete/$',
views.logo_delete_view),
url(r'^workout/(?P<id>\d+)/darkskywind$',views.workout_downloadwind_view),
url(r'^workout/(?P<id>\d+)/metar/(?P<airportcode>\w+)$',views.workout_downloadmetar_view),
url(r'^workout/(?P<id>\d+)/stream$',views.workout_stream_view),
# url(r'^workout/(?P<id>\d+)/crewnerdsummary$',views.workout_crewnerd_summary_view),
url(r'^workout/(?P<id>\d+)/editintervals$',views.workout_summary_edit_view,
url(r'^workout/(?P<id>\d+)/darkskywind/$',views.workout_downloadwind_view),
url(r'^workout/(?P<id>\d+)/metar/(?P<airportcode>\w+)/$',views.workout_downloadmetar_view),
url(r'^workout/(?P<id>\d+)/stream/$',views.workout_stream_view),
# url(r'^workout/(?P<id>\d+)/crewnerdsummary/$',views.workout_crewnerd_summary_view),
url(r'^workout/(?P<id>\d+)/editintervals/$',views.workout_summary_edit_view,
name='workout_summary_edit_view'),
url(r'^workout/(?P<id>\d+)/restore$',views.workout_summary_restore_view),
url(r'^workout/(?P<id>\d+)/split$',views.workout_split_view),
# url(r'^workout/(?P<id>\d+)/interactiveplot$',views.workout_biginteractive_view),
url(r'^workout/(?P<id>\d+)/view$',views.workout_view),
url(r'^workout/(?P<id>\d+)/restore/$',views.workout_summary_restore_view),
url(r'^workout/(?P<id>\d+)/split/$',views.workout_split_view),
# url(r'^workout/(?P<id>\d+)/interactiveplot/$',views.workout_biginteractive_view),
url(r'^workout/(?P<id>\d+)/view/$',views.workout_view),
url(r'^workout/(?P<id>\d+)/$',views.workout_view),
url(r'^workout/fusion/(?P<id1>\d+)/(?P<id2>\d+)$',views.workout_fusion_view),
url(r'^workout/fusion/(?P<id1>\d+)/(?P<id2>\d+)/$',views.workout_fusion_view),
url(r'^workout/fusion/(?P<id>\d+)/$',views.workout_fusion_list),
url(r'^workout/fusion/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',views.workout_fusion_list),
url(r'^help$',TemplateView.as_view(
url(r'^workout/fusion/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workout_fusion_list),
url(r'^help/$',TemplateView.as_view(
template_name='help.html'),name='help'
),
url(r'^physics$',TemplateView.as_view(template_name='physics.html'),name='physics'),
url(r'^partners$',TemplateView.as_view(template_name='partners.html'),name='partners'),
url(r'^physics/$',TemplateView.as_view(template_name='physics.html'),name='physics'),
url(r'^partners/$',TemplateView.as_view(template_name='partners.html'),name='partners'),
# keeping the old URLs for retrofit
url(r'^workout/(?P<id>\d+)/addtimeplot$',
url(r'^workout/(?P<id>\d+)/addtimeplot/$',
views.workout_add_chart_view,
{'plotnr':'1'}),
url(r'^workout/(?P<id>\d+)/adddistanceplot$',
url(r'^workout/(?P<id>\d+)/adddistanceplot/$',
views.workout_add_chart_view,
{'plotnr':'2'}),
url(r'^workout/(?P<id>\d+)/addpiechart$',
url(r'^workout/(?P<id>\d+)/addpiechart/$',
views.workout_add_chart_view,
{'plotnr':'3'}),
url(r'^workout/(?P<id>\d+)/adddistanceplot2$',
url(r'^workout/(?P<id>\d+)/adddistanceplot2/$',
views.workout_add_chart_view,
{'plotnr':'7'}),
url(r'^workout/(?P<id>\d+)/addtimeplot2$',
url(r'^workout/(?P<id>\d+)/addtimeplot2/$',
views.workout_add_chart_view,
{'plotnr':'8'}),
url(r'^workout/(?P<id>\d+)/addotwpowerplot$',
url(r'^workout/(?P<id>\d+)/addotwpowerplot/$',
views.workout_add_chart_view,
{'plotnr':'9'}),
url(r'^workout/(?P<id>\d+)/addpowerpiechart$',
url(r'^workout/(?P<id>\d+)/addpowerpiechart/$',
views.workout_add_chart_view,
{'plotnr':'13'}),
# addstatic is the new URL -> need to update in templates
url(r'^workout/(?P<id>\d+)/addstatic/(?P<plotnr>\d+)$',
url(r'^workout/(?P<id>\d+)/addstatic/(?P<plotnr>\d+)/$',
views.workout_add_chart_view),
url(r'^workout/(?P<id>\d+)/addstatic$',views.workout_add_chart_view),
url(r'^workout/(?P<pk>\d+)/delete$',login_required(
url(r'^workout/(?P<id>\d+)/addstatic/$',views.workout_add_chart_view),
url(r'^workout/(?P<pk>\d+)/delete/$',login_required(
views.WorkoutDelete.as_view()),
name='workout_delete'),
url(r'^workout/(?P<id>\d+)/smoothenpace$',views.workout_smoothenpace_view),
url(r'^workout/(?P<id>\d+)/undosmoothenpace$',views.workout_undo_smoothenpace_view),
url(r'^workout/(?P<id>\d+)/smoothenpace/$',views.workout_smoothenpace_view),
url(r'^workout/(?P<id>\d+)/undosmoothenpace/$',views.workout_undo_smoothenpace_view),
url(r'^workout/c2import/$',views.workout_c2import_view),
url(r'^workout/c2list/$',views.workout_c2import_view),
url(r'^workout/c2list/(?P<page>\d+)$',views.workout_c2import_view),
url(r'^workout/c2list/user/(?P<userid>\d+)$',views.workout_c2import_view),
url(r'^workout/c2list/(?P<page>\d+)/user/(?P<userid>\d+)$',views.workout_c2import_view),
url(r'^workout/c2list/(?P<page>\d+)/$',views.workout_c2import_view),
url(r'^workout/c2list/user/(?P<userid>\d+)/$',views.workout_c2import_view),
url(r'^workout/c2list/(?P<page>\d+)/user/(?P<userid>\d+)/$',views.workout_c2import_view),
url(r'^workout/stravaimport/$',views.workout_stravaimport_view),
url(r'^workout/stravaimport/user/(?P<userid>\d+)$',views.workout_stravaimport_view),
url(r'^workout/stravaimport/user/(?P<userid>\d+)/$',views.workout_stravaimport_view),
url(r'^workout/c2import/all/$',views.workout_getc2workout_all),
url(r'^workout/c2import/all/(?P<page>\d+)$',views.workout_getc2workout_all),
url(r'^workout/c2import/all/(?P<page>\d+)/$',views.workout_getc2workout_all),
url(r'^workout/(?P<source>\w+.*)import/(?P<externalid>\d+)/$',views.workout_getimportview),
url(r'^workout/stravaimport/all/$',views.workout_getstravaworkout_all),
url(r'^workout/stravaimport/next/$',views.workout_getstravaworkout_next),
url(r'^workout/sporttracksimport/$',views.workout_sporttracksimport_view),
url(r'^workout/sporttracksimport/user/(?P<userid>\d+)$',views.workout_sporttracksimport_view),
url(r'^workout/sporttracksimport/user/(?P<userid>\d+)/$',views.workout_sporttracksimport_view),
url(r'^workout/sporttracksimport/all/$',views.workout_getsporttracksworkout_all),
url(r'^workout/polarimport/$',views.workout_polarimport_view),
url(r'^workout/polarimport/user/(?P<userid>\d+)/',views.workout_polarimport_view),
url(r'^workout/runkeeperimport/$',views.workout_runkeeperimport_view),
url(r'^workout/runkeeperimport/user/(?P<userid>\d+)$',views.workout_runkeeperimport_view),
url(r'^workout/runkeeperimport/user/(?P<userid>\d+)/$',views.workout_runkeeperimport_view),
url(r'^workout/underarmourimport/$',views.workout_underarmourimport_view),
# url(r'^workout/(?P<id>\d+)/deleteconfirm$',views.workout_delete_confirm_view),
# url(r'^workout/(?P<id>\d+)/deleteconfirm/$',views.workout_delete_confirm_view),
url(r'^workout/(?P<id>\d+)/c2uploadw/$',views.workout_c2_upload_view),
url(r'^workout/(?P<id>\d+)/stravauploadw/$',views.workout_strava_upload_view),
url(r'^workout/(?P<id>\d+)/recalcsummary/$',views.workout_recalcsummary_view),
@@ -366,34 +366,34 @@ urlpatterns = [
url(r'^multi-compare/workout/(?P<id>\d+)/user/(?P<userid>\d+)/$',views.multi_compare_view),
url(r'^multi-compare/workout/(?P<id>\d+)/$',views.multi_compare_view),
url(r'^multi-compare/$',views.multi_compare_view),
url(r'^user-boxplot/user/(?P<userid>\d+)$',views.boxplot_view),
url(r'^user-boxplot$',views.boxplot_view),
url(r'^user-boxplot-data$',views.boxplot_view_data),
url(r'^user-multiflex/user/(?P<userid>\d+)$',views.multiflex_view),
url(r'^user-boxplot/user/(?P<userid>\d+)/$',views.boxplot_view),
url(r'^user-boxplot/$',views.boxplot_view),
url(r'^user-boxplot-data/$',views.boxplot_view_data),
url(r'^user-multiflex/user/(?P<userid>\d+)/$',views.multiflex_view),
url(r'^user-multiflex/$',views.multiflex_view),
url(r'^user-multiflex-data$',views.multiflex_data),
url(r'^me/deactivate$',views.deactivate_user),
url(r'^me/delete$',views.remove_user),
url(r'^me/gdpr-optin-confirm/?$',views.user_gdpr_confirm),
url(r'^user-multiflex-data/$',views.multiflex_data),
url(r'^me/deactivate/$',views.deactivate_user),
url(r'^me/delete/$',views.remove_user),
url(r'^me/gdpr-optin-confirm/?/$',views.user_gdpr_confirm),
url(r'^me/gdpr-optin-confirm/$',views.user_gdpr_confirm),
url(r'^me/gdpr-optin/?$',views.user_gdpr_optin),
url(r'^me/gdpr-optin/?/$',views.user_gdpr_optin),
url(r'^me/gdpr-optin/$',views.user_gdpr_optin),
url(r'^me/teams/$',views.rower_teams_view),
url(r'^me/calcdps/$',views.rower_calcdps_view),
url(r'^me/exportsettings/$',views.rower_exportsettings_view),
url(r'^me/exportsettings/user/(?P<userid>\d+)$',views.rower_exportsettings_view),
url(r'^me/exportsettings/user/(?P<userid>\d+)/$',views.rower_exportsettings_view),
url(r'^team/(?P<id>\d+)/$',views.team_view),
url(r'^team/(?P<id>\d+)/memberstats/$',views.team_members_stats_view),
url(r'^team/(?P<id>\d+)/edit/$',views.team_edit_view),
url(r'^team/(?P<id>\d+)/leaveconfirm/$',views.team_leaveconfirm_view),
url(r'^team/(?P<id>\d+)/leave/$',views.team_leave_view),
url(r'^team/(?P<id>\d+)/deleteconfirm/$',views.team_deleteconfirm_view),
url(r'^team/(?P<teamid>\d+)/requestmembership/(?P<userid>\d+)$',views.team_requestmembership_view),
url(r'^team/(?P<teamid>\d+)/requestmembership/(?P<userid>\d+)/$',views.team_requestmembership_view),
url(r'^team/(?P<id>\d+)/delete/$',views.team_delete_view),
url(r'^team/create/$',views.team_create_view),
url(r'^me/team/(?P<teamid>\d+)/drop/(?P<userid>\d+)$',views.manager_member_drop_view),
url(r'^me/invitation/(?P<id>\d+)/reject$',views.invitation_reject_view),
url(r'^me/invitation/(?P<id>\d+)/revoke$',views.invitation_revoke_view),
url(r'^me/team/(?P<teamid>\d+)/drop/(?P<userid>\d+)/$',views.manager_member_drop_view),
url(r'^me/invitation/(?P<id>\d+)/reject/$',views.invitation_reject_view),
url(r'^me/invitation/(?P<id>\d+)/revoke/$',views.invitation_revoke_view),
url(r'^me/invitation/$',views.rower_invitations_view),
url(r'^me/raise500/$',views.raise_500),
url(r'^me/invitation/(\w+.*)/$',views.rower_invitations_view),
@@ -402,14 +402,14 @@ urlpatterns = [
url(r'^me/request/(\w+.*)/$',views.manager_requests_view),
url(r'^me/request/$',views.manager_requests_view),
url(r'^me/edit/$',views.rower_edit_view),
url(r'^me/edit/user/(?P<userid>\d+)$',views.rower_edit_view),
url(r'^me/edit/user/(?P<userid>\d+)/$',views.rower_edit_view),
url(r'^me/preferences/$',views.rower_prefs_view),
url(r'^me/transactions/$',views.transactions_view),
url(r'^me/preferences/user/(?P<userid>\d+)$',views.rower_prefs_view),
url(r'^me/preferences/user/(?P<userid>\d+)/$',views.rower_prefs_view),
url(r'^me/edit/(.+.*)/$',views.rower_edit_view),
url(r'^me/c2authorize/$',views.rower_c2_authorize),
url(r'^me/polarauthorize/$',views.rower_polar_authorize),
url(r'^me/revokeapp/(?P<id>\d+)$',views.rower_revokeapp_view),
url(r'^me/revokeapp/(?P<id>\d+)/$',views.rower_revokeapp_view),
url(r'^me/stravaauthorize/$',views.rower_strava_authorize),
url(r'^me/sporttracksauthorize/$',views.rower_sporttracks_authorize),
url(r'^me/underarmourauthorize/$',views.rower_underarmour_authorize),
@@ -420,59 +420,59 @@ urlpatterns = [
url(r'^me/tprefresh/$',views.rower_tp_token_refresh),
url(r'^me/c2refresh/$',views.rower_c2_token_refresh),
url(r'^me/favoritecharts/$',views.rower_favoritecharts_view),
url(r'^me/favoritecharts/user/(?P<userid>\d+)$',views.rower_favoritecharts_view),
# url(r'^me/workflowconfig$',views.workout_workflow_config_view),
url(r'^me/favoritecharts/user/(?P<userid>\d+)/$',views.rower_favoritecharts_view),
# url(r'^me/workflowconfig/$',views.workout_workflow_config_view),
url(r'^me/workflowconfig2/$',views.workout_workflow_config2_view),
url(r'^me/workflowconfig2/user/(?P<userid>\d+)$',views.workout_workflow_config2_view),
url(r'^me/workflowdefault$',views.workflow_default_view),
url(r'^me/workflowconfig2/user/(?P<userid>\d+)/$',views.workout_workflow_config2_view),
url(r'^me/workflowdefault/$',views.workflow_default_view),
url(r'^email/send/$', views.sendmail),
url(r'^email/thankyou/$', TemplateView.as_view(template_name='thankyou.html'), name='thankyou'),
url(r'^email/$', TemplateView.as_view(template_name='email.html'), name='email'),
url(r'^about', TemplateView.as_view(template_name='about_us.html'),name='about'),
url(r'^brochure$',TemplateView.as_view(template_name='brochure.html'),
url(r'^brochure/$',TemplateView.as_view(template_name='brochure.html'),
name='brochure'),
url(r'^developers', TemplateView.as_view(template_name='developers.html'),name='about'),
# url(r'^compatibility', TemplateView.as_view(template_name='compatibility.html'),name='about'),
# url(r'^videos', TemplateView.as_view(template_name='videos.html'),name='videos'),
url(r'^analysis/user/(?P<userid>\d+)$', views.analysis_view,name='analysis'),
url(r'^laboratory/user/(?P<userid>\d+)$', views.laboratory_view,name='laboratory'),
url(r'^analysis/user/(?P<userid>\d+)/$', views.analysis_view,name='analysis'),
url(r'^laboratory/user/(?P<userid>\d+)/$', views.laboratory_view,name='laboratory'),
url(r'^analysis/$', views.analysis_view,name='analysis'),
url(r'^laboratory/$', views.laboratory_view,name='laboratory'),
url(r'^promembership', TemplateView.as_view(template_name='promembership.html'),name='promembership'),
url(r'^checkout/(?P<planid>\d+)$',views.payment_confirm_view),
url(r'^upgradecheckout/(?P<planid>\d+)$',views.upgrade_confirm_view),
url(r'^downgradecheckout/(?P<planid>\d+)$',views.downgrade_confirm_view),
url(r'^billing$',views.billing_view,name='billing'),
url(r'^upgrade$',views.upgrade_view,name='upgrade'),
url(r'^downgrade$',views.downgrade_view,name='downgrade'),
url(r'^paymentcompleted$',views.payment_completed_view),
url(r'^downgradecompleted$',views.downgrade_completed_view),
url(r'^paidplans$',views.paidplans_view,name='paidplans'),
url(r'^me/cancelsubscriptions$',views.plan_stop_view),
url(r'^me/cancelsubscription/(?P<id>[\w\ ]+.*)$',views.plan_tobasic_view),
url(r'^checkouts$',views.checkouts_view,name='checkouts'),
url(r'^upgradecheckouts$',views.upgrade_checkouts_view,name='upgrade_checkouts'),
url(r'^downgradecheckouts$',views.downgrade_checkouts_view,name='downgrade_checkouts'),
url(r'^checkout/(?P<planid>\d+)/$',views.payment_confirm_view),
url(r'^upgradecheckout/(?P<planid>\d+)/$',views.upgrade_confirm_view),
url(r'^downgradecheckout/(?P<planid>\d+)/$',views.downgrade_confirm_view),
url(r'^billing/$',views.billing_view,name='billing'),
url(r'^upgrade/$',views.upgrade_view,name='upgrade'),
url(r'^downgrade/$',views.downgrade_view,name='downgrade'),
url(r'^paymentcompleted/$',views.payment_completed_view),
url(r'^downgradecompleted/$',views.downgrade_completed_view),
url(r'^paidplans/$',views.paidplans_view,name='paidplans'),
url(r'^me/cancelsubscriptions/$',views.plan_stop_view),
url(r'^me/cancelsubscription/(?P<id>[\w\ ]+.*)/$',views.plan_tobasic_view),
url(r'^checkouts/$',views.checkouts_view,name='checkouts'),
url(r'^upgradecheckouts/$',views.upgrade_checkouts_view,name='upgrade_checkouts'),
url(r'^downgradecheckouts/$',views.downgrade_checkouts_view,name='downgrade_checkouts'),
url(r'^planrequired',views.planrequired_view),
url(r'^starttrial$',views.start_trial_view),
url(r'^startplantrial$',views.start_plantrial_view),
url(r'^starttrial/$',views.start_trial_view),
url(r'^startplantrial/$',views.start_plantrial_view),
# url(r'^planmembership', TemplateView.as_view(template_name='planmembership.html'),name='planmembership'),
# url(r'^paypaltest', TemplateView.as_view(template_name='paypaltest.html'),name='paypaltest'),
url(r'^legal', TemplateView.as_view(template_name='legal.html'),name='legal'),
url(r'^register$',views.rower_register_view),
url(r'^register/$',views.rower_register_view),
url(r'^register/thankyou/$', TemplateView.as_view(template_name='registerthankyou.html'), name='registerthankyou'),
url(r'^workout/(?P<id>\d+)/workflow$',views.workout_workflow_view,
url(r'^workout/(?P<id>\d+)/workflow/$',views.workout_workflow_view,
name='workout_workflow_view'),
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>[\w\ ]+.*)/(?P<yparam1>[\w\ ]+.*)/(?P<yparam2>[\w\ ]+.*)/(?P<plottype>\w+)/$',views.workout_flexchart3_view),
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>[\w\ ]+.*)/(?P<yparam2>[\w\ ]+.*)/(?P<plottype>\w+.*)$',views.workout_flexchart3_view),
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>[\w\ ]+.*)/(?P<yparam2>[\w\ ]+.*)$',views.workout_flexchart3_view),
url(r'^workout/(?P<id>\d+)/flexchart$',views.workout_flexchart3_view),
# url(r'^workout/compare/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>[\w\ ]+.*)/(?P<plottype>[\w\ ]+.*)$',views.workout_comparison_view2),
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>[\w\ ]+.*)/(?P<yparam2>[\w\ ]+.*)/(?P<plottype>\w+.*)/$',views.workout_flexchart3_view),
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>[\w\ ]+.*)/(?P<yparam2>[\w\ ]+.*)/$',views.workout_flexchart3_view),
url(r'^workout/(?P<id>\d+)/flexchart/$',views.workout_flexchart3_view),
# url(r'^workout/compare/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>[\w\ ]+.*)/(?P<plottype>[\w\ ]+.*)/$',views.workout_comparison_view2),
# url(r'^workout/compare/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>[\w\ ]+.*)/$',views.workout_comparison_view2),
url(r'^test\_callback',views.rower_process_testcallback),
url(r'^createplan/$',views.rower_create_trainingplan),
url(r'^createplan/user/(?P<userid>\d+)/$',views.rower_create_trainingplan),
url(r'^deleteplan/(?P<pk>\d+)$',login_required(
url(r'^deleteplan/(?P<pk>\d+)/$',login_required(
views.TrainingPlanDelete.as_view())),
url(r'^deletemicrocycle/(?P<pk>\d+)/$',login_required(
views.MicroCycleDelete.as_view())),
@@ -480,7 +480,7 @@ urlpatterns = [
views.MesoCycleDelete.as_view())),
url(r'^deletemacrocycle/(?P<pk>\d+)/$',login_required(
views.MacroCycleDelete.as_view())),
# url(r'^deleteplan/(?P<id>\d+)$',views.rower_delete_trainingplan),
# url(r'^deleteplan/(?P<id>\d+)/$',views.rower_delete_trainingplan),
url(r'^plan/(?P<id>\d+)/$',views.rower_trainingplan_view),
url(r'^plan/(?P<id>\d+)/user/(?P<userid>\d+)/$',views.rower_trainingplan_view),
url(r'^plan/(?P<id>\d+)/micro/(?P<thismicroid>\d+)/$',views.rower_trainingplan_view),
@@ -504,13 +504,13 @@ urlpatterns = [
views.TrainingMicroCycleUpdate.as_view()),
name='microcycle_update_view'),
url(r'^deletetarget/(?P<id>\d+)/$',views.rower_delete_trainingtarget),
url(r'^editplan/(?P<pk>\d+)$',login_required(
url(r'^editplan/(?P<pk>\d+)/$',login_required(
views.TrainingPlanUpdate.as_view()),
name='trainingplan_update_view'),
url(r'^edittarget/(?P<pk>\d+)/$',login_required(
views.TrainingTargetUpdate.as_view()),
name='trainingtarget_update_view'),
url(r'^workout/(?P<id>\d+)/test\_strokedata$',views.strokedataform),
url(r'^workout/(?P<id>\d+)/test\_strokedata/$',views.strokedataform),
url(r'^sessions/teamcreate/user/(?P<userid>\d+)/$',views.plannedsession_teamcreate_view),
url(r'^sessions/teamcreate/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$',
views.plannedsession_teamcreate_view),
@@ -520,11 +520,11 @@ urlpatterns = [
url(r'^sessions/teamedit/(?P<sessionid>\d+)/$',views.plannedsession_teamedit_view),
url(r'^sessions/teamedit/(?P<sessionid>\d+)/user/(?P<userid>\d+)/$',views.plannedsession_teamedit_view),
url(r'^sessions/create/$',views.plannedsession_create_view),
url(r'^sessions/create/user/(?P<userid>\d+)$',
url(r'^sessions/create/user/(?P<userid>\d+)/$',
views.plannedsession_create_view),
url(r'^sessions/create/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',
views.plannedsession_create_view),
url(r'^sessions/create/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)$',
url(r'^sessions/create/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',
views.plannedsession_create_view),
url(r'^sessions/multiclone/$',views.plannedsession_multiclone_view),
url(r'^sessions/multiclone/user/(?P<userid>\d+)/$',
@@ -546,47 +546,47 @@ urlpatterns = [
name='plannedsession_view'),
url(r'^sessions/(?P<id>\d+)/user/(?P<userid>\d+)/$',views.plannedsession_view,
name='plannedsession_view'),
url(r'^sessions/(?P<pk>\d+)/deleteconfirm$',login_required(
url(r'^sessions/(?P<pk>\d+)/deleteconfirm/$',login_required(
views.PlannedSessionDelete.as_view())),
url(r'^sessions/(?P<pk>\d+)/delete$',login_required(
url(r'^sessions/(?P<pk>\d+)/delete/$',login_required(
views.PlannedSessionDelete.as_view()),
name='plannedsession_delete_view'),
url(r'^sessions/manage/session/(?P<initialsession>\d+)/$',
views.plannedsessions_manage_view),
url(r'^sessions/manage/session/(?P<initialsession>\d+)/user/(?P<userid>\d+)/$',
views.plannedsessions_manage_view),
url(r'^sessions/manage/?$',
url(r'^sessions/manage/?/$',
views.plannedsessions_manage_view),
url(r'^sessions/manage/user/(?P<userid>\d+)/$',
views.plannedsessions_manage_view),
url(r'^sessions/coach/$',views.plannedsessions_coach_view),
url(r'^sessions/coach/user/\d+/$',views.plannedsessions_coach_view),
url(r'^sessions/print/?$',views.plannedsessions_print_view),
url(r'^sessions/print/?/$',views.plannedsessions_print_view),
url(r'^sessions/print/user/(?P<userid>\d+)/$',views.plannedsessions_print_view),
url(r'^sessions/sendcalendar/$',views.plannedsessions_icsemail_view),
url(r'^sessions/sendcalendar/user/(?P<userid>\d+)/$',views.plannedsessions_icsemail_view),
url(r'^sessions/$',views.plannedsessions_view),
url(r'^sessions/user/(?P<userid>\d+)$',views.plannedsessions_view),
url(r'^sessions/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)$',
url(r'^sessions/user/(?P<userid>\d+)/$',views.plannedsessions_view),
url(r'^sessions/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',
views.plannedsessions_view),
url(r'^sessions/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)$',
url(r'^sessions/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',
views.plannedsessions_view),
url(r'^courses/(?P<id>\d+)/edit$',views.course_edit_view,
url(r'^courses/(?P<id>\d+)/edit/$',views.course_edit_view,
name='course_edit_view'),
url(r'^courses/(?P<id>\d+)/delete$',views.course_delete_view),
url(r'^courses/(?P<id>\d+)/emailkml$',views.course_kmlemail_view),
url(r'^courses/(?P<id>\d+)/replace$',views.course_replace_view),
url(r'^courses/(?P<id>\d+)$',views.course_view),
url(r'^courses/(?P<id>\d+)/map$',views.course_map_view),
url(r'^courses/(?P<id>\d+)/delete/$',views.course_delete_view),
url(r'^courses/(?P<id>\d+)/emailkml/$',views.course_kmlemail_view),
url(r'^courses/(?P<id>\d+)/replace/$',views.course_replace_view),
url(r'^courses/(?P<id>\d+)/$',views.course_view),
url(r'^courses/(?P<id>\d+)/map/$',views.course_map_view),
# URLS to be created
url(r'^help$',TemplateView.as_view(template_name='help.html'), name='help'),
url(r'^help/$',TemplateView.as_view(template_name='help.html'), name='help'),
]
if settings.DEBUG:
urlpatterns += [
url(r'^testreverse/$',views.test_reverse_view),
url(r'^c2listug/(?P<page>\d+)$',views.c2listdebug_view),
url(r'^c2listug/(?P<page>\d+)/$',views.c2listdebug_view),
url(r'^c2listug/$',views.c2listdebug_view),
]

View File

@@ -4009,6 +4009,10 @@ def fitness_metric_view(request,mode='rower',days=42):
# test if not something already done
ms = PowerTimeFitnessMetric.objects.filter(user=request.user)
if not ms:
url = reverse(workouts_view)
return HttpResponseRedirect(url)
max_workout_id = max([m.last_workout for m in ms])
last_update_date = max([m.date.strftime('%Y-%m-%d') for m in ms])
@@ -9961,16 +9965,14 @@ def workout_flexchart3_view(request,*args,**kwargs):
workstrokesonly = not includereststrokes
flexaxesform = FlexAxesForm(request,request.POST)
print request.POST
if flexaxesform.is_valid():
print 'form valid'
cd = flexaxesform.cleaned_data
xparam = cd['xaxis']
yparam1 = cd['yaxis1']
yparam2 = cd['yaxis2']
else:
print flexaxesform.errors
pass
if not promember: