Private
Public Access
1
0

Merge branch 'release/v23.3.5'

This commit is contained in:
2025-03-28 16:30:37 +01:00
6 changed files with 35 additions and 24 deletions
+5 -1
View File
@@ -93,13 +93,17 @@ class Race(models.Model):
return self.name
def save(self, *args, **kwargs):
results = self.results.all()
crews = []
athletes = []
try:
results = self.results.all()
for result in results:
crews.append(result.crew.id)
for athlete in result.crew.athletes.all():
athletes.append(athlete.id)
except ValueError:
pass
if len(crews) != len(set(crews)):
raise ValidationError(
+3
View File
@@ -740,7 +740,10 @@ def join_workouts(r, ids, title='Joined Workout',
while len(files):
row2 = rdata(files[0])
if row2 != 0 and row2 is not None:
try:
row = row+row2
except TypeError: # pragma: no cover
pass
files = files[1:]
timestr = strftime("%Y%m%d-%H%M%S")
+5
View File
@@ -2963,7 +2963,10 @@ class PlannedSession(models.Model):
if self.fitfile:
steps = steps_read_fit(settings.MEDIA_ROOT+'/'+self.fitfile.name)
self.steps = steps
try:
self.steps['workoutName'] = self.name
except TypeError:
pass
self.save()
@@ -4696,6 +4699,8 @@ class WorkoutForm(ModelForm):
cd = self.cleaned_data
if cd['duration'] is None or cd['duration'] == '':
raise forms.ValidationError('Duration cannot be empty')
if cd['date'] is None or cd['date'] == '':
raise forms.ValidationError('Date cannot be empty')
# Used for the rowing physics calculations
+3 -8
View File
@@ -48,6 +48,7 @@ queue = django_rq.get_queue('default')
queuelow = django_rq.get_queue('low')
queuehigh = django_rq.get_queue('low')
from rowers.session_utils import timefield_to_minutes_duration
def to_time(milliseconds):
seconds = milliseconds/1000.
@@ -325,12 +326,7 @@ def get_indoorraces(workout):
sessionmode='distance',
sessionvalue=workout.distance)
if workout.duration is None:
workout.duration = timedelta(0)
if workout.duration.second == 0 and workout.duration.microsecond == 0:
duration = 60*workout.duration.hour+workout.duration.minute
duration = timefield_to_minutes_duration(workout.duration)
races2 = VirtualRace.objects.filter(
sessiontype='indoorrace',
@@ -340,8 +336,7 @@ def get_indoorraces(workout):
sessionvalue=duration)
races = races1 | races2
else:
races = races1
registrations = IndoorVirtualRaceResult.objects.filter(
race__in=races,
+4
View File
@@ -10,7 +10,11 @@ def timefield_to_seconds_duration(t):
return duration
def timefield_to_minutes_duration(t):
duration = t.hour*60.
duration += t.minute
return duration
def is_session_complete_ws(ws, ps):
ws = ws.order_by("date")
Binary file not shown.