Merge branch 'develop' into feature/coachreports
This commit is contained in:
@@ -155,7 +155,7 @@ def alert_get_stats(alert,nperiod=0):
|
|||||||
mask = df[alert.measured.metric] > alert.measured.value1
|
mask = df[alert.measured.metric] > alert.measured.value1
|
||||||
df2 = df[mask].copy()
|
df2 = df[mask].copy()
|
||||||
elif alert.measured.condition == '<':
|
elif alert.measured.condition == '<':
|
||||||
mask = df[alert.measured.metric] > alert.measured.value1
|
mask = df[alert.measured.metric] < alert.measured.value1
|
||||||
df2 = df[mask].copy()
|
df2 = df[mask].copy()
|
||||||
elif alert.measured.condition == 'between':
|
elif alert.measured.condition == 'between':
|
||||||
mask = df[alert.measured.metric] > alert.measured.value1
|
mask = df[alert.measured.metric] > alert.measured.value1
|
||||||
|
|||||||
@@ -1123,7 +1123,6 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
inboard=inboard, oarlength=oarlength,
|
inboard=inboard, oarlength=oarlength,
|
||||||
timezone=timezone_str,
|
timezone=timezone_str,
|
||||||
privacy=privacy)
|
privacy=privacy)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
w.save()
|
w.save()
|
||||||
except ValidationError:
|
except ValidationError:
|
||||||
@@ -1391,9 +1390,10 @@ def new_workout_from_file(r, f2,
|
|||||||
|
|
||||||
if workoutsource is None:
|
if workoutsource is None:
|
||||||
workoutsource = fileformat
|
workoutsource = fileformat
|
||||||
|
|
||||||
id, message = save_workout_database(
|
id, message = save_workout_database(
|
||||||
f2, r,
|
f2, r,
|
||||||
|
notes=notes,
|
||||||
workouttype=workouttype,
|
workouttype=workouttype,
|
||||||
weightcategory=r.weightcategory,
|
weightcategory=r.weightcategory,
|
||||||
adaptiveclass=r.adaptiveclass,
|
adaptiveclass=r.adaptiveclass,
|
||||||
|
|||||||
@@ -39,7 +39,9 @@
|
|||||||
{{ form.as_table }}
|
{{ form.as_table }}
|
||||||
</table>
|
</table>
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input class="button green" type="submit" value="Submit">
|
<p>
|
||||||
|
<input type="submit" value="Submit">
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
@@ -201,9 +203,15 @@ $('#id_workouttype').change();
|
|||||||
if ($(this).attr('id') == 'id_file') {
|
if ($(this).attr('id') == 'id_file') {
|
||||||
data.set("file",this.files[0]);
|
data.set("file",this.files[0]);
|
||||||
}
|
}
|
||||||
console.log($(this).attr('name'),$(this).val());
|
console.log($(this).attr('id'),$(this).attr('name'),$(this).val());
|
||||||
};
|
};
|
||||||
});});
|
});});
|
||||||
|
|
||||||
|
$('textarea').each(function( i ) {
|
||||||
|
$(this).change(function() {
|
||||||
|
data.set($(this).attr('name'),$(this).val());
|
||||||
|
console.log($(this).attr('id'),$(this).attr('name'),$(this).val());
|
||||||
|
});});
|
||||||
|
|
||||||
$('select').each(function( i ) {
|
$('select').each(function( i ) {
|
||||||
console.log($(this).attr('name'),$(this).val());
|
console.log($(this).attr('name'),$(this).val());
|
||||||
@@ -213,7 +221,7 @@ $('#id_workouttype').change();
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
frm.submit(function() {
|
frm.submit(function() {
|
||||||
console.log("Form submission");
|
console.log("Form submission");
|
||||||
$(data.values()).each(function(value) {
|
$(data.values()).each(function(value) {
|
||||||
console.log(value);
|
console.log(value);
|
||||||
|
|||||||
@@ -111,7 +111,6 @@ def response_error_handler(request, exception=None):
|
|||||||
return HttpResponse('Error handler content', status=403)
|
return HttpResponse('Error handler content', status=403)
|
||||||
|
|
||||||
def filenotfound_handler(request, exception=None):
|
def filenotfound_handler(request, exception=None):
|
||||||
print('noot')
|
|
||||||
return HttpResponse('Error handler content', status=404)
|
return HttpResponse('Error handler content', status=404)
|
||||||
|
|
||||||
handler403 = views.error403_view
|
handler403 = views.error403_view
|
||||||
@@ -381,11 +380,11 @@ urlpatterns = [
|
|||||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/addstatic/(?P<plotnr>\d+)/$',
|
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/addstatic/(?P<plotnr>\d+)/$',
|
||||||
views.workout_add_chart_view,name='workout_add_chart_view'),
|
views.workout_add_chart_view,name='workout_add_chart_view'),
|
||||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/addstatic/$',views.workout_add_chart_view,name='workout_add_chart_view'),
|
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/addstatic/$',views.workout_add_chart_view,name='workout_add_chart_view'),
|
||||||
re_path(r'^workout/(?P<pk>\d+)/delete/$',login_required(
|
re_path(r'^workout/(?P<pk>\b[0-9A-Fa-f]+\b)/delete/$',login_required(
|
||||||
views.WorkoutDelete.as_view()),
|
views.WorkoutDelete.as_view()),
|
||||||
name='workout_delete'),
|
name='workout_delete'),
|
||||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/delete/$',login_required(
|
# re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/delete/$',login_required(
|
||||||
views.workout_code_delete_view),name='workout_code_delete'),
|
# views.workout_code_delete_view),name='workout_code_delete'),
|
||||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/smoothenpace/$',views.workout_smoothenpace_view,name='workout_smoothenpace_view'),
|
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/smoothenpace/$',views.workout_smoothenpace_view,name='workout_smoothenpace_view'),
|
||||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/undosmoothenpace/$',views.workout_undo_smoothenpace_view,name='workout_undo_smoothenpace_view'),
|
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/undosmoothenpace/$',views.workout_undo_smoothenpace_view,name='workout_undo_smoothenpace_view'),
|
||||||
re_path(r'^workout/c2import/$',views.workout_c2import_view,name='workout_c2import_view'),
|
re_path(r'^workout/c2import/$',views.workout_c2import_view,name='workout_c2import_view'),
|
||||||
|
|||||||
@@ -936,10 +936,10 @@ def rowhascoordinates(row):
|
|||||||
def rdata(file,rower=rrower()):
|
def rdata(file,rower=rrower()):
|
||||||
try:
|
try:
|
||||||
res = rrdata(csvfile=file,rower=rower)
|
res = rrdata(csvfile=file,rower=rower)
|
||||||
except (IOError, IndexError):
|
except (IOError, IndexError, EOFError):
|
||||||
try:
|
try:
|
||||||
res = rrdata(csvfile=file+'.gz',rower=rower)
|
res = rrdata(csvfile=file+'.gz',rower=rower)
|
||||||
except (IOError, IndexError):
|
except (IOError, IndexError, EOFError):
|
||||||
res = 0
|
res = 0
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|||||||
@@ -3900,6 +3900,11 @@ def workout_upload_view(request,
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
boattype = '1x'
|
boattype = '1x'
|
||||||
|
|
||||||
|
try:
|
||||||
|
notes = docformoptions['notes']
|
||||||
|
except KeyError:
|
||||||
|
notes = ''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
workoutsource = uploadoptions['workoutsource']
|
workoutsource = uploadoptions['workoutsource']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -4028,7 +4033,7 @@ def workout_upload_view(request,
|
|||||||
boattype=boattype,
|
boattype=boattype,
|
||||||
makeprivate=makeprivate,
|
makeprivate=makeprivate,
|
||||||
title = t,
|
title = t,
|
||||||
notes=''
|
notes=notes,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
workoutsbox = Mailbox.objects.filter(name='workouts')[0]
|
workoutsbox = Mailbox.objects.filter(name='workouts')[0]
|
||||||
@@ -4317,8 +4322,20 @@ def team_workout_upload_view(request,message="",
|
|||||||
|
|
||||||
rowerform.fields['user'].queryset = User.objects.filter(rower__in=rowers).distinct()
|
rowerform.fields['user'].queryset = User.objects.filter(rower__in=rowers).distinct()
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
f = request.FILES['file']
|
f = request.FILES.get('file',False)
|
||||||
res = handle_uploaded_file(f)
|
if f:
|
||||||
|
res = handle_uploaded_file(f)
|
||||||
|
else:
|
||||||
|
messages.error(request,'No file attached')
|
||||||
|
response = render(request,
|
||||||
|
'team_document_form.html',
|
||||||
|
{'form':form,
|
||||||
|
'teams':get_my_teams(request.user),
|
||||||
|
'optionsform':optionsform,
|
||||||
|
'rowerform':rowerform,
|
||||||
|
})
|
||||||
|
return response
|
||||||
|
|
||||||
t = form.cleaned_data['title']
|
t = form.cleaned_data['title']
|
||||||
offline = form.cleaned_data['offline']
|
offline = form.cleaned_data['offline']
|
||||||
boattype = form.cleaned_data['boattype']
|
boattype = form.cleaned_data['boattype']
|
||||||
@@ -4847,9 +4864,14 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
formvalues = {}
|
formvalues = {}
|
||||||
form = SummaryStringForm()
|
form = SummaryStringForm()
|
||||||
|
|
||||||
tss,normp = dataprep.workout_rscore(row)
|
tss = row.rscore
|
||||||
|
normp = row.normp
|
||||||
|
normv = row.normv
|
||||||
|
normw = row.normw
|
||||||
|
|
||||||
normv,normw = dataprep.workout_normv(row,pp=8.0)
|
if tss == -1:
|
||||||
|
tss,normp = dataprep.workout_rscore(row)
|
||||||
|
normv,normw = dataprep.workout_normv(row,pp=8.0)
|
||||||
|
|
||||||
work = int(normw)
|
work = int(normw)
|
||||||
power = int(normp)
|
power = int(normp)
|
||||||
@@ -5277,7 +5299,11 @@ class GraphDelete(DeleteView):
|
|||||||
def workout_code_delete_view(request,id=0):
|
def workout_code_delete_view(request,id=0):
|
||||||
pk = encoder.decode_hex(id)
|
pk = encoder.decode_hex(id)
|
||||||
|
|
||||||
url = reverse('workout_delete',kwargs={'pk':pk})
|
try:
|
||||||
|
w = Workout.objects.get(pk=pk)
|
||||||
|
url = reverse('workout_delete',kwargs={'pk':pk})
|
||||||
|
except Workout.DoesNotExist:
|
||||||
|
url = reverse('workout_delete',kwargs={'pk':id})
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@@ -5329,7 +5355,16 @@ class WorkoutDelete(DeleteView):
|
|||||||
return reverse('workouts_view')
|
return reverse('workouts_view')
|
||||||
|
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super(WorkoutDelete, self).get_object(*args, **kwargs)
|
workout_pk = self.kwargs['pk']
|
||||||
|
try:
|
||||||
|
obj = Workout.objects.get(pk=workout_pk)
|
||||||
|
except (ValueError,Workout.DoesNotExist):
|
||||||
|
workout_pk = encoder.decode_hex(workout_pk)
|
||||||
|
try:
|
||||||
|
obj = Workout.objects.get(pk=workout_pk)
|
||||||
|
except Workout.DoesNotExist:
|
||||||
|
raise Http404("One of the workouts doesn't exist")
|
||||||
|
# obj = super(WorkoutDelete, self).get_object(*args, **kwargs)
|
||||||
if not checkaccessuser(self.request.user,obj.user):
|
if not checkaccessuser(self.request.user,obj.user):
|
||||||
raise PermissionDenied('You are not allowed to delete this workout')
|
raise PermissionDenied('You are not allowed to delete this workout')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user