Files
WerkoutAPI/workout/serializers.py
2023-06-11 21:46:54 -05:00

57 lines
1.8 KiB
Python

from rest_framework import serializers
from .models import *
from exercise.serializers import ExerciseSerializer
class WorkoutExerciseSerializer(serializers.ModelSerializer):
exercise = ExerciseSerializer(read_only=True)
class Meta:
model = WorkoutExercise
fields = ('workout', 'exercise','weight','reps')
class CompleteWorkoutSerializer(serializers.ModelSerializer):
class Meta:
model = CompletedWorkout
exclude = ['registered_user']
def create(self, validated_data):
registered_user_id = self.context.get("registered_user")
registered_user = RegisteredUser.objects.get(id=registered_user_id)
completed_workout = CompletedWorkout.objects.create(
registered_user=registered_user,
workout=validated_data['workout'],
difficulty=validated_data['difficulty']
)
completed_workout.save()
return completed_workout
class WorkoutSerializer(serializers.ModelSerializer):
exercise = WorkoutExerciseSerializer(source='workout_exercise_workout', many=True)
class Meta:
model = Workout
fields = '__all__'
class WorkoutDetailSerializer(serializers.ModelSerializer):
exercises = serializers.SerializerMethodField()
class Meta:
model = Workout
fields = ('name', 'exercises',)
def get_exercises(self, obj):
objs = WorkoutExercise.objects.filter(workout=obj)
data = WorkoutExerciseSerializer(objs, many=True).data
return data
class GetCompleteWorkoutSerializer(serializers.ModelSerializer):
workout = WorkoutSerializer(many=False, read_only=True)
class Meta:
model = CompletedWorkout
exclude = ['registered_user']
class POSTCompleteWorkoutSerializer(serializers.ModelSerializer):
class Meta:
model = Workout
exclude = ['registered_user']