Files
WerkoutAPI/superset/serializers.py
Trey t 1c61b80731 workout generator audit: rules engine, structure rules, split patterns, injury UX, metadata cleanup
- Add rules_engine.py with quantitative rules for all 8 workout types
- Add quality gate retry loop in generate_single_workout()
- Expand calibrate_structure_rules to all 120 combinations (8 types × 5 goals × 3 sections)
- Wire WeeklySplitPattern DB records into _pick_weekly_split()
- Enforce movement patterns from WorkoutStructureRule in exercise selection
- Add straight-set strength support (single main lift, 4-6 rounds)
- Add modality consistency check for duration-dominant workout types
- Add InjuryStep component to onboarding and preferences
- Add sibling exercise exclusion in regenerate and preview_day endpoints
- Display generator warnings on dashboard
- Expand fix_rep_durations, fix_exercise_flags, fix_movement_pattern_typo
- Add audit_exercise_data and check_rules_drift management commands
- Add Next.js frontend with dashboard, onboarding, preferences, history pages
- Add generator app with ML-powered workout generation pipeline
- 96 new tests across 7 test modules

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 20:07:40 -06:00

35 lines
1.0 KiB
Python

from rest_framework import serializers
from .models import *
from exercise.models import Exercise
from exercise.serializers import ExerciseSerializer
import uuid
class SupersetExerciseSerializer(serializers.ModelSerializer):
exercise = serializers.SerializerMethodField()
unique_id = serializers.SerializerMethodField()
class Meta:
model = SupersetExercise
fields = '__all__'
def get_exercise(self, obj):
data = ExerciseSerializer(obj.exercise, many=False).data
return data
def get_unique_id(self, obj):
return str(uuid.uuid4())
class SupersetSerializer(serializers.ModelSerializer):
exercises = serializers.SerializerMethodField()
class Meta:
model = Superset
fields = '__all__'
def get_exercises(self, obj):
if obj.pk is None:
return []
objs = SupersetExercise.objects.filter(superset=obj).order_by('order')
data = SupersetExerciseSerializer(objs, many=True).data
return data