Merge branch 'feature/editentry' into develop
This commit is contained in:
@@ -170,6 +170,7 @@ pytest-django==3.4.8
|
||||
pytest-forked==1.0.2
|
||||
pytest-runner==4.4
|
||||
pytest-sugar==0.9.2
|
||||
pytest-timeout==1.4.2
|
||||
pytest-xdist==1.27.0
|
||||
python-dateutil==2.8.0
|
||||
python-memcached==1.59
|
||||
|
||||
@@ -60,7 +60,7 @@ def updatecp(delta,cpvalues,r,workouttype='water'):
|
||||
|
||||
return 1
|
||||
|
||||
def cpfit(powerdf):
|
||||
def cpfit(powerdf,fraclimit=0.0001,nmax=1000):
|
||||
# Fit the data to thee parameter CP model
|
||||
fitfunc = lambda pars,x: abs(pars[0])/(1+(x/abs(pars[2]))) + abs(pars[1])/(1+(x/abs(pars[3])))
|
||||
errfunc = lambda pars,x,y: fitfunc(pars,x)-y
|
||||
@@ -96,11 +96,13 @@ def cpfit(powerdf):
|
||||
|
||||
frac = abs(ddmin)/fitpoints.mean()
|
||||
|
||||
while frac>0.0001:
|
||||
counter = 0
|
||||
while frac>fraclimit and counter<nmax:
|
||||
fitpoints = fitpoints*(fitpoints.mean()-ddmin)/(fitpoints.mean())
|
||||
dd = fitpoints-theavpower
|
||||
ddmin = dd.min()
|
||||
frac = abs(ddmin)/fitpoints.mean()
|
||||
counter += 1
|
||||
|
||||
ratio = fitpoints.mean()/fitpoints0.mean()
|
||||
|
||||
@@ -111,7 +113,7 @@ def getlogarr(maxt):
|
||||
#print(maxlog10,round(maxlog10))
|
||||
aantal = 10*round(maxlog10)
|
||||
logarr = np.arange(aantal+1)/10.
|
||||
|
||||
|
||||
res = []
|
||||
for la in logarr:
|
||||
try:
|
||||
|
||||
@@ -1064,6 +1064,26 @@ def race_can_submit(r,race):
|
||||
|
||||
return False
|
||||
|
||||
def race_can_editentry(r,race):
|
||||
start_time = race.start_time
|
||||
start_date = race.startdate
|
||||
startdatetime = datetime.combine(start_date,start_time)
|
||||
startdatetime = pytz.timezone(race.timezone).localize(
|
||||
startdatetime
|
||||
)
|
||||
evaluation_closure = race.evaluation_closure
|
||||
|
||||
if timezone.now() < evaluation_closure:
|
||||
is_complete,has_registered = race_rower_status(r,race)
|
||||
if is_complete == False:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
return False
|
||||
|
||||
def race_can_resubmit(r,race):
|
||||
records = VirtualRaceResult.objects.filter(
|
||||
userid=r.id,
|
||||
|
||||
@@ -158,6 +158,8 @@ class BoxPlotTest(TestCase):
|
||||
options['userid'] = 1
|
||||
options['plotfield'] = 'spm'
|
||||
options['rankingonly'] = False
|
||||
options['cpfit'] = 'data'
|
||||
options['piece'] = 4
|
||||
|
||||
session = self.c.session
|
||||
session['options'] = options
|
||||
@@ -1065,6 +1067,8 @@ class WorkoutStatsTestNew(TestCase):
|
||||
'spmmax':55,
|
||||
'workmin':0,
|
||||
'workmax':1500,
|
||||
'cpfit':'data',
|
||||
'piece': 4,
|
||||
'includereststrokes':False,
|
||||
'modality':'all',
|
||||
'waterboattype':['1x','2x','4x'],
|
||||
|
||||
@@ -4,6 +4,7 @@ from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .statements import *
|
||||
from django.db import transaction
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
|
||||
@@ -144,57 +145,59 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
def test_joins(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
with transaction.atomic():
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = reverse('workouts_join_select')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
url = reverse('workouts_join_select')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
d1 = self.werg1.date-datetime.timedelta(days=2)
|
||||
d2 = self.werg2.date+datetime.timedelta(days=2)
|
||||
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')
|
||||
}
|
||||
date_form_data = {
|
||||
'startdate': d1.strftime('%Y-%m%d'),
|
||||
'enddate': d2.strftime('%Y-%m%d')
|
||||
}
|
||||
|
||||
response = self.c.post(url,date_form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.post(url,date_form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
url = reverse('workouts_join_view')
|
||||
url = reverse('workouts_join_view')
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = reverse('workouts_join_select')
|
||||
self.assertRedirects(response,
|
||||
expected_url = reverse('workouts_join_select')
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,
|
||||
target_status_code=200)
|
||||
|
||||
form_data = {
|
||||
'workout_name': 'joined',
|
||||
'set_private': False,
|
||||
'workouts': [str(self.werg1.id),str(self.werg2.id),str(self.werg3.id)],
|
||||
form_data = {
|
||||
'workout_name': 'joined',
|
||||
'set_private': False,
|
||||
'workouts': [str(self.werg1.id),str(self.werg2.id),str(self.werg3.id)],
|
||||
}
|
||||
|
||||
form = WorkoutMultipleCompareForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
form = WorkoutMultipleCompareForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
form = WorkoutJoinParamForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
form = WorkoutJoinParamForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = reverse(self.r.defaultlandingpage,
|
||||
expected_url = reverse(self.r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(12)
|
||||
})
|
||||
|
||||
self.assertRedirects(response,
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@@ -485,27 +488,29 @@ class WorkoutViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db)
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
def test_workout_split(self, mocked_sqlalchemy, mocked_getsmallrowdata_db,
|
||||
mocked_getrowdata_db):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
with transaction.atomic():
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = reverse('workout_split_view',kwargs={'id':encoder.encode_hex(self.werg1.id)})
|
||||
url = reverse('workout_split_view',kwargs={'id':encoder.encode_hex(self.werg1.id)})
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
form_data = {
|
||||
'splittime': '2:00',
|
||||
'splitmode': ['keep original','keep first','keep second']
|
||||
}
|
||||
form_data = {
|
||||
'splittime': '2:00',
|
||||
'splitmode': ['keep original','keep first','keep second']
|
||||
}
|
||||
|
||||
form = WorkoutSplitForm(form_data)
|
||||
form = WorkoutSplitForm(form_data)
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post(url, form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.post(url, form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db)
|
||||
|
||||
@@ -3380,7 +3380,7 @@ def virtualevent_entry_edit_view(request,id=0,entryid=0):
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if not race_can_submit(r,race):
|
||||
if not race_can_editentry(r,race):
|
||||
messages.error(request,'You cannot change your entries for this challenge')
|
||||
url = reverse('virtualevent_view',
|
||||
kwargs={'id':race.id}
|
||||
|
||||
Reference in New Issue
Block a user