initial version of form working
This commit is contained in:
@@ -58,7 +58,8 @@ from rowers.forms import (
|
||||
RaceResultFilterForm,PowerIntervalUpdateForm,FlexAxesForm,
|
||||
FlexOptionsForm,DataFrameColumnsForm,OteWorkoutTypeForm,
|
||||
MetricsForm,DisqualificationForm,disqualificationreasons,
|
||||
disqualifiers,SearchForm,BillingForm,PlanSelectForm
|
||||
disqualifiers,SearchForm,BillingForm,PlanSelectForm,
|
||||
VideoAnalysisCreateForm
|
||||
)
|
||||
|
||||
from django.urls import reverse, reverse_lazy
|
||||
@@ -80,7 +81,7 @@ from rowers.forms import (
|
||||
UpdateStreamForm,WorkoutMultipleCompareForm,ChartParamChoiceForm,
|
||||
FusionMetricChoiceForm,BoxPlotChoiceForm,MultiFlexChoiceForm,
|
||||
TrendFlexModalForm,WorkoutSplitForm,WorkoutJoinParamForm,
|
||||
AnalysisOptionsForm, AnalysisChoiceForm,
|
||||
AnalysisOptionsForm, AnalysisChoiceForm,
|
||||
PlannedSessionMultipleCloneForm,SessionDateShiftForm,RowerTeamForm,
|
||||
)
|
||||
from rowers.models import (
|
||||
@@ -255,7 +256,7 @@ def getfavorites(r,row):
|
||||
workoutsource = row.workoutsource
|
||||
if 'speedcoach2' in row.workoutsource:
|
||||
workoutsource = 'speedcoach2'
|
||||
|
||||
|
||||
favorites = FavoriteChart.objects.filter(user=r,
|
||||
workouttype__in=matchworkouttypes).order_by("id")
|
||||
favorites2 = FavoriteChart.objects.filter(user=r,
|
||||
@@ -264,12 +265,12 @@ def getfavorites(r,row):
|
||||
|
||||
|
||||
favorites = favorites | favorites2
|
||||
|
||||
|
||||
maxfav = len(favorites)-1
|
||||
|
||||
|
||||
return favorites,maxfav
|
||||
|
||||
|
||||
def get_workout_default_page(request,id):
|
||||
if request.user.is_anonymous:
|
||||
return reverse('workout_view',kwargs={'id':id})
|
||||
@@ -279,7 +280,7 @@ def get_workout_default_page(request,id):
|
||||
return reverse('workout_edit_view',kwargs={'id':id})
|
||||
else:
|
||||
return reverse('workout_workflow_view',kwargs={'id':id})
|
||||
|
||||
|
||||
def getrequestrower(request,rowerid=0,userid=0,notpermanent=False):
|
||||
|
||||
userid = int(userid)
|
||||
@@ -288,12 +289,12 @@ def getrequestrower(request,rowerid=0,userid=0,notpermanent=False):
|
||||
if notpermanent == False:
|
||||
if rowerid == 0 and 'rowerid' in request.session:
|
||||
rowerid = request.session['rowerid']
|
||||
|
||||
|
||||
if userid != 0:
|
||||
rowerid = 0
|
||||
|
||||
|
||||
try:
|
||||
|
||||
|
||||
if rowerid != 0:
|
||||
r = Rower.objects.get(id=rowerid)
|
||||
elif userid != 0:
|
||||
@@ -301,7 +302,7 @@ def getrequestrower(request,rowerid=0,userid=0,notpermanent=False):
|
||||
r = getrower(u)
|
||||
else:
|
||||
r = getrower(request.user)
|
||||
|
||||
|
||||
except Rower.DoesNotExist:
|
||||
raise Http404("Rower doesn't exist")
|
||||
|
||||
@@ -321,12 +322,12 @@ def getrequestplanrower(request,rowerid=0,userid=0,notpermanent=False):
|
||||
if notpermanent == False:
|
||||
if rowerid == 0 and 'rowerid' in request.session:
|
||||
rowerid = request.session['rowerid']
|
||||
|
||||
|
||||
if userid != 0:
|
||||
rowerid = 0
|
||||
|
||||
|
||||
try:
|
||||
|
||||
|
||||
if rowerid != 0:
|
||||
r = Rower.objects.get(id=rowerid)
|
||||
elif userid != 0:
|
||||
@@ -334,7 +335,7 @@ def getrequestplanrower(request,rowerid=0,userid=0,notpermanent=False):
|
||||
r = getrower(u)
|
||||
else:
|
||||
r = getrower(request.user)
|
||||
|
||||
|
||||
except Rower.DoesNotExist:
|
||||
raise Http404("Rower doesn't exist")
|
||||
|
||||
@@ -374,20 +375,20 @@ def get_workout(id):
|
||||
|
||||
def get_workout_permitted(user,id):
|
||||
w = get_workout(id)
|
||||
|
||||
|
||||
if (checkworkoutuser(user,w)==False):
|
||||
raise PermissionDenied("Access denied")
|
||||
|
||||
|
||||
return w
|
||||
|
||||
|
||||
def get_workout_permittedview(user,id):
|
||||
w = get_workout(id)
|
||||
|
||||
|
||||
if (checkworkoutuserview(user,w)==False):
|
||||
raise PermissionDenied("Access denied")
|
||||
|
||||
|
||||
return w
|
||||
|
||||
|
||||
def getvalue(data):
|
||||
perc = 0
|
||||
total = 1
|
||||
@@ -412,7 +413,7 @@ class SessionTaskListener(threading.Thread):
|
||||
self.redis = r
|
||||
self.pubsub = self.redis.pubsub()
|
||||
self.pubsub.subscribe(channels)
|
||||
|
||||
|
||||
def work(self, item):
|
||||
|
||||
try:
|
||||
@@ -420,10 +421,10 @@ class SessionTaskListener(threading.Thread):
|
||||
total,done,id,session_key = getvalue(data)
|
||||
perc = int(100.*done/total)
|
||||
cache.set(id,perc,3600)
|
||||
|
||||
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
|
||||
def run(self):
|
||||
for item in self.pubsub.listen():
|
||||
if item['data'] == "KILL":
|
||||
@@ -497,14 +498,14 @@ def remove_asynctask(request,id):
|
||||
oldtasks = request.session['async_tasks']
|
||||
except KeyError:
|
||||
oldtasks = []
|
||||
|
||||
|
||||
newtasks = []
|
||||
for task in oldtasks:
|
||||
if id not in task[0]:
|
||||
newtasks += [(task[0],task[1])]
|
||||
|
||||
request.session['async_tasks'] = newtasks
|
||||
|
||||
|
||||
def get_job_result(jobid):
|
||||
if settings.TESTING:
|
||||
return None
|
||||
@@ -522,7 +523,7 @@ def get_job_result(jobid):
|
||||
result = job.result
|
||||
except NoSuchJobError:
|
||||
return None
|
||||
|
||||
|
||||
return result
|
||||
|
||||
verbose_job_status = {
|
||||
@@ -551,7 +552,7 @@ def get_job_status(jobid):
|
||||
job = celery_result.AsyncResult(jobid)
|
||||
jobresult = job.result
|
||||
|
||||
|
||||
|
||||
if 'fail' in job.status.lower():
|
||||
jobresult = '0'
|
||||
summary = {
|
||||
@@ -566,7 +567,7 @@ def get_job_status(jobid):
|
||||
status = job.status
|
||||
except AttributeError:
|
||||
status = job.get_status()
|
||||
|
||||
|
||||
summary = {
|
||||
'status':status,
|
||||
'result':job.result,
|
||||
@@ -611,7 +612,7 @@ def kill_async_job(request,id='aap'):
|
||||
cancel_job(id,connection=redis_connection)
|
||||
except NoSuchJobError:
|
||||
pass
|
||||
|
||||
|
||||
remove_asynctask(request,id)
|
||||
cache.delete(id)
|
||||
url = reverse(session_jobs_status)
|
||||
@@ -637,7 +638,7 @@ def raise_500(request):
|
||||
# try:
|
||||
# request.session['async_tasks'] += [(job.id,'long_test_task')]
|
||||
# except KeyError:
|
||||
# request.session['async_tasks'] = [(job.id,'long_test_task')]
|
||||
# request.session['async_tasks'] = [(job.id,'long_test_task')]
|
||||
#
|
||||
# url = reverse(session_jobs_status)
|
||||
#
|
||||
@@ -654,7 +655,7 @@ def raise_500(request):
|
||||
# try:
|
||||
# request.session['async_tasks'] += [(job.id,'long_test_task2')]
|
||||
# except KeyError:
|
||||
# request.session['async_tasks'] = [(job.id,'long_test_task2')]
|
||||
# request.session['async_tasks'] = [(job.id,'long_test_task2')]
|
||||
#
|
||||
# url = reverse(session_jobs_status)
|
||||
#
|
||||
@@ -689,7 +690,7 @@ def post_progress(request,id=None,value=0):
|
||||
|
||||
else: # request method is not POST
|
||||
return HttpResponse('GET method not allowed',status=405)
|
||||
|
||||
|
||||
def get_all_queued_jobs(userid=0):
|
||||
r = StrictRedis()
|
||||
|
||||
@@ -709,13 +710,13 @@ def get_all_queued_jobs(userid=0):
|
||||
'function':'',
|
||||
'meta':job.info,
|
||||
}))
|
||||
|
||||
|
||||
ids = [j.id for j in queue.jobs]
|
||||
ids += [j.id for j in queuehigh.jobs]
|
||||
ids += [j.id for j in queuelow.jobs]
|
||||
ids += [j.id for j in queuefailed.jobs]
|
||||
|
||||
|
||||
|
||||
for id in ids:
|
||||
job = Job.fetch(id,connection=redis_connection)
|
||||
jobs.append(
|
||||
@@ -766,14 +767,14 @@ def get_stored_tasks_status(request):
|
||||
|
||||
taskstatus.append(this_task_status)
|
||||
|
||||
|
||||
|
||||
return taskstatus
|
||||
|
||||
@login_required()
|
||||
def get_thumbnails(request,id):
|
||||
row = get_workout_permitted(request.user,id)
|
||||
|
||||
|
||||
|
||||
r = getrower(request.user)
|
||||
result = request.user.is_authenticated and ispromember(request.user)
|
||||
if result:
|
||||
@@ -788,15 +789,15 @@ def get_thumbnails(request,id):
|
||||
favorites,maxfav = getfavorites(r,row)
|
||||
|
||||
charts = []
|
||||
|
||||
|
||||
charts = thumbnails_set(r,encoder.decode_hex(id),favorites)
|
||||
try:
|
||||
if charts[0]['script'] == '':
|
||||
if charts[0]['script'] == '':
|
||||
charts = []
|
||||
except IndexError:
|
||||
charts = []
|
||||
|
||||
|
||||
|
||||
return JSONResponse(charts)
|
||||
|
||||
def get_blog_posts(request):
|
||||
@@ -810,7 +811,7 @@ def get_blog_posts(request):
|
||||
'title':blogpost.title,
|
||||
'link':blogpost.link,
|
||||
}
|
||||
|
||||
|
||||
jsondata.append(thedict)
|
||||
|
||||
return JSONResponse(jsondata)
|
||||
@@ -827,12 +828,12 @@ def get_blog_posts_old(request):
|
||||
blogs_json = []
|
||||
except ConnectionError:
|
||||
pass
|
||||
|
||||
|
||||
blogposts = []
|
||||
|
||||
|
||||
|
||||
for postdata in blogs_json[0:3]:
|
||||
|
||||
|
||||
try:
|
||||
title = postdata['title']['rendered'].encode(
|
||||
'ascii','xmlcharrefreplace')
|
||||
@@ -841,7 +842,7 @@ def get_blog_posts_old(request):
|
||||
title = postdata['title']['rendered'].encode(
|
||||
'ascii','xmlcharrefreplace').decode('utf-8')
|
||||
|
||||
|
||||
|
||||
thedict = {
|
||||
'title': title,
|
||||
# 'author': '',
|
||||
@@ -874,7 +875,7 @@ Hoi
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
|
||||
return JSONResponse([object,object])
|
||||
|
||||
@login_required()
|
||||
@@ -935,7 +936,7 @@ def get_my_teams(user):
|
||||
teams1 = therower.team.all()
|
||||
except AttributeError:
|
||||
teams1 = []
|
||||
|
||||
|
||||
teams2 = Team.objects.filter(manager=user)
|
||||
teams = list(set(teams1).union(set(teams2)))
|
||||
except TypeError:
|
||||
@@ -960,10 +961,10 @@ def get_time(second):
|
||||
hours = int((second-24.*3600.*days)/3600.) % 24
|
||||
minutes = int((second-3600.*(hours+24.*days))/60.) % 60
|
||||
sec = int(second-3600.*(hours+24.*days)-60.*minutes) % 60
|
||||
microsecond = int(1.0e6*(second-3600.*(hours+24.*days)-60.*minutes-sec))
|
||||
microsecond = int(1.0e6*(second-3600.*(hours+24.*days)-60.*minutes-sec))
|
||||
return datetime.time(hours,minutes,sec,microsecond)
|
||||
|
||||
|
||||
|
||||
# get the workout ID from the SportTracks URI
|
||||
def getidfromsturi(uri,length=8):
|
||||
return uri[len(uri)-length:]
|
||||
@@ -975,7 +976,7 @@ def getidfromuri(uri):
|
||||
return m.group(2)
|
||||
|
||||
|
||||
|
||||
|
||||
from rowers.utils import (
|
||||
geo_distance,serialize_list,deserialize_list,uniqify,
|
||||
str2bool,range_to_color_hex,absolute,myqueue,get_call,
|
||||
@@ -997,11 +998,11 @@ def iscoachmember(user):
|
||||
except Rower.DoesNotExist:
|
||||
r = Rower(user=user)
|
||||
r.save()
|
||||
|
||||
|
||||
result = user.is_authenticated and ('coach' in r.rowerplan)
|
||||
else:
|
||||
result = False
|
||||
|
||||
|
||||
return result
|
||||
|
||||
def cancreateteam(user):
|
||||
@@ -1092,7 +1093,7 @@ def sendmail(request):
|
||||
messages.error(request,'You have to answer YES to the question')
|
||||
return HttpResponseRedirect('/rowers/email/')
|
||||
else:
|
||||
return HttpResponseRedirect('/rowers/email/')
|
||||
return HttpResponseRedirect('/rowers/email/')
|
||||
else:
|
||||
return HttpResponseRedirect('/rowers/email/')
|
||||
|
||||
@@ -1106,7 +1107,7 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
workouttype = data['type']
|
||||
except KeyError:
|
||||
workouttype = 'rower'
|
||||
|
||||
|
||||
if workouttype not in [x[0] for x in Workout.workouttypes]:
|
||||
workouttype = 'other'
|
||||
try:
|
||||
@@ -1128,14 +1129,14 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
rowdatetime = iso8601.parse_date(data['start_date'])
|
||||
except ParseError:
|
||||
rowdatetime = iso8601.parse_date(data['date'])
|
||||
|
||||
|
||||
|
||||
|
||||
try:
|
||||
c2intervaltype = data['workout_type']
|
||||
|
||||
|
||||
except KeyError:
|
||||
c2intervaltype = ''
|
||||
|
||||
|
||||
try:
|
||||
title = data['name']
|
||||
except KeyError:
|
||||
@@ -1177,7 +1178,7 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
spm = strokedata.loc[:,'spm']
|
||||
except KeyError:
|
||||
spm = 0*dist2
|
||||
|
||||
|
||||
try:
|
||||
hr = strokedata.loc[:,'hr']
|
||||
except KeyError:
|
||||
@@ -1189,7 +1190,7 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
velo = 500./pace
|
||||
|
||||
power = 2.8*velo**3
|
||||
|
||||
|
||||
# save csv
|
||||
# Create data frame with all necessary data to write to csv
|
||||
df = pd.DataFrame({'TimeStamp (sec)':unixtime,
|
||||
@@ -1211,9 +1212,9 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
' ElapsedTime (sec)':seconds
|
||||
})
|
||||
|
||||
|
||||
|
||||
df.sort_values(by='TimeStamp (sec)',ascending=True)
|
||||
|
||||
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
|
||||
|
||||
@@ -1249,11 +1250,11 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
dosummary=True
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
return id,message
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def keyvalue_get_default(key,options,def_options):
|
||||
@@ -1288,5 +1289,3 @@ def trydf(df,aantal,column):
|
||||
|
||||
import rowers.teams as teams
|
||||
from rowers.models import C2WorldClassAgePerformance
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user