diff --git a/backend/secfit/workouts/serializers.py b/backend/secfit/workouts/serializers.py index 98036eec0661f5b05201221987788c30cf6b96eb..c533c14d1503141117307be92b2403d79f9cda9f 100644 --- a/backend/secfit/workouts/serializers.py +++ b/backend/secfit/workouts/serializers.py @@ -162,29 +162,32 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer): for i in range(len(exercise_instances_data), len(exercise_instances.all())): exercise_instances.all()[i].delete() - # Handle WorkoutFiles if "files" in validated_data: - files_data = validated_data.pop("files") - files = instance.files + self.handle_workout_files(instance, validated_data) - for file, file_data in zip(files.all(), files_data): - file.file = file_data.get("file", file.file) + return instance + + # Handle WorkoutFiles + def handle_workout_files(self, instance, validated_data): + files_data = validated_data.pop("files") + files = instance.files + + for file, file_data in zip(files.all(), files_data): + file.file = file_data.get("file", file.file) # If new files have been added, creating new WorkoutFiles - if len(files_data) > len(files.all()): - for i in range(len(files.all()), len(files_data)): - WorkoutFile.objects.create( + if len(files_data) > len(files.all()): + for i in range(len(files.all()), len(files_data)): + WorkoutFile.objects.create( workout=instance, owner=instance.owner, file=files_data[i].get("file"), ) # Else if files have been removed, delete WorkoutFiles - elif len(files_data) < len(files.all()): - for i in range(len(files_data), len(files.all())): - files.all()[i].delete() - - return instance + elif len(files_data) < len(files.all()): + for i in range(len(files_data), len(files.all())): + files.all()[i].delete() def get_owner_username(self, obj): """Returns the owning user's username @@ -213,7 +216,10 @@ class ExerciseSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Exercise - fields = ["url", "id", "name", "description", "duration", "calories", "muscleGroup", "unit", "instances"] + fields = [ + "url", "id", "name", "description", "duration", + "calories", "muscleGroup", "unit", "instances" + ] class GoalSerializer(serializers.HyperlinkedModelSerializer): """Serializer for an Goal. Hyperlinks are used for relationships by default.