This commit is contained in:
Trey t
2023-07-17 19:26:18 -05:00
parent a18aec02d6
commit 0b8cdc77a1
18 changed files with 266 additions and 13 deletions

View File

@@ -6,6 +6,8 @@ from muscle.models import ExerciseMuscle
from equipment.models import WorkoutEquipment
from video.models import Video
from video.serializers import VideoSerializer
from superset.serializers import SupersetSerializer
from superset.models import Superset, SupersetExercise
class WorkoutExerciseSerializer(serializers.ModelSerializer):
exercise = ExerciseSerializer(read_only=True)
@@ -49,20 +51,30 @@ class WorkoutSerializer(serializers.ModelSerializer):
# depth = 1
def get_muscles(self, obj):
exercises = WorkoutExercise.objects.filter(workout=obj).values_list('exercise__id')
muscles_names = ExerciseMuscle.objects.filter(exercise__id__in=exercises).values_list('muscle__name', flat=True)
superset_ids = Superset.objects.filter(workout=obj).values_list('id')
exercise_ids = SupersetExercise.objects.filter(superset__id__in=superset_ids).values_list('exercise__id')
muscles_names = ExerciseMuscle.objects.filter(exercise__id__in=exercise_ids).values_list('muscle__name', flat=True)
return list(set(muscles_names))
# muscles_names = ExerciseMuscle.objects.filter(exercise__id__in=exercises).values_list('muscle__name', flat=True)
# return list(set(muscles_names))
def get_equipment(self, obj):
exercises = WorkoutExercise.objects.filter(workout=obj).values_list('exercise__id')
equipment_names = WorkoutEquipment.objects.filter(exercise__id__in=exercises).values_list('equipment__name', flat=True)
superset_ids = Superset.objects.filter(workout=obj).values_list('id')
exercise_ids = SupersetExercise.objects.filter(superset__id__in=superset_ids).values_list('exercise__id')
equipment_names = WorkoutEquipment.objects.filter(exercise__id__in=exercise_ids).values_list('equipment__name', flat=True)
return list(set(equipment_names))
def get_exercise_count(self, obj):
return WorkoutExercise.objects.filter(workout=obj).count()
returnValue = 0
supersets = Superset.objects.filter(workout=obj)
for superset in supersets:
exercise_count = SupersetExercise.objects.filter(superset=superset).count()
returnValue += (superset.rounds * exercise_count)
return returnValue
class WorkoutDetailSerializer(serializers.ModelSerializer):
exercises = serializers.SerializerMethodField()
supersets = serializers.SerializerMethodField()
registered_user = serializers.SerializerMethodField()
male_videos = serializers.SerializerMethodField()
female_videos = serializers.SerializerMethodField()
@@ -70,12 +82,12 @@ class WorkoutDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Workout
fields = ('id', 'name', 'description', 'exercises', 'registered_user', 'male_videos', 'female_videos', 'both_videos')
fields = ('id', 'name', 'description', 'supersets', 'registered_user', 'male_videos', 'female_videos', 'both_videos')
depth = 1
def get_exercises(self, obj):
objs = WorkoutExercise.objects.filter(workout=obj).order_by('created_at')
data = WorkoutExerciseSerializer(objs, many=True).data
def get_supersets(self, obj):
objs = Superset.objects.filter(workout=obj).order_by('order')
data = SupersetSerializer(objs, many=True).data
return data
def get_registered_user(self, obj):