Private
Public Access
1
0

Merge branch 'release/v13.73'

This commit is contained in:
Sander Roosendaal
2020-08-04 22:00:36 +02:00
5 changed files with 50 additions and 21 deletions

View File

@@ -578,12 +578,16 @@ def course_length(course):
totaldist += 1000.*dist[0] totaldist += 1000.*dist[0]
vector = get_dir_vector(polygons[0],polygons[1]) try:
deltastart = get_delta(vector,polygons[0]) vector = get_dir_vector(polygons[0],polygons[1])
deltastart = get_delta(vector,polygons[0])
polygons = polygons.reverse() polygons = polygons.reverse()
vector = get_dir_vector(polygons[0],polygons[1]) vector = get_dir_vector(polygons[0],polygons[1])
deltafinish = get_delta(vector,polygons[0]) deltafinish = get_delta(vector,polygons[0])
except IndexError:
deltastart = 0
deltafinish = 0
return int(totaldist-deltastart-deltafinish) return int(totaldist-deltastart-deltafinish)
@@ -2644,14 +2648,31 @@ class VirtualRaceForm(ModelForm):
startdatetime startdatetime
) )
end_time = cd['end_time'] try:
end_time = cd['end_time']
except KeyError:
raise forms.ValidationError(
'Must have end time',
code='missing endtime'
)
if end_time is None: if end_time is None:
raise forms.ValidationError( raise forms.ValidationError(
'Must have end time', 'Must have end time',
code='missing endtime' code='missing endtime'
) )
end_date = cd['enddate'] try:
end_date = cd['enddate']
except KeyError:
raise forms.ValidationError(
'Missing or invalid end date',
code='missing end date'
)
enddatetime = datetime.datetime.combine(end_date,end_time) enddatetime = datetime.datetime.combine(end_date,end_time)
enddatetime = pytz.timezone(timezone_str).localize( enddatetime = pytz.timezone(timezone_str).localize(
enddatetime enddatetime

View File

@@ -147,8 +147,10 @@ def is_protrial(user):
return False return False
ispromember = is_promember | is_protrial ispromember = is_promember | is_protrial
can_have_teams = ispromember | is_coach can_have_teams = ispromember | is_coach
@rules.predicate @rules.predicate
@@ -202,8 +204,13 @@ def can_add_session(user):
def can_plan(user): def can_plan(user):
if user.is_anonymous: if user.is_anonymous:
return False return False
if user.rower.rowerplan in ['plan','coach']:
return user.rower.rowerplan in ['plan','coach','freecoach'] return True
if user.rower.rowerplan in ['basic','pro']:
return user.rower.plantrialexpires >= datetime.date.today()
if user.rower.rowerplan == 'freecoach':
if user.rower.mycoachgroup is not None:
return len(user.rower.mycoachgroup)>=4
# checks if rower is coach of user (or is user himself) # checks if rower is coach of user (or is user himself)
@rules.predicate @rules.predicate

View File

@@ -194,7 +194,7 @@
<p>The payload is application/json data and looks as follows:</p> <p>The payload is application/json data and looks as follows:</p>
<p><pre> <p><pre>
{'data': {"data":
[ [
{"distance":5, "power": 112, "hr": 132, "pace": 145800, "spm": 11, "time": 0}, {"distance":5, "power": 112, "hr": 132, "pace": 145800, "spm": 11, "time": 0},
{"distance":12, "power": 221, "hr": 131, "pace": 116400, "spm": 41, "time": 2200}, {"distance":12, "power": 221, "hr": 131, "pace": 116400, "spm": 41, "time": 2200},

View File

@@ -152,8 +152,8 @@ def createunderarmourworkoutdata(w):
haslatlon=1 haslatlon=1
try: try:
lat = row.df[' latitude'].tolist() lat = row.df[' latitude']
lon = row.df[' longitude'].tolist() lon = row.df[' longitude']
if not lat.std() and not lon.std(): if not lat.std() and not lon.std():
haslatlon = 0 haslatlon = 0
except KeyError: except KeyError:

View File

@@ -96,7 +96,7 @@ def strokedatajson_v2(request,id):
try: try:
id = int(id) id = int(id)
except ValueError: except ValueError:
return HttpResponse("Not a valid workout number",stauts=400) return HttpResponse("Not a valid workout number",status=400)
if request.method == 'GET': if request.method == 'GET':
columns = ['spm','time','hr','pace','power','distance'] columns = ['spm','time','hr','pace','power','distance']
@@ -112,9 +112,10 @@ def strokedatajson_v2(request,id):
if request.method == 'POST': if request.method == 'POST':
checkdata, r = dataprep.getrowdata_db(id=row.id) checkdata, r = dataprep.getrowdata_db(id=row.id)
if not checkdata.empty: if not checkdata.empty:
return HttpResponse("Duplicate Error",400) return HttpResponse("Duplicate Error",status=400)
df = pd.DataFrame() df = pd.DataFrame()
print(request.POST)
try: try:
df = pd.read_json(request.POST['data'],orient='split') df = pd.read_json(request.POST['data'],orient='split')
@@ -122,7 +123,7 @@ def strokedatajson_v2(request,id):
try: try:
df = pd.read_json(request.POST['strokedata'],orient='split') df = pd.read_json(request.POST['strokedata'],orient='split')
except: except:
return HttpResponse("No JSON object could be decoded",400) return HttpResponse("No JSON object could be decoded",status=400)
df.index = df.index.astype(int) df.index = df.index.astype(int)
df.sort_index(inplace=True) df.sort_index(inplace=True)
@@ -134,12 +135,12 @@ def strokedatajson_v2(request,id):
try: try:
time = df['t']/10. time = df['t']/10.
except KeyError: except KeyError:
return HttpResponse("Missing time",400) return HttpResponse("Missing time",status=400)
try: try:
spm = df['spm'] spm = df['spm']
except KeyError: except KeyError:
return HttpResponse("Missing spm",400) return HttpResponse("Missing spm",status=400)
try: try:
distance = df['distance'] distance = df['distance']
@@ -147,7 +148,7 @@ def strokedatajson_v2(request,id):
try: try:
distance = df['d']/10. distance = df['d']/10.
except KeyError: except KeyError:
return HttpResponse("Missing distance",400) return HttpResponse("Missing distance",status=400)
try: try:
pace = df['pace']/1.e3 pace = df['pace']/1.e3
@@ -155,7 +156,7 @@ def strokedatajson_v2(request,id):
try: try:
pace = df['p']/10. pace = df['p']/10.
except KeyError: except KeyError:
return HttpResponse("Missing pace",400) return HttpResponse("Missing pace",status=400)
@@ -320,13 +321,13 @@ def strokedatajson(request,id):
if request.method == 'POST': if request.method == 'POST':
checkdata,r = dataprep.getrowdata_db(id=row.id) checkdata,r = dataprep.getrowdata_db(id=row.id)
if not checkdata.empty: if not checkdata.empty:
return HttpResponse("Duplicate Error",409) return HttpResponse("Duplicate Error",status=409)
# strokedata = request.POST['strokedata'] # strokedata = request.POST['strokedata']
# checking/validating and cleaning # checking/validating and cleaning
try: try:
strokedata = json.loads(request.POST['strokedata']) strokedata = json.loads(request.POST['strokedata'])
except: except:
return HttpResponse("No JSON object could be decoded",400) return HttpResponse("No JSON object could be decoded",status=400)
df = pd.DataFrame(strokedata) df = pd.DataFrame(strokedata)
df.index = df.index.astype(int) df.index = df.index.astype(int)