Private
Public Access
1
0

Merge branch 'release/v20.7.4'

This commit is contained in:
2024-04-05 09:10:16 +02:00
8 changed files with 58 additions and 10 deletions

View File

@@ -4158,6 +4158,7 @@ class IndoorVirtualRaceResult(models.Model):
class CourseTestResult(models.Model):
userid = models.IntegerField(default=0)
courseid = models.IntegerField(default=0)
workoutid = models.IntegerField(null=True)
plannedsession = models.ForeignKey(
PlannedSession, on_delete=models.CASCADE)
@@ -4167,6 +4168,13 @@ class CourseTestResult(models.Model):
startsecond = models.FloatField(default=0)
endsecond = models.FloatField(default=0)
def save(self, *args, **kwargs):
if self.userid == 0:
w = Workout.objects.get(id=self.workoutid)
self.userid = w.user.id
super(CourseTestResult, self).save(*args, **kwargs)
class IndoorVirtualRaceResultForm(ModelForm):
class Meta:

View File

@@ -1149,9 +1149,11 @@ def handle_check_race_course(self,
record.duration = totaltime_sec_to_string(coursetimeseconds)
record.distance = int(coursemeters)
record.workoutid = workoutid
record.courseid = courseid
record.startsecond = startsecond
record.endsecond = endsecond
record.points = points
record.coursecompleted = 1
record.save()
if summary: # pragma: no cover
@@ -1178,7 +1180,6 @@ def handle_check_race_course(self,
workout.summary = summary
workout.save()
if successemail: # pragma: no cover
handle_sendemail_coursesucceed(
useremail, userfirstname, logfile, workoutid

View File

@@ -137,7 +137,36 @@
</p>
</li>
{% endif %}
{% endif %}
{% endif %}
{% if ownrecords %}
<li class="grid_4">
<h2>Own (Private) Results</h2>
<p>
<table class="listtable shortpadded">
<thead>
<tr>
<th>Time</th>
<th>Distance</th>
<th>Date</th>
</tr>
</thead>
<tbody>
{% for record in ownrecords %}
<tr>
<td>{{ record.duration |durationprint:"%H:%M:%S.%f" }}</td>
<td>{{ record.distance }} m</td>
<td>{{ record.workoutid|workoutdate }}</td>
<td>
<a title="Details" href="/rowers/workout/{{ record.workoutid|encode }}/view/">
<i class="fas fa-search-plus fa-fw"></i></a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</p>
</li>
{% endif %}
</ul>
{% endblock %}

View File

@@ -172,7 +172,7 @@
</li>
{% if coursescript %}
<li class="grid_2">
<h2>Course</h2>
<h2><a href="/rowers/courses/{{ plannedsession.course.id }}">{{ plannedsession.course.name }}</h2>
{{ coursediv|safe }}
{{ coursescript|safe }}

Binary file not shown.

View File

@@ -410,12 +410,15 @@ def trendflexdata(workouts, options, userid=0):
except (ValueError, AttributeError): # pragma: no cover
return ('', 'Error: not enough data')
else: # pragma: no cover
bins = np.arange(datadf['days ago'].min()-binsize,
datadf['days ago'].max()+binsize,
binsize,
)
groups = datadf.groupby(pd.cut(datadf['days ago'], bins,
labels=False))
try:
bins = np.arange(datadf['days ago'].min()-binsize,
datadf['days ago'].max()+binsize,
binsize,
)
groups = datadf.groupby(pd.cut(datadf['days ago'], bins,
labels=False))
except (ValueError, AttributeError): # pragma: no cover
return ('', 'Error: not enough data')
xvalues = []
yvalues = []

View File

@@ -2332,7 +2332,6 @@ def plannedsession_view(request, id=0, userid=0):
if ps.sessiontype == 'coursetest': # pragma: no cover
vs = CourseTestResult.objects.filter(plannedsession=ps,
workoutid=w.id)
if vs:
for record in vs:
if record.workoutid == w.id:

View File

@@ -280,6 +280,13 @@ def course_view(request, id=0):
workoutid__isnull=False,
coursecompleted=True).order_by("duration", "-distance")
# get own training results
ownrecords = CourseTestResult.objects.filter(
courseid = course.id,
userid = r.id,
coursecompleted=True
).order_by("duration", "-distance")
if request.user.is_authenticated:
notsharing = Rower.objects.filter(
share_course_results=False).exclude(id=r.id)
@@ -371,6 +378,7 @@ def course_view(request, id=0):
'mapdiv': div,
'nosessions': False,
'records': records,
'ownrecords': ownrecords,
'rower': r,
'form': form,
'onlyme': onlyme,