diff --git a/boatmovers/models.py b/boatmovers/models.py index ccf22a38..e266f29b 100644 --- a/boatmovers/models.py +++ b/boatmovers/models.py @@ -93,13 +93,17 @@ class Race(models.Model): return self.name def save(self, *args, **kwargs): - results = self.results.all() crews = [] athletes = [] - for result in results: - crews.append(result.crew.id) - for athlete in result.crew.athletes.all(): - athletes.append(athlete.id) + + 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( diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 1bed7187..dc58b6fb 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -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: - row = row+row2 + try: + row = row+row2 + except TypeError: # pragma: no cover + pass files = files[1:] timestr = strftime("%Y%m%d-%H%M%S") diff --git a/rowers/models.py b/rowers/models.py index a5c30698..43665c5b 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2963,7 +2963,10 @@ class PlannedSession(models.Model): if self.fitfile: steps = steps_read_fit(settings.MEDIA_ROOT+'/'+self.fitfile.name) self.steps = steps - self.steps['workoutName'] = self.name + 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 diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 43fe0642..fe89dbbd 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -329,7 +329,7 @@ def get_indoorraces(workout): if workout.duration is None: workout.duration = timedelta(0) - if workout.duration.second == 0 and workout.duration.microsecond == 0: + if workout.duration.seconds == 0 and workout.duration.microseconds == 0: duration = 60*workout.duration.hour+workout.duration.minute races2 = VirtualRace.objects.filter( diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index e0a77a3e..68924396 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ