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
|
||||
df2 = df[mask].copy()
|
||||
elif alert.measured.condition == '<':
|
||||
mask = df[alert.measured.metric] > alert.measured.value1
|
||||
mask = df[alert.measured.metric] < alert.measured.value1
|
||||
df2 = df[mask].copy()
|
||||
elif alert.measured.condition == 'between':
|
||||
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,
|
||||
timezone=timezone_str,
|
||||
privacy=privacy)
|
||||
|
||||
try:
|
||||
w.save()
|
||||
except ValidationError:
|
||||
@@ -1391,9 +1390,10 @@ def new_workout_from_file(r, f2,
|
||||
|
||||
if workoutsource is None:
|
||||
workoutsource = fileformat
|
||||
|
||||
|
||||
id, message = save_workout_database(
|
||||
f2, r,
|
||||
notes=notes,
|
||||
workouttype=workouttype,
|
||||
weightcategory=r.weightcategory,
|
||||
adaptiveclass=r.adaptiveclass,
|
||||
|
||||
@@ -39,7 +39,9 @@
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
{% csrf_token %}
|
||||
<input class="button green" type="submit" value="Submit">
|
||||
<p>
|
||||
<input type="submit" value="Submit">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
@@ -201,9 +203,15 @@ $('#id_workouttype').change();
|
||||
if ($(this).attr('id') == 'id_file') {
|
||||
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 ) {
|
||||
console.log($(this).attr('name'),$(this).val());
|
||||
@@ -213,7 +221,7 @@ $('#id_workouttype').change();
|
||||
});
|
||||
});
|
||||
|
||||
frm.submit(function() {
|
||||
frm.submit(function() {
|
||||
console.log("Form submission");
|
||||
$(data.values()).each(function(value) {
|
||||
console.log(value);
|
||||
|
||||
@@ -111,7 +111,6 @@ def response_error_handler(request, exception=None):
|
||||
return HttpResponse('Error handler content', status=403)
|
||||
|
||||
def filenotfound_handler(request, exception=None):
|
||||
print('noot')
|
||||
return HttpResponse('Error handler content', status=404)
|
||||
|
||||
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+)/$',
|
||||
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()),
|
||||
name='workout_delete'),
|
||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/delete/$',login_required(
|
||||
views.workout_code_delete_view),name='workout_code_delete'),
|
||||
# re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/delete/$',login_required(
|
||||
# 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)/undosmoothenpace/$',views.workout_undo_smoothenpace_view,name='workout_undo_smoothenpace_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()):
|
||||
try:
|
||||
res = rrdata(csvfile=file,rower=rower)
|
||||
except (IOError, IndexError):
|
||||
except (IOError, IndexError, EOFError):
|
||||
try:
|
||||
res = rrdata(csvfile=file+'.gz',rower=rower)
|
||||
except (IOError, IndexError):
|
||||
except (IOError, IndexError, EOFError):
|
||||
res = 0
|
||||
|
||||
return res
|
||||
|
||||
@@ -3900,6 +3900,11 @@ def workout_upload_view(request,
|
||||
except KeyError:
|
||||
boattype = '1x'
|
||||
|
||||
try:
|
||||
notes = docformoptions['notes']
|
||||
except KeyError:
|
||||
notes = ''
|
||||
|
||||
try:
|
||||
workoutsource = uploadoptions['workoutsource']
|
||||
except KeyError:
|
||||
@@ -4028,7 +4033,7 @@ def workout_upload_view(request,
|
||||
boattype=boattype,
|
||||
makeprivate=makeprivate,
|
||||
title = t,
|
||||
notes=''
|
||||
notes=notes,
|
||||
)
|
||||
else:
|
||||
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()
|
||||
if form.is_valid():
|
||||
f = request.FILES['file']
|
||||
res = handle_uploaded_file(f)
|
||||
f = request.FILES.get('file',False)
|
||||
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']
|
||||
offline = form.cleaned_data['offline']
|
||||
boattype = form.cleaned_data['boattype']
|
||||
@@ -4847,9 +4864,14 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
||||
formvalues = {}
|
||||
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)
|
||||
power = int(normp)
|
||||
@@ -5277,7 +5299,11 @@ class GraphDelete(DeleteView):
|
||||
def workout_code_delete_view(request,id=0):
|
||||
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)
|
||||
|
||||
@@ -5329,7 +5355,16 @@ class WorkoutDelete(DeleteView):
|
||||
return reverse('workouts_view')
|
||||
|
||||
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):
|
||||
raise PermissionDenied('You are not allowed to delete this workout')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user