commit
This commit is contained in:
@@ -1,14 +1,13 @@
|
||||
from rowers.views.statements import *
|
||||
|
||||
# Export workout to TCX and send to user's email address
|
||||
@permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True)
|
||||
def workout_tcxemail_view(request,id=0):
|
||||
|
||||
|
||||
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
|
||||
def workout_tcxemail_view(request, id=0):
|
||||
r = getrower(request.user)
|
||||
w = get_workout(id)
|
||||
|
||||
|
||||
|
||||
|
||||
row = rdata(csvfile=w.csvfilename)
|
||||
|
||||
code = str(uuid4())
|
||||
@@ -16,7 +15,7 @@ def workout_tcxemail_view(request,id=0):
|
||||
|
||||
row.exporttotcx(tcxfilename)
|
||||
|
||||
with open(tcxfilename,'r') as f:
|
||||
with open(tcxfilename, 'r') as f:
|
||||
response = HttpResponse(f)
|
||||
response['Content-Disposition'] = 'attachment; filename="%s"' % tcxfilename
|
||||
response['Content-Type'] = 'application/octet-stream'
|
||||
@@ -25,131 +24,129 @@ def workout_tcxemail_view(request,id=0):
|
||||
return response
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@login_required()
|
||||
def plannedsessions_icsemail_view(request,userid=0):
|
||||
r = getrequestrower(request,userid=userid)
|
||||
startdate,enddate = get_dates_timeperiod(request)
|
||||
def plannedsessions_icsemail_view(request, userid=0):
|
||||
r = getrequestrower(request, userid=userid)
|
||||
startdate, enddate = get_dates_timeperiod(request)
|
||||
startdate = startdate.date()
|
||||
enddate = enddate.date()
|
||||
|
||||
sps = get_sessions(r,startdate=startdate,enddate=enddate)
|
||||
sps = get_sessions(r, startdate=startdate, enddate=enddate)
|
||||
|
||||
cal = Calendar()
|
||||
cal.add('prodid','rowsandall')
|
||||
cal.add('version','1.0')
|
||||
cal.add('prodid', 'rowsandall')
|
||||
cal.add('version', '1.0')
|
||||
|
||||
for ps in sps:
|
||||
event = Event()
|
||||
comment = '{d} {u} {c}'.format(
|
||||
d=ps.sessionvalue,
|
||||
u = ps.sessionunit,
|
||||
c = ps.criterium)
|
||||
event.add('summary',ps.name)
|
||||
event.add('dtstart',ps.preferreddate)
|
||||
event.add('dtend',ps.preferreddate)
|
||||
u=ps.sessionunit,
|
||||
c=ps.criterium)
|
||||
event.add('summary', ps.name)
|
||||
event.add('dtstart', ps.preferreddate)
|
||||
event.add('dtend', ps.preferreddate)
|
||||
event['uid'] = 'plannedsession_'+str(ps.id)
|
||||
event.add('description',ps.comment)
|
||||
event.add('comment',comment)
|
||||
event.add('description', ps.comment)
|
||||
event.add('comment', comment)
|
||||
cal.add_component(event)
|
||||
|
||||
|
||||
response = HttpResponse(cal.to_ical())
|
||||
response['Content-Disposition'] = 'attachment; filename="training_plan_{u}_{d1}_{d2}.ics"'.format(
|
||||
u = request.user.username,
|
||||
d1 = startdate.strftime("%Y%m%d"),
|
||||
d2 = enddate.strftime("%Y%m%d"),
|
||||
)
|
||||
u=request.user.username,
|
||||
d1=startdate.strftime("%Y%m%d"),
|
||||
d2=enddate.strftime("%Y%m%d"),
|
||||
)
|
||||
|
||||
response['Content-Type'] = 'application/octet-stream'
|
||||
|
||||
return response
|
||||
|
||||
|
||||
@login_required()
|
||||
def plannedsessions_coach_icsemail_view(request,userid=0):
|
||||
therower = getrequestplanrower(request,userid=userid)
|
||||
startdate,enddate = get_dates_timeperiod(request)
|
||||
def plannedsessions_coach_icsemail_view(request, userid=0):
|
||||
therower = getrequestplanrower(request, userid=userid)
|
||||
startdate, enddate = get_dates_timeperiod(request)
|
||||
startdate = startdate.date()
|
||||
enddate = enddate.date()
|
||||
if 'coach' in request.user.rower.rowerplan:
|
||||
sps = get_sessions_manager(request.user,teamid=0,
|
||||
sps = get_sessions_manager(request.user, teamid=0,
|
||||
enddate=enddate,
|
||||
startdate=startdate)
|
||||
else: # pragma: no cover
|
||||
else: # pragma: no cover
|
||||
rteams = therower.team.filter(viewing='allmembers')
|
||||
sps = get_sessions(therower,startdate=startdate,enddate=enddate)
|
||||
sps = get_sessions(therower, startdate=startdate, enddate=enddate)
|
||||
|
||||
if therower.rowerplan != 'freecoach':
|
||||
rowers = [therower]
|
||||
else: # pragma: no cover
|
||||
else: # pragma: no cover
|
||||
rowers = []
|
||||
|
||||
for ps in sps: # pragma: no cover
|
||||
for ps in sps: # pragma: no cover
|
||||
if 'coach' in request.user.rower.rowerplan:
|
||||
rowers += ps.rower.all().exclude(rowerplan='freecoach')
|
||||
else:
|
||||
rowers += ps.rower.filter(team__in=rteams).exclude(rowerplan='freecoach')
|
||||
rowers += ps.rower.filter(
|
||||
team__in=rteams).exclude(rowerplan='freecoach')
|
||||
|
||||
rowers = list(set(rowers))
|
||||
|
||||
cal = Calendar()
|
||||
cal.add('prodid','rowsandall')
|
||||
cal.add('version','1.0')
|
||||
cal.add('prodid', 'rowsandall')
|
||||
cal.add('version', '1.0')
|
||||
|
||||
for ps in sps: # pragma: no cover
|
||||
for ps in sps: # pragma: no cover
|
||||
event = Event()
|
||||
comment = '{d} {u} {c}'.format(
|
||||
d=ps.sessionvalue,
|
||||
u = ps.sessionunit,
|
||||
c = ps.criterium)
|
||||
event.add('summary',ps.name)
|
||||
event.add('dtstart',ps.preferreddate)
|
||||
event.add('dtend',ps.preferreddate)
|
||||
u=ps.sessionunit,
|
||||
c=ps.criterium)
|
||||
event.add('summary', ps.name)
|
||||
event.add('dtstart', ps.preferreddate)
|
||||
event.add('dtend', ps.preferreddate)
|
||||
event['uid'] = 'plannedsession_'+str(ps.id)
|
||||
event.add('description',ps.comment)
|
||||
event.add('comment',comment)
|
||||
event.add('description', ps.comment)
|
||||
event.add('comment', comment)
|
||||
cal.add_component(event)
|
||||
|
||||
|
||||
icalstring = cal.to_ical()
|
||||
fname = "media/training_plan_{d1}_{d2}".format(
|
||||
d1 = startdate.strftime("%Y%m%d"),
|
||||
d2 = enddate.strftime("%Y%m%d"),
|
||||
)
|
||||
d1=startdate.strftime("%Y%m%d"),
|
||||
d2=enddate.strftime("%Y%m%d"),
|
||||
)
|
||||
|
||||
url = reverse('plannedsessions_coach_view')+'?when={d1}/{d2}'.format(
|
||||
d1 = startdate.strftime("%Y-%m-%d"),
|
||||
d2 = enddate.strftime("%Y-%m-%d"),
|
||||
)
|
||||
d1=startdate.strftime("%Y-%m-%d"),
|
||||
d2=enddate.strftime("%Y-%m-%d"),
|
||||
)
|
||||
|
||||
for rower in rowers:
|
||||
fname2 = fname+"_{u}.ics".format(u=rower.id)
|
||||
with open(fname2,'wb') as fop:
|
||||
with open(fname2, 'wb') as fop:
|
||||
fop.write(icalstring)
|
||||
|
||||
job = myqueue(queue,handle_sendemail_ical,
|
||||
job = myqueue(queue, handle_sendemail_ical,
|
||||
rower.user.first_name,
|
||||
rower.user.last_name,
|
||||
rower.user.email,
|
||||
url,
|
||||
fname2,debug=False)
|
||||
fname2, debug=False)
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@login_required()
|
||||
def course_kmldownload_view(request,id=0):
|
||||
def course_kmldownload_view(request, id=0):
|
||||
r = getrower(request.user)
|
||||
if r.emailbounced: # pragma: no cover
|
||||
if r.emailbounced: # pragma: no cover
|
||||
message = "Please check your email address first. Email to this address bounced."
|
||||
messages.error(request,message)
|
||||
messages.error(request, message)
|
||||
return HttpResponseRedirect(
|
||||
reverse('course_view',
|
||||
kwargs = {
|
||||
'id':str(id),
|
||||
})
|
||||
)
|
||||
kwargs={
|
||||
'id': str(id),
|
||||
})
|
||||
)
|
||||
|
||||
course = GeoCourse.objects.get(id=id)
|
||||
|
||||
@@ -158,22 +155,19 @@ def course_kmldownload_view(request,id=0):
|
||||
kmlfilename = 'course_{id}.kml'.format(id=id)
|
||||
|
||||
response = HttpResponse(kmlstring)
|
||||
response['Content-Disposition'] = 'attachment; filename="{filename}"'.format(filename=kmlfilename)
|
||||
response['Content-Disposition'] = 'attachment; filename="{filename}"'.format(
|
||||
filename=kmlfilename)
|
||||
response['Content-Type'] = 'application/octet-stream'
|
||||
|
||||
return response
|
||||
|
||||
|
||||
|
||||
# Export workout to GPX and send to user's email address
|
||||
@permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True)
|
||||
def workout_gpxemail_view(request,id=0):
|
||||
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
|
||||
def workout_gpxemail_view(request, id=0):
|
||||
r = getrower(request.user)
|
||||
w = get_workout(id)
|
||||
|
||||
|
||||
|
||||
|
||||
row = rdata(csvfile=w.csvfilename)
|
||||
|
||||
code = str(uuid4())
|
||||
@@ -181,7 +175,7 @@ def workout_gpxemail_view(request,id=0):
|
||||
|
||||
row.exporttogpx(gpxfilename)
|
||||
|
||||
with open(gpxfilename,'r') as f:
|
||||
with open(gpxfilename, 'r') as f:
|
||||
response = HttpResponse(f)
|
||||
response['Content-Disposition'] = 'attachment; filename="%s"' % gpxfilename
|
||||
response['Content-Type'] = 'application/octet-stream'
|
||||
@@ -190,17 +184,19 @@ def workout_gpxemail_view(request,id=0):
|
||||
return response
|
||||
|
||||
# Get Workout summary CSV file
|
||||
|
||||
|
||||
@login_required()
|
||||
def workouts_summaries_email_view(request):
|
||||
r = getrower(request.user)
|
||||
if r.emailbounced: # pragma: no cover
|
||||
if r.emailbounced: # pragma: no cover
|
||||
message = "Please check your email address first. Email to this address bounced."
|
||||
messages.error(request, message)
|
||||
return HttpResponseRedirect(
|
||||
reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':str(w.id),
|
||||
})
|
||||
kwargs={
|
||||
'id': str(w.id),
|
||||
})
|
||||
)
|
||||
|
||||
if request.method == 'POST':
|
||||
@@ -211,29 +207,31 @@ def workouts_summaries_email_view(request):
|
||||
filename = 'rowsandall_workouts_{first}_{last}.csv'.format(
|
||||
first=startdate,
|
||||
last=enddate
|
||||
)
|
||||
df = dataprep.workout_summary_to_df(r,startdate=startdate,enddate=enddate)
|
||||
df.to_csv(filename,encoding='utf-8')
|
||||
res = myqueue(queuehigh,handle_sendemailsummary,
|
||||
)
|
||||
df = dataprep.workout_summary_to_df(
|
||||
r, startdate=startdate, enddate=enddate)
|
||||
df.to_csv(filename, encoding='utf-8')
|
||||
res = myqueue(queuehigh, handle_sendemailsummary,
|
||||
r.user.first_name,
|
||||
r.user.last_name,
|
||||
r.user.email,
|
||||
filename,
|
||||
emailbounced = r.emailbounced
|
||||
)
|
||||
messages.info(request,'The summary CSV file was sent to you per email')
|
||||
emailbounced=r.emailbounced
|
||||
)
|
||||
messages.info(
|
||||
request, 'The summary CSV file was sent to you per email')
|
||||
else:
|
||||
form = DateRangeForm()
|
||||
|
||||
return render(request,"export_workouts.html",
|
||||
return render(request, "export_workouts.html",
|
||||
{
|
||||
'form':form
|
||||
})
|
||||
'form': form
|
||||
})
|
||||
|
||||
|
||||
# Get Workout CSV file and send it to user's email address
|
||||
@permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True)
|
||||
def workout_csvemail_view(request,id=0):
|
||||
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
|
||||
def workout_csvemail_view(request, id=0):
|
||||
r = getrower(request.user)
|
||||
|
||||
w = get_workout(id)
|
||||
@@ -261,13 +259,12 @@ def workout_csvemail_view(request,id=0):
|
||||
|
||||
# Get Workout CSV file and send it to user's email address
|
||||
@login_required()
|
||||
@permission_required('rower.is_staff',fn=get_user_by_userid,raise_exception=True)
|
||||
def workout_csvtoadmin_view(request,id=0): # pragma: no cover
|
||||
@permission_required('rower.is_staff', fn=get_user_by_userid, raise_exception=True)
|
||||
def workout_csvtoadmin_view(request, id=0): # pragma: no cover
|
||||
message = ""
|
||||
r = getrower(request.user)
|
||||
w = get_workout(id)
|
||||
|
||||
|
||||
csvfile = w.csvfilename
|
||||
res = myqueue(queuehigh,
|
||||
handle_sendemailcsv,
|
||||
@@ -277,11 +274,11 @@ def workout_csvtoadmin_view(request,id=0): # pragma: no cover
|
||||
csvfile)
|
||||
|
||||
successmessage = "The CSV file was sent to the site admin per email"
|
||||
messages.info(request,successmessage)
|
||||
messages.info(request, successmessage)
|
||||
url = reverse('workout_view',
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
kwargs={
|
||||
'id': encoder.encode_hex(w.id),
|
||||
})
|
||||
response = HttpResponseRedirect(url)
|
||||
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user