team manager can upload on behalf of team member
This commit is contained in:
183
rowers/views.py
183
rowers/views.py
@@ -14,7 +14,10 @@ from django.http import (
|
||||
HttpResponseNotFound,Http404
|
||||
)
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from rowers.forms import LoginForm,DocumentsForm,UploadOptionsForm
|
||||
from rowers.forms import (
|
||||
LoginForm,DocumentsForm,UploadOptionsForm,
|
||||
TeamUploadOptionsForm,
|
||||
)
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.template import RequestContext
|
||||
@@ -5350,6 +5353,183 @@ def workout_upload_view(request,message="",
|
||||
'optionsform': optionsform,
|
||||
'message':message})
|
||||
|
||||
# This is the main view for processing uploaded files
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
def team_workout_upload_view(request,message="",
|
||||
successmessage="",
|
||||
uploadoptions={
|
||||
'make_plot':False,
|
||||
'plottype':'timeplot',
|
||||
}):
|
||||
|
||||
if 'uploadoptions' in request.session:
|
||||
uploadoptions = request.session['uploadoptions']
|
||||
else:
|
||||
request.session['uploadoptions'] = uploadoptions
|
||||
|
||||
|
||||
myteams = Team.objects.filter(manager=request.user)
|
||||
|
||||
make_plot = uploadoptions['make_plot']
|
||||
plottype = uploadoptions['plottype']
|
||||
|
||||
r = Rower.objects.get(user=request.user)
|
||||
if request.method == 'POST':
|
||||
form = DocumentsForm(request.POST,request.FILES)
|
||||
optionsform = TeamUploadOptionsForm(request.POST)
|
||||
|
||||
rowerform = TeamInviteForm(request.POST)
|
||||
rowerform.fields.pop('email')
|
||||
rowerform.fields['user'].queryset = User.objects.filter(rower__isnull=False,rower__team__in=myteams).distinct()
|
||||
if form.is_valid():
|
||||
f = request.FILES['file']
|
||||
res = handle_uploaded_file(f)
|
||||
t = form.cleaned_data['title']
|
||||
if rowerform.is_valid():
|
||||
u = rowerform.cleaned_data['user']
|
||||
if u:
|
||||
r = Rower.objects.get(user=u)
|
||||
else:
|
||||
message = 'Please select a rower'
|
||||
response = render(request,
|
||||
'team_document_form.html',
|
||||
{'form':form,
|
||||
'teams':get_my_teams(request.user),
|
||||
'optionsform': optionsform,
|
||||
'rowerform': rowerform,
|
||||
'message':message,
|
||||
'successmessage':successmessage,
|
||||
})
|
||||
|
||||
return response
|
||||
|
||||
workouttype = form.cleaned_data['workouttype']
|
||||
|
||||
notes = form.cleaned_data['notes']
|
||||
|
||||
if optionsform.is_valid():
|
||||
make_plot = optionsform.cleaned_data['make_plot']
|
||||
plottype = optionsform.cleaned_data['plottype']
|
||||
|
||||
uploadoptions = {
|
||||
'makeprivate':False,
|
||||
'make_plot':make_plot,
|
||||
'plottype':plottype,
|
||||
'upload_to_C2':False,
|
||||
}
|
||||
|
||||
|
||||
request.session['uploadoptions'] = uploadoptions
|
||||
|
||||
f1 = res[0] # file name
|
||||
f2 = res[1] # file name incl media directory
|
||||
|
||||
|
||||
id,message,f2 = dataprep.new_workout_from_file(r,f2,
|
||||
workouttype=workouttype,
|
||||
makeprivate=False,
|
||||
title = t,
|
||||
notes='')
|
||||
if not id:
|
||||
url = reverse(team_workout_upload_view,
|
||||
args=[str(message)])
|
||||
response = HttpResponseRedirect(url)
|
||||
return response
|
||||
|
||||
else:
|
||||
if message:
|
||||
successmessage = "The workout was added to the user's account"
|
||||
url = reverse(team_workout_upload_view,
|
||||
kwargs = {
|
||||
'message':message,
|
||||
'successmessage':successmessage,
|
||||
})
|
||||
else:
|
||||
successmessage = "The workout was added to the user's account"
|
||||
url = reverse(team_workout_upload_view,
|
||||
kwargs = {
|
||||
'successmessage':successmessage,
|
||||
})
|
||||
|
||||
response = HttpResponseRedirect(url)
|
||||
w = Workout.objects.get(id=id)
|
||||
|
||||
if (make_plot):
|
||||
imagename = f1[:-4]+'.png'
|
||||
fullpathimagename = 'static/plots/'+imagename
|
||||
powerperc = 100*np.array([r.pw_ut2,
|
||||
r.pw_ut1,
|
||||
r.pw_at,
|
||||
r.pw_tr,r.pw_an])/r.ftp
|
||||
|
||||
hrpwrdata = {
|
||||
'hrmax':r.max,
|
||||
'hrut2':r.ut2,
|
||||
'hrut1':r.ut1,
|
||||
'hrat':r.at,
|
||||
'hrtr':r.tr,
|
||||
'hran':r.an,
|
||||
'ftp':r.ftp,
|
||||
'powerperc':serialize_list(powerperc),
|
||||
'powerzones':serialize_list(r.powerzones),
|
||||
}
|
||||
|
||||
# make plot - asynchronous task
|
||||
plotnrs = {
|
||||
'timeplot':1,
|
||||
'distanceplot':2,
|
||||
'pieplot':3,
|
||||
}
|
||||
|
||||
plotnr = plotnrs[plottype]
|
||||
if (workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
|
||||
if settings.DEBUG:
|
||||
res = handle_makeplot.delay(f1,f2,t,
|
||||
hrpwrdata,plotnr,
|
||||
imagename)
|
||||
else:
|
||||
res = queue.enqueue(handle_makeplot,f1,f2,
|
||||
t,hrpwrdata,
|
||||
plotnr,imagename)
|
||||
|
||||
|
||||
i = GraphImage(workout=w,
|
||||
creationdatetime=timezone.now(),
|
||||
filename=fullpathimagename)
|
||||
i.save()
|
||||
|
||||
|
||||
|
||||
else:
|
||||
response = render(request,
|
||||
'team_document_form.html',
|
||||
{'form':form,
|
||||
'teams':get_my_teams(request.user),
|
||||
'optionsform': optionsform,
|
||||
'rowerform': rowerform,
|
||||
'message':message,
|
||||
'successmessage':successmessage,
|
||||
})
|
||||
|
||||
return response
|
||||
else:
|
||||
form = DocumentsForm()
|
||||
optionsform = TeamUploadOptionsForm(initial=uploadoptions)
|
||||
rowerform = TeamInviteForm()
|
||||
rowerform.fields.pop('email')
|
||||
rowerform.fields['user'].queryset = User.objects.filter(rower__isnull=False,rower__team__in=myteams).distinct()
|
||||
return render(request, 'team_document_form.html',
|
||||
{'form':form,
|
||||
'teams':get_my_teams(request.user),
|
||||
'optionsform': optionsform,
|
||||
'rowerform':rowerform,
|
||||
'message':message,
|
||||
'successmessage':successmessage,
|
||||
})
|
||||
|
||||
|
||||
|
||||
# Ask the user if he really wants to delete the workout
|
||||
@@ -6434,6 +6614,7 @@ def rower_teams_view(request,message='',successmessage=''):
|
||||
'successmessage':successmessage,
|
||||
'myinvites':myinvites,
|
||||
})
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
def invitation_revoke_view(request,id):
|
||||
res,text = teams.revoke_invite(request.user,id)
|
||||
|
||||
Reference in New Issue
Block a user