Now writing results
This commit is contained in:
@@ -3410,6 +3410,8 @@ class VirtualRaceResult(models.Model):
|
|||||||
verbose_name="Skill Class")
|
verbose_name="Skill Class")
|
||||||
race = models.ForeignKey(VirtualRace,on_delete=models.CASCADE,related_name='entries',
|
race = models.ForeignKey(VirtualRace,on_delete=models.CASCADE,related_name='entries',
|
||||||
blank=True,null=True)
|
blank=True,null=True)
|
||||||
|
course = models.ForeignKey(GeoCourse,on_delete=models.CASCADE,null=True,blank=True)
|
||||||
|
|
||||||
duration = models.TimeField(default=datetime.time(1,0))
|
duration = models.TimeField(default=datetime.time(1,0))
|
||||||
distance = models.IntegerField(default=0)
|
distance = models.IntegerField(default=0)
|
||||||
points = models.FloatField(default=0)
|
points = models.FloatField(default=0)
|
||||||
|
|||||||
@@ -540,6 +540,10 @@ def handle_check_race_course(self,
|
|||||||
if 'mode' in kwargs: # pragma: no cover
|
if 'mode' in kwargs: # pragma: no cover
|
||||||
mode = kwargs['mode']
|
mode = kwargs['mode']
|
||||||
|
|
||||||
|
summary = False
|
||||||
|
if 'summary' in kwargs:
|
||||||
|
summary = kwargs['summary']
|
||||||
|
|
||||||
columns = ['time',' latitude',' longitude','cum_dist']
|
columns = ['time',' latitude',' longitude','cum_dist']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -599,6 +603,7 @@ def handle_check_race_course(self,
|
|||||||
courseid=courseid
|
courseid=courseid
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
with engine.connect() as conn, conn.begin():
|
with engine.connect() as conn, conn.begin():
|
||||||
result = conn.execute(query)
|
result = conn.execute(query)
|
||||||
polygons = result.fetchall()
|
polygons = result.fetchall()
|
||||||
@@ -733,6 +738,33 @@ def handle_check_race_course(self,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
with engine.connect() as conn, conn.begin():
|
||||||
|
result = conn.execute(query)
|
||||||
|
|
||||||
|
if summary:
|
||||||
|
|
||||||
|
try:
|
||||||
|
row = rdata(csvfile=f1)
|
||||||
|
except IOError: # pragma: no cover
|
||||||
|
try:
|
||||||
|
row = rdata(csvfile=f1 + '.csv')
|
||||||
|
except IOError: # pragma: no cover
|
||||||
|
try:
|
||||||
|
row = rdata(csvfile=f1 + '.gz')
|
||||||
|
except IOError: # pragma: no cover
|
||||||
|
pass
|
||||||
|
|
||||||
|
vals, units, typ = row.updateinterval_metric(
|
||||||
|
' AverageBoatSpeed (m/s)',0.1,mode='larger',
|
||||||
|
debug=False,smoothwindow=15.,
|
||||||
|
activewindow=[startsecond,endsecond]
|
||||||
|
)
|
||||||
|
|
||||||
|
summary = row.allstats()
|
||||||
|
row.write_csv(f1,gzip=True)
|
||||||
|
|
||||||
|
query = "UPDATE `rowers_workout` SET `summary` = '%s' WHERE `id` = %s" % (summary, workoutid)
|
||||||
|
|
||||||
with engine.connect() as conn, conn.begin():
|
with engine.connect() as conn, conn.begin():
|
||||||
result = conn.execute(query)
|
result = conn.execute(query)
|
||||||
|
|
||||||
|
|||||||
@@ -6168,6 +6168,48 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
|
|
||||||
powerupdateform = PowerIntervalUpdateForm(initial=data)
|
powerupdateform = PowerIntervalUpdateForm(initial=data)
|
||||||
|
|
||||||
|
if request.method == 'POST' and "course" in request.POST:
|
||||||
|
courseselectform = CourseSelectForm(request.POST,choices=courses)
|
||||||
|
if courseselectform.is_valid():
|
||||||
|
course = courseselectform.cleaned_data['course']
|
||||||
|
# get or create a record
|
||||||
|
records = VirtualRaceResult.objects.filter(
|
||||||
|
userid=r.id,
|
||||||
|
course=course,
|
||||||
|
workoutid=row.id
|
||||||
|
)
|
||||||
|
if records:
|
||||||
|
record = records[0]
|
||||||
|
else:
|
||||||
|
# create record
|
||||||
|
record = VirtualRaceResult(
|
||||||
|
userid = r.id,
|
||||||
|
username = r.user.first_name+' '+r.user.last_name,
|
||||||
|
workoutid = row.id,
|
||||||
|
weightcategory = r.weightcategory,
|
||||||
|
adaptiveclass = r.adaptiveclass,
|
||||||
|
course = course,
|
||||||
|
distance = course.distance,
|
||||||
|
boatclass = row.workouttype,
|
||||||
|
boattype = row.boattype,
|
||||||
|
sex = r.sex,
|
||||||
|
age = calculate_age(r.birthdate),
|
||||||
|
)
|
||||||
|
record.save()
|
||||||
|
|
||||||
|
job = myqueue(
|
||||||
|
queue,
|
||||||
|
handle_check_race_course,
|
||||||
|
row.csvfilename,
|
||||||
|
row.id,
|
||||||
|
course.id,
|
||||||
|
record.id,
|
||||||
|
r.user.email,
|
||||||
|
r.user.first_name,
|
||||||
|
summary=True,
|
||||||
|
)
|
||||||
|
messages.info(request,'We are checking your time on the course in the background')
|
||||||
|
|
||||||
# feeling lucky / ruptures
|
# feeling lucky / ruptures
|
||||||
if request.method == 'POST' and "ruptures" in request.POST:
|
if request.method == 'POST' and "ruptures" in request.POST:
|
||||||
df = pd.DataFrame({
|
df = pd.DataFrame({
|
||||||
|
|||||||
Reference in New Issue
Block a user