diff --git a/AUTHORS.rst b/AUTHORS.rst index a1b50e16d..9a35ff914 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -32,10 +32,16 @@ Developers * Biplov - https://github.com/beingbiplov * Rashmi Kamath - https://github.com/Rkamath2 * Anthony (Ryo) Wright - https://github.com/ryowright +* Nikitha Murikinati - https://github.com/nikithamurikinati +* Harlene Samra - https://github.com/harlenesamra +* Justine Cho - https://github.com/jcho17 +* Vaheeshta Mehrshahi - https://github.com/vaheeshta +* Jeevika Ghosh - https://github.com/jeevikaghosh * Austin Leung - https://github.com/austin-leung * Derek Li - https://github.com/derekli17 * Noah Pinter - https://github.com/nopinter + Translators ----------- diff --git a/wger/exercises/api/serializers.py b/wger/exercises/api/serializers.py index c251193b4..e033cd5e6 100644 --- a/wger/exercises/api/serializers.py +++ b/wger/exercises/api/serializers.py @@ -21,6 +21,7 @@ from wger.exercises.models import ( Equipment, Exercise, + ExerciseBase, ExerciseCategory, ExerciseComment, ExerciseImage, @@ -28,6 +29,15 @@ ) +class ExerciseBaseSerializer(serializers.ModelSerializer): + """ + Exercise serializer + """ + class Meta: + model = ExerciseBase + fields = '__all__' + + class ExerciseSerializer(serializers.ModelSerializer): """ Exercise serializer @@ -71,6 +81,7 @@ class ExerciseInfoSerializer(serializers.ModelSerializer): images = ExerciseImageSerializer(source='exerciseimage_set', many=True) comments = ExerciseCommentSerializer(source='exercisecomment_set', many=True) + exercise_base = ExerciseBaseSerializer(source='exercisebase_set', many=True) class Meta: model = Exercise @@ -78,12 +89,9 @@ class Meta: fields = ("id", "name", "uuid", - "category", "description", "creation_date", - "muscles", - "muscles_secondary", - "equipment", + "exercise_base" "language", "license", "license_author", diff --git a/wger/exercises/api/views.py b/wger/exercises/api/views.py index 3a8aa3aad..dc778506f 100644 --- a/wger/exercises/api/views.py +++ b/wger/exercises/api/views.py @@ -33,6 +33,7 @@ from wger.config.models import LanguageConfig from wger.exercises.api.serializers import ( EquipmentSerializer, + ExerciseBaseSerializer, ExerciseCategorySerializer, ExerciseCommentSerializer, ExerciseImageSerializer, @@ -55,6 +56,21 @@ from wger.utils.permissions import CreateOnlyPermission +class ExerciseBaseViewSet(viewsets.ModelViewSet): + """ + API endpoint for exercise base objects. For a read-only endpoint with all + the information of an exercise, see /api/v2/exerciseinfo/ + """ + queryset = Exercise.objects.accepted() + serializer_class = ExerciseBaseSerializer + permission_classes = (IsAuthenticatedOrReadOnly, CreateOnlyPermission) + ordering_fields = '__all__' + filterset_fields = ('category', + 'muscles', + 'muscles_secondary', + 'equipment') + + class ExerciseViewSet(viewsets.ModelViewSet): """ API endpoint for exercise objects. For a read-only endpoint with all @@ -64,15 +80,11 @@ class ExerciseViewSet(viewsets.ModelViewSet): serializer_class = ExerciseSerializer permission_classes = (IsAuthenticatedOrReadOnly, CreateOnlyPermission) ordering_fields = '__all__' - filterset_fields = ('category', - 'creation_date', + filterset_fields = ('creation_date', 'description', 'language', - 'muscles', - 'muscles_secondary', 'status', 'name', - 'equipment', 'variations', 'license', 'license_author') @@ -105,7 +117,7 @@ def search(request): exercises = (Exercise.objects.filter(name__icontains=q) .filter(language__in=languages) .filter(status=Exercise.STATUS_ACCEPTED) - .order_by('category__name', 'name') + .order_by('exercise_base__category__name', 'name') .distinct()) for exercise in exercises: @@ -123,7 +135,7 @@ def search(request): 'data': { 'id': exercise.id, 'name': exercise.name, - 'category': _(exercise.category.name), + 'category': _(exercise.exercise_base.category.name), 'image': image, 'image_thumbnail': thumbnail } @@ -143,14 +155,11 @@ class ExerciseInfoViewset(viewsets.ReadOnlyModelViewSet): queryset = Exercise.objects.accepted() serializer_class = ExerciseInfoSerializer ordering_fields = '__all__' - filterset_fields = ('category', - 'creation_date', + filterset_fields = ('creation_date', 'description', 'language', - 'muscles', - 'muscles_secondary', 'name', - 'equipment', + 'exercise_base', 'license', 'variations', 'license_author') diff --git a/wger/exercises/fixtures/exercisebase.json b/wger/exercises/fixtures/exercisebase.json new file mode 100644 index 000000000..e4c89eaa7 --- /dev/null +++ b/wger/exercises/fixtures/exercisebase.json @@ -0,0 +1,6705 @@ +[ + { + "model": "exercises.exercisebase", + "pk": 1, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 10 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 2, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8, + 6 + ], + "muscles_secondary": [ + 11 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 3, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 4, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 3, + 9, + 5 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 5, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 6, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 7, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 8, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8, + 10 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 9, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8, + 10 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 10, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [ + 9 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 11, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 12, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 2, + 4 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 13, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 14, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 15, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [ + 2, + 12 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 16, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 17, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 18, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 19, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 2, + 4 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 20, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 21, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 14 + ], + "equipment": [ + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 22, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 2, + 7, + 4, + 6, + 3, + 15, + 5 + ], + "muscles_secondary": [ + 8, + 12, + 14, + 10, + 9 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 23, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 24, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 2, + 11, + 7, + 8, + 14, + 4, + 10, + 6, + 3, + 15, + 9, + 5 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 25, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [ + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 26, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 27, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 28, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 29, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 3 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 30, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 3 + ], + "equipment": [ + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 31, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 32, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 33, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 34, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 35, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 36, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 37, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 38, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 2, + 4 + ], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 39, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 40, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 9 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 41, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 42, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 43, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 44, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 45, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1, + 11, + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 46, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 47, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 48, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 49, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 2 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 50, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 2 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 51, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 52, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1, + 13 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 53, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 54, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 55, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 56, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 57, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 58, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 59, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 60, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 61, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 2, + 7, + 8, + 14, + 4, + 10, + 6, + 3, + 15, + 5 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 62, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 63, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 64, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 65, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 66, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 67, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 68, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 69, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 70, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 71, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7, + 15 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 72, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7, + 15 + ], + "muscles_secondary": [], + "equipment": [ + 3, + 10 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 73, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7 + ], + "muscles_secondary": [ + 15 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 74, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 1, + 12 + ], + "muscles_secondary": [], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 75, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 1, + 12 + ], + "muscles_secondary": [], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 76, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1, + 13 + ], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 77, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 4 + ], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 78, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 79, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 12, + 4, + 3 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 80, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 3 + ], + "equipment": [ + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 81, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 3 + ], + "equipment": [ + 8, + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 82, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 83, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 14 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 84, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 85, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 86, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 87, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [ + 9 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 88, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 89, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [ + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 90, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 14, + 9 + ], + "muscles_secondary": [ + 11, + 13, + 8, + 12, + 10 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 91, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 92, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 93, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12, + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 94, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 95, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 96, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 97, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [ + 11, + 8, + 12, + 6, + 15 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 98, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 99, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 4, + 6 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 100, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 4, + 6 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 101, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4, + 5 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 102, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 103, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 104, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 13 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 105, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 106, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 107, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 108, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 109, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 2, + 4 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 110, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 111, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 112, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 113, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 11, + 8 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 114, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1, + 8, + 3, + 10, + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 115, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 116, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 9 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 117, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 9 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 118, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 119, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 3, + 9 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 120, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 121, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 122, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 123, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 124, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 125, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 8, + 2 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 126, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 127, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 2 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 128, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 8, + 10 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 129, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 1, + 3 + ], + "equipment": [ + 1, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 130, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 131, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 132, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 133, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 134, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 135, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 136, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 137, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 138, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 8, + 14, + 6 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 139, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 140, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 4 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 141, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8 + ], + "muscles_secondary": [ + 11 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 142, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 11, + 8 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 143, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 144, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 145, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 146, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 147, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 148, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 149, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 150, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 151, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 4, + 5 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 152, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 9, + 5 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 153, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 154, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1, + 13, + 5 + ], + "muscles_secondary": [ + 2 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 155, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 7, + 10, + 15 + ], + "muscles_secondary": [ + 14, + 6, + 3 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 156, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 7, + 10, + 15 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 157, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 158, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 159, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 11, + 8 + ], + "muscles_secondary": [ + 12, + 14, + 6, + 9 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 160, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [], + "equipment": [ + 4, + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 161, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 162, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 9 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 163, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [ + 1, + 9 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 164, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 3, + 9 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 165, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 3, + 9 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 166, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [ + 12 + ], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 167, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 14 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 168, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 11 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 169, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 170, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 14, + 6, + 5 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 171, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 172, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 173, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 174, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 175, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 176, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 177, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8 + ], + "muscles_secondary": [ + 11 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 178, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 179, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 12 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 180, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 9 + ], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 181, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 9 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 182, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 183, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8, + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 184, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 185, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12, + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 186, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 187, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 188, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 189, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 190, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 191, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 192, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 193, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 194, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 195, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 196, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 8 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 197, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 198, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 199, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 200, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 201, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 202, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 203, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 7, + 8, + 10 + ], + "muscles_secondary": [ + 7, + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 204, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 205, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 206, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 207, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 208, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 3 + ], + "equipment": [ + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 209, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 3 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 210, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 211, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 212, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 2, + 1, + 4 + ], + "muscles_secondary": [ + 8, + 10, + 6, + 3, + 9 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 213, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 214, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 215, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 216, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 217, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 218, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8, + 10 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 219, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [ + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 220, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 221, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 222, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 223, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 4, + 5 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 224, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 2 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 225, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 1, + 11 + ], + "muscles_secondary": [], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 226, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 227, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 12, + 5 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 228, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 229, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 230, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 231, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 232, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 233, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 234, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 235, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 236, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 237, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 238, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12, + 9 + ], + "muscles_secondary": [ + 1, + 5 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 239, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 240, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 241, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 8 + ], + "muscles_secondary": [ + 2, + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 242, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 243, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14, + 6 + ], + "muscles_secondary": [ + 1, + 14, + 10, + 6, + 5 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 244, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 10 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 245, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 13 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 246, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 9 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 247, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 9 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 248, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 249, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 9 + ], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 250, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 9 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 251, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 2, + 4, + 6 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 252, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 2, + 4, + 5 + ], + "muscles_secondary": [ + 13, + 3 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 253, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 254, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 255, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 8 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 256, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 257, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12, + 9 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 258, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [ + 2 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 259, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1, + 13 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 260, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4, + 5 + ], + "muscles_secondary": [ + 2 + ], + "equipment": [ + 1, + 8 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 261, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 262, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 263, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 264, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 265, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12, + 9 + ], + "muscles_secondary": [ + 10 + ], + "equipment": [ + 1, + 3, + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 266, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 267, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 268, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 269, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 270, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 271, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 272, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 273, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 274, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 275, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 276, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 277, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 278, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 279, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 280, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 281, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 282, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 3, + 9 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 283, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [ + 1, + 9 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 284, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [ + 2, + 5 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 285, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 286, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 287, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 288, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 289, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 290, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 291, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 292, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 293, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 294, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 295, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 296, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 297, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 298, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 299, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 300, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 301, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 302, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 9 + ], + "muscles_secondary": [], + "equipment": [ + 1, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 303, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 9 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 304, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 9 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 305, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 306, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 307, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 308, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [ + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 309, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 14 + ], + "muscles_secondary": [ + 6 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 310, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 14 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 311, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 312, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 2, + 14, + 4, + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 313, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 314, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 315, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 316, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 317, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 15 + ], + "muscles_secondary": [ + 7 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 318, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 319, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 4 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 320, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 321, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 322, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 323, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 324, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 2, + 1, + 11, + 13, + 7, + 8, + 12, + 14, + 4, + 10, + 6, + 3, + 15, + 9, + 5 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 325, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 10 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 326, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 327, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12, + 9 + ], + "muscles_secondary": [ + 1, + 5 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 328, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1, + 13 + ], + "muscles_secondary": [ + 13 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 329, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7 + ], + "muscles_secondary": [ + 15 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 330, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 331, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 332, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11 + ], + "muscles_secondary": [ + 8 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 333, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 334, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 335, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1, + 10, + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 336, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 8, + 12 + ], + "muscles_secondary": [], + "equipment": [ + 4 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 337, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 2, + 1, + 13 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 338, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 339, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 2, + 10 + ], + "muscles_secondary": [ + 11, + 8, + 9, + 5 + ], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 340, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 7, + 8, + 10, + 6 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 341, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 342, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [ + 2 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 343, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 344, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 345, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 346, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 347, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 348, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 349, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 350, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 351, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 5 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 352, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [ + 12 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 353, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 2, + 8, + 14, + 3 + ], + "muscles_secondary": [ + 2, + 8, + 14, + 3 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 354, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 2, + 8, + 14, + 10, + 3 + ], + "muscles_secondary": [], + "equipment": [ + 10 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 355, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 4 + ], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 356, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 357, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 358, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [ + 7, + 8, + 4, + 10, + 3, + 9 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 359, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 2, + 1, + 11, + 14, + 4, + 10, + 6, + 3, + 15, + 9, + 5 + ], + "muscles_secondary": [ + 2, + 1, + 11, + 13, + 7, + 8, + 12, + 14, + 4, + 10, + 6, + 3, + 15, + 9, + 5 + ], + "equipment": [ + 1, + 8, + 3, + 4, + 9, + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 360, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 14 + ], + "muscles_secondary": [], + "equipment": [ + 6 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 361, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 362, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [ + 2 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 363, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2, + 9 + ], + "muscles_secondary": [ + 1 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 364, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 365, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [ + 2 + ], + "muscles_secondary": [ + 9 + ], + "equipment": [ + 8, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 366, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 8 + ], + "muscles_secondary": [ + 10 + ], + "equipment": [ + 1, + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 367, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 368, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7, + 15 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 369, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 15 + ], + "muscles_secondary": [ + 7 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 370, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7 + ], + "muscles_secondary": [ + 15 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 371, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7 + ], + "muscles_secondary": [ + 15 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 372, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 14, + "muscles": [ + 7 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 373, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 13, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 374, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 2, + 4, + 5 + ], + "muscles_secondary": [ + 8, + 6, + 3, + 9 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 375, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 1, + 11, + 4, + 9, + 5 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 376, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 10 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 377, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 8, + 10 + ], + "muscles_secondary": [ + 11 + ], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 378, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 1 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 379, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 380, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 12, + "muscles": [ + 12 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 381, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [ + 1, + 13 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 382, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 6 + ], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 383, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 10, + "muscles": [ + 14 + ], + "muscles_secondary": [], + "equipment": [ + 3 + ] + } + }, + { + "model": "exercises.exercisebase", + "pk": 384, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 11, + "muscles": [ + 12, + 4, + 3 + ], + "muscles_secondary": [ + 5 + ], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 385, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [ + 11, + 7, + 8, + 10 + ], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 386, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 8, + "muscles": [], + "muscles_secondary": [], + "equipment": [] + } + }, + { + "model": "exercises.exercisebase", + "pk": 387, + "fields": { + "license": 2, + "license_author": null, + "status": "1", + "category": 9, + "muscles": [], + "muscles_secondary": [], + "equipment": [ + 7 + ] + } + } +] \ No newline at end of file diff --git a/wger/exercises/fixtures/test-exercises.json b/wger/exercises/fixtures/test-exercises.json index c74c63550..8ca9a13d6 100644 --- a/wger/exercises/fixtures/test-exercises.json +++ b/wger/exercises/fixtures/test-exercises.json @@ -77,36 +77,79 @@ }, { "pk": 1, - "model": "exercises.exercise", + "model": "exercises.exercisebase", "fields": { - "status": "2", "category": 2, - "language": 1, "muscles": [ 1, 2 ], "muscles_secondary": [ 3 - ], - "description": "", - "name": "An exercise" + ] } }, { "pk": 2, - "model": "exercises.exercise", + "model": "exercises.exercisebase", "fields": { - "status": "2", "category": 2, - "language": 2, "muscles": [ 2 ], "muscles_secondary": [ 1, 3 + ] + } + }, + { + "pk": 3, + "model": "exercises.exercisebase", + "fields": { + "category": 3, + "muscles": [ + 1 + ] + } + }, + { + "pk": 4, + "model": "exercises.exercisebase", + "fields": { + "category": 3, + "muscles": [ + 1 ], + "muscles_secondary":[] + } + }, + { + "pk": 6, + "model": "exercises.exercisebase", + "fields": { + "category": 1, + "muscles": [] + } + }, + { + "pk": 1, + "model": "exercises.exercise", + "fields": { + "status": "2", + "language": 1, + "exercise_base": 1, + "description": "", + "name": "An exercise" + } + }, + { + "pk": 2, + "model": "exercises.exercise", + "fields": { + "status": "2", + "language": 2, + "exercise_base": 2, "description": "", "name": "Very cool exercise" } @@ -116,11 +159,8 @@ "model": "exercises.exercise", "fields": { "status": "2", - "category": 3, - "language": 1, - "muscles": [ - 1 - ], + "language": 1, + "exercise_base": 3, "description": "", "name": "Boring exercise" } @@ -130,12 +170,9 @@ "model": "exercises.exercise", "fields": { "status": "1", - "category": 3, "language": 1, - "muscles": [ - 1 - ], "description": "", + "exercise_base": 3, "license_author": "test", "name": "Pending exercise" } @@ -145,12 +182,8 @@ "model": "exercises.exercise", "fields": { "status": "2", - "category": 3, "language": 1, - "muscles": [ - 1 - ], - "muscles_secondary":[], + "exercise_base": 4, "description": "", "name": "Needed for demo user" } @@ -160,12 +193,8 @@ "model": "exercises.exercise", "fields": { "status": "2", - "category": 3, "language": 1, - "muscles": [ - 1 - ], - "muscles_secondary":[], + "exercise_base": 4, "description": "", "name": "Needed for demo user" } @@ -175,12 +204,8 @@ "model": "exercises.exercise", "fields": { "status": "2", - "category": 3, "language": 2, - "muscles": [ - 1 - ], - "muscles_secondary":[], + "exercise_base": 4, "description": "", "name": "Needed for demo user" } @@ -190,12 +215,8 @@ "model": "exercises.exercise", "fields": { "status": "2", - "category": 3, "language": 2, - "muscles": [ - 1 - ], - "muscles_secondary":[], + "exercise_base": 4, "description": "", "name": "Needed for demo user" } @@ -205,12 +226,8 @@ "model": "exercises.exercise", "fields": { "status": "2", - "category": 3, "language": 2, - "muscles": [ - 1 - ], - "muscles_secondary":[], + "exercise_base": 4, "description": "", "name": "Needed for demo user" } @@ -220,12 +237,8 @@ "model": "exercises.exercise", "fields": { "status": "2", - "category": 3, "language": 2, - "muscles": [ - 1 - ], - "muscles_secondary":[], + "exercise_base": 4, "description": "", "name": "Needed for demo user" } diff --git a/wger/exercises/migrations/0008_exercisebase.py b/wger/exercises/migrations/0008_exercisebase.py new file mode 100644 index 000000000..6814ebe68 --- /dev/null +++ b/wger/exercises/migrations/0008_exercisebase.py @@ -0,0 +1,57 @@ +# Generated by Django 3.1.4 on 2020-12-11 00:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0011_auto_20201201_0653'), + ('exercises', '0007_auto_20201203_1042'), + ] + + operations = [ + migrations.CreateModel( + name='ExerciseBase', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, + verbose_name='ID')), + ('license_author', models.CharField(blank=True, + help_text='If you are not the author, enter \ + the name or source here. This is \ + needed for some licenses e.g. the \ + CC-BY-SA.', + max_length=50, null=True, + verbose_name='Author')), + ('status', models.CharField(choices=[('1', 'Pending'), ('2', 'Accepted'), + ('3', 'Declined')], + default='1', editable=False, max_length=2)), + ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, + to='exercises.exercisecategory', + verbose_name='Category')), + ('equipment', models.ManyToManyField(blank=True, to='exercises.Equipment', + verbose_name='Equipment')), + ('license', models.ForeignKey(default=2, + on_delete=django.db.models.deletion.CASCADE, + to='core.license', verbose_name='License')), + ('muscles', models.ManyToManyField(blank=True, to='exercises.Muscle', + verbose_name='Primary muscles')), + ('muscles_secondary', models.ManyToManyField(blank=True, + related_name='secondary_muscles_base', + to='exercises.Muscle', + verbose_name='Secondary muscles')), + ], + options={ + 'abstract': False, + }, + ), + migrations.AddField( + model_name='exercise', + name='exercise_base', + field=models.ForeignKey(default=None, null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='exercises', to='exercises.exercisebase', + verbose_name='ExerciseBase'), + ), + ] diff --git a/wger/exercises/migrations/0009_auto_20201211_0139.py b/wger/exercises/migrations/0009_auto_20201211_0139.py new file mode 100644 index 000000000..0b4d00908 --- /dev/null +++ b/wger/exercises/migrations/0009_auto_20201211_0139.py @@ -0,0 +1,30 @@ +# Generated by Django 3.1.4 on 2020-12-11 00:39 + +from django.db import migrations + + +def copy_columns(apps, schema_editor): + Exercise = apps.get_model('exercises', 'Exercise') + ExerciseBase = apps.get_model('exercises', 'ExerciseBase') + + for exercise in Exercise.objects.all(): + exercise_base = ExerciseBase.objects.create( + category=exercise.category, + ) + exercise_base.equipment.set(exercise.equipment.all()) + exercise_base.muscles.set(exercise.muscles.all()) + exercise_base.muscles_secondary.set(exercise.muscles_secondary.all()) + + exercise.exercise_base = exercise_base + exercise.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('exercises', '0008_exercisebase'), + ] + + operations = [ + migrations.RunPython(copy_columns), + ] diff --git a/wger/exercises/migrations/0010_auto_20201211_0205.py b/wger/exercises/migrations/0010_auto_20201211_0205.py new file mode 100644 index 000000000..54efa53c4 --- /dev/null +++ b/wger/exercises/migrations/0010_auto_20201211_0205.py @@ -0,0 +1,29 @@ +# Generated by Django 3.1.4 on 2020-12-11 01:05 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('exercises', '0009_auto_20201211_0139'), + ] + + operations = [ + migrations.RemoveField( + model_name='exercise', + name='equipment', + ), + migrations.RemoveField( + model_name='exercise', + name='muscles', + ), + migrations.RemoveField( + model_name='exercise', + name='muscles_secondary', + ), + migrations.RemoveField( + model_name='exercise', + name='category', + ), + ] diff --git a/wger/exercises/migrations/0011_auto_20201214_0033.py b/wger/exercises/migrations/0011_auto_20201214_0033.py new file mode 100644 index 000000000..17ddd327b --- /dev/null +++ b/wger/exercises/migrations/0011_auto_20201214_0033.py @@ -0,0 +1,409 @@ +# Generated by Django 3.1.4 on 2020-12-13 23:33 + +from django.db import migrations + +exercise_mapping = [ + # 111 c4856da3-8454-4857-8997-336d06df590f Squats + # 7 36c27886-b10b-41b6-ac60-f02ee3784041 Kniebeuge + # 608 993cf4e0-e664-4cc2-aa46-683c6fc7a74f Приседания + {'en': 'c4856da3-8454-4857-8997-336d06df590f', + 'de': '36c27886-b10b-41b6-ac60-f02ee3784041', + 'ru': '993cf4e0-e664-4cc2-aa46-683c6fc7a74f'}, + + # 160 b1d6d536-7f4a-4dd3-8b76-62d7a984e115 Pistol Squat + # 358 40a0019e-eaf2-491f-a134-9fdd51121358 Einbeinige Kniebeuge (Pistol Squat) + {'en': 'b1d6d536-7f4a-4dd3-8b76-62d7a984e115', 'de': '40a0019e-eaf2-491f-a134-9fdd51121358'}, + + # 346 1d90f3a8-56e4-4c15-a4b4-94fc0e114e8c Bulgarian Split Squat + # 695 cf21383b-b96a-40b5-b047-b9c3ddcab963 Bulgarian Split Squat + {'en': '1d90f3a8-56e4-4c15-a4b4-94fc0e114e8c', 'de': 'cf21383b-b96a-40b5-b047-b9c3ddcab963'}, + + # 202 eed05679-d1cb-44a2-a17d-dd5b0097c874 Pendelay Rows + # 731 196f9a72-7518-45c4-a4f2-d3ba3e0d3b3e Pendelay Rows + {'en': 'eed05679-d1cb-44a2-a17d-dd5b0097c874', 'de': '196f9a72-7518-45c4-a4f2-d3ba3e0d3b3e'}, + + # 130 2966e4a2-4306-4cb5-a2dc-8951cd192555 Leg Press on Hackenschmidt Machine + # 402 634dcf89-c346-4af8-8b09-61f238798877 Kniebeuge an Hackenschmidtmaschine + {'en': '2966e4a2-4306-4cb5-a2dc-8951cd192555', 'de': '634dcf89-c346-4af8-8b09-61f238798877'}, + + # 104 e7677699-5e4f-49e6-a645-e8915a203c4d Calf Raises on Hackenschmitt Machine + # 23 c7b98fb5-7723-471a-92a1-7b4e892a5468 Wadenheben an Hackenschmidt + {'en': 'e7677699-5e4f-49e6-a645-e8915a203c4d', 'de': 'c7b98fb5-7723-471a-92a1-7b4e892a5468'}, + + # 105 22cca8fc-cfaf-4941-b0f7-faf9f2937c52 Deadlifts + # 9 521a5e4f-6f35-43e5-9d1c-6e75c4956e96 Kreuzheben + {'en': '22cca8fc-cfaf-4941-b0f7-faf9f2937c52', 'de': '521a5e4f-6f35-43e5-9d1c-6e75c4956e96'}, + + # 570 f4dd363c-b49c-419a-b8ae-0d8e18728d8e Sumo Squats + # 762 b399006c-bb45-451e-908e-1b279b2a42a6 Sumo Squats (Pilé Squats) Kniebeuge + {'en': 'f4dd363c-b49c-419a-b8ae-0d8e18728d8e', 'de': 'b399006c-bb45-451e-908e-1b279b2a42a6'}, + + # 91 d325dd5c-6833-41c7-8eea-6b95c4871133 Crunches + # 4 0e10ac9b-ed1d-42c9-b8cc-123c22ccc5d5 Crunches + {'en': 'd325dd5c-6833-41c7-8eea-6b95c4871133', 'de': '0e10ac9b-ed1d-42c9-b8cc-123c22ccc5d5'}, + + # 92 8d6c13c6-256d-4137-b1c6-b0e817697639 Crunches With Cable + # 33 5c47b690-d19f-4523-9c47-47160693eefc Crunches am Seil + {'en': '8d6c13c6-256d-4137-b1c6-b0e817697639', 'de': '5c47b690-d19f-4523-9c47-47160693eefc'}, + + # 94 6709577b-95ec-4053-a822-d5fe1f753966 Crunches on Machine + # 51 efbece79-4384-49d1-bb88-e16fcd8de5aa Crunches an Maschine + {'en': '6709577b-95ec-4053-a822-d5fe1f753966', 'de': 'efbece79-4384-49d1-bb88-e16fcd8de5aa'}, + + # 307 1b8b1657-40fd-4e3b-97b7-1c79b1079f8e Bear Walk + # 718 e4b3da5b-1803-42af-a50e-ffbac3853cd0 Bear Walk + {'en': '1b8b1657-40fd-4e3b-97b7-1c79b1079f8e', 'de': 'e4b3da5b-1803-42af-a50e-ffbac3853cd0'}, + + # 192 5da6340b-22ec-4c1b-a443-eef2f59f92f0 Bench Press + # 15 198dcb2e-e35f-4b69-ae8b-e1124d438eae Bankdrücken LH + {'en': '5da6340b-22ec-4c1b-a443-eef2f59f92f0', 'de': '198dcb2e-e35f-4b69-ae8b-e1124d438eae'}, + + # 88 03d821e7-e1ac-4026-903b-d406381cbf76 Bench Press Narrow Grip + # 38 4def60e7-ed8d-4a9d-bf76-ceb15ecf9779 Bankdrücken Eng + {'en': '03d821e7-e1ac-4026-903b-d406381cbf76', 'de': '4def60e7-ed8d-4a9d-bf76-ceb15ecf9779'}, + + # 97 0ec76f5d-1311-4d6d-bf79-00fa17c3061a Benchpress Dumbbells + # 77 06450bcb-03a8-4bd7-8349-ef677ee57ea3 Bankdrücken KH + {'en': '0ec76f5d-1311-4d6d-bf79-00fa17c3061a', 'de': '06450bcb-03a8-4bd7-8349-ef677ee57ea3'}, + + # 129 8c6c1544-cbf8-403c-ae12-b27b392702f8 Biceps Curl With Cable + # 3 ef487de3-f071-41bf-85a6-6e76afe9c732 Bizeps am Kabel + {'en': '8c6c1544-cbf8-403c-ae12-b27b392702f8', 'de': 'ef487de3-f071-41bf-85a6-6e76afe9c732'}, + + # 80 38919515-ce04-4383-9c3f-5846edd0e844 Biceps Curls With SZ-bar + # 44 8277124a-9ef2-442a-9824-7ab4439a5f1f Bizeps Curls Mit ß-Stange + {'en': '38919515-ce04-4383-9c3f-5846edd0e844', 'de': '8277124a-9ef2-442a-9824-7ab4439a5f1f'}, + + # 74 c56078d2-ae85-4524-a467-d1e143b6df1a Biceps Curls With Barbell + # 24 2e3fa138-3894-4f61-959a-d8966804a1a3 Bizeps LH-Curls + {'en': 'c56078d2-ae85-4524-a467-d1e143b6df1a', 'de': '2e3fa138-3894-4f61-959a-d8966804a1a3'}, + + # 275 dfa090e4-77ae-40ed-86c0-4696fe93dcf1 Dumbbell Concentration Curl + # 681 ec0c53a5-15b9-4c2f-ac7c-00888db9f8ee Konzentrations-Curls + {'en': 'dfa090e4-77ae-40ed-86c0-4696fe93dcf1', 'de': 'ec0c53a5-15b9-4c2f-ac7c-00888db9f8ee'}, + + # 86 6dcc9adb-939c-4581-9e44-d0d73753997b Hammercurls + # 46 ff454f5a-70ee-40fb-9200-5e7e42960ef0 Hammercurls + {'en': '6dcc9adb-939c-4581-9e44-d0d73753997b', 'de': 'ff454f5a-70ee-40fb-9200-5e7e42960ef0'}, + + # 138 5baf40e5-ea3c-4f8d-b60a-d294ee2de55b Hammercurls on Cable + # 134 06e9de49-ac1b-45c1-b289-475118932434 Hammercurls am Seil + {'en': '5baf40e5-ea3c-4f8d-b60a-d294ee2de55b', 'de': '06e9de49-ac1b-45c1-b289-475118932434'}, + + # 771 bdcae845-6726-457f-8e04-203754a78e1c Reverse Curl + # 815 7662a76a-3ea7-4b63-86d9-c0702b554090 Reverse Curls + {'en': 'bdcae845-6726-457f-8e04-203754a78e1c', 'de': '7662a76a-3ea7-4b63-86d9-c0702b554090'}, + + # 298 fa56d30a-7a8f-4084-aa68-46bd52f97959 Dumbbell Incline Curl + # 242 0842e81e-7b90-4d68-8e6b-e9a7c0186b54 Bizeps KH-Curls Schrägbank + {'en': 'fa56d30a-7a8f-4084-aa68-46bd52f97959', 'de': '0842e81e-7b90-4d68-8e6b-e9a7c0186b54'}, + + # 81 48a59aa8-4568-409c-8afe-f8cb99c558ea Biceps Curls With Dumbbell + # 26 8cbbffcc-1989-43de-9200-03869480398c Bizeps KH-Curls + {'en': '48a59aa8-4568-409c-8afe-f8cb99c558ea', 'de': '8cbbffcc-1989-43de-9200-03869480398c'}, + + # 227 53ca25b3-61d9-4f72-bfdb-492b83484ff5 Arnold Shoulder Press + # 228 880bff63-6798-4ffc-a818-b2a1ccfec0f7 Arnold Press + {'en': '53ca25b3-61d9-4f72-bfdb-492b83484ff5', 'de': '880bff63-6798-4ffc-a818-b2a1ccfec0f7'}, + + # 150 3721be0c-2a59-4bb9-90d3-695faaf028af Shrugs, Barbells + # 137 a63d40df-a872-44e7-87d2-9b58b67d5406 Shrugs (Schulterheben) Mit LH + {'en': '3721be0c-2a59-4bb9-90d3-695faaf028af', 'de': 'a63d40df-a872-44e7-87d2-9b58b67d5406'}, + + # 151 ee61aef0-f0c7-4a7a-882a-3b39312dfffd Shrugs, Dumbbells + # 8 6dde45fc-7fdf-4523-a039-9c373677a750 Shrugs (Schulterheben) Mit KH + {'en': 'ee61aef0-f0c7-4a7a-882a-3b39312dfffd', 'de': '6dde45fc-7fdf-4523-a039-9c373677a750'}, + + # 387 b229c57f-5363-41e2-add7-c2501a31de0b Wall Squat + # 707 7f3e45fa-3b17-4cdb-90d5-cb9957212cbf Wall Squat + {'en': 'b229c57f-5363-41e2-add7-c2501a31de0b', 'de': '7f3e45fa-3b17-4cdb-90d5-cb9957212cbf'}, + + # 93 4bd55b0a-559a-4458-aabd-e66619b63610 Negative Crunches + # 32 f5e98b51-6c0e-4c77-94ec-158210669f6d Crunches an Negativbank + {'en': '4bd55b0a-559a-4458-aabd-e66619b63610', 'de': 'f5e98b51-6c0e-4c77-94ec-158210669f6d'}, + + # 330 6572a8e9-083c-4622-8f0c-6107a013a490 Superman + # 735 bd58585e-4bf4-46cc-ba38-717a7857e21c Superman + {'en': '6572a8e9-083c-4622-8f0c-6107a013a490', 'de': 'bd58585e-4bf4-46cc-ba38-717a7857e21c'}, + + # 238 7729ffe5-a896-4deb-80e0-f4e6163c0c09 Plank + # 417 257cdb33-ba8b-410a-9396-5132b08dc912 Unterarmstütze - Plank + {'en': '7729ffe5-a896-4deb-80e0-f4e6163c0c09', 'de': '257cdb33-ba8b-410a-9396-5132b08dc912'}, + + # 325 a36f852f-a29f-4f93-81b6-1012047ac1ee Side Plank + # 715 2c6cd166-40e1-4b68-96b7-c30b31e28b99 Side Plank + {'en': 'a36f852f-a29f-4f93-81b6-1012047ac1ee', 'de': '2c6cd166-40e1-4b68-96b7-c30b31e28b99'}, + + # 116 6e862700-3d63-486c-99ae-744c68d2f753 Good Mornings + # 50 a311a463-f219-4741-b4fb-247013dc8dd8 Good Mornings + {'en': '6e862700-3d63-486c-99ae-744c68d2f753', 'de': 'a311a463-f219-4741-b4fb-247013dc8dd8'}, + + # 326 bf9e572d-d138-43e9-a486-a5c6ad9033f8 Full Sit Outs + # 710 143cf744-ce94-458c-9c74-1aea6c64cfc7 Full Sit Outs + {'en': 'bf9e572d-d138-43e9-a486-a5c6ad9033f8', 'de': '143cf744-ce94-458c-9c74-1aea6c64cfc7'}, + + # 95 fb750082-7034-4c51-b1e4-dfa0fe2dac8e Sit-ups + # 57 60f329dd-f8ab-469a-8a88-39f80275b3a7 Sit Ups + {'en': 'fb750082-7034-4c51-b1e4-dfa0fe2dac8e', 'de': '60f329dd-f8ab-469a-8a88-39f80275b3a7'}, + + # 83 aa4fcd9b-baee-41cf-b4c5-8462bc43a8be Dips Between Two Benches + # 68 011b956d-33b3-4600-9e42-2e7dcbac9fb5 Dips Zwischen 2 Bänke + {'en': 'aa4fcd9b-baee-41cf-b4c5-8462bc43a8be', 'de': '011b956d-33b3-4600-9e42-2e7dcbac9fb5'}, + + # 354 6335de72-146f-4f38-886d-6b8a27db62ff Burpees + # 719 5bae16b0-cefb-4fc7-be2b-e31794335c42 Burpees + {'en': '6335de72-146f-4f38-886d-6b8a27db62ff', 'de': '5bae16b0-cefb-4fc7-be2b-e31794335c42'}, + + # 289 6add5973-86d0-4543-928a-6bb8b3f34efc Axe Hold + # 677 8e9d8968-323d-468c-9174-8cf11a105fad Axe Hold + {'en': '6add5973-86d0-4543-928a-6bb8b3f34efc', 'de': '8e9d8968-323d-468c-9174-8cf11a105fad'}, + + # 98 3c3857f8-d224-4d5a-8cc1-f4e7982d3475 Butterfly + # 30 9df24c6f-016b-4623-8878-f71c235c50fa Butterfly + {'en': '3c3857f8-d224-4d5a-8cc1-f4e7982d3475', 'de': '9df24c6f-016b-4623-8878-f71c235c50fa'}, + + # 99 08637e04-d995-4c07-b021-a20f26b6fd97 Butterfly Narrow Grip + # 52 44b0d79a-5c5b-43df-bf62-3e67148f1c33 Butterfly Eng + {'en': '08637e04-d995-4c07-b021-a20f26b6fd97', 'de': '44b0d79a-5c5b-43df-bf62-3e67148f1c33'}, + + # 124 8715a96e-c8a2-458a-b023-4ea7d82fdab8 Butterfly Reverse + # 21 605b4a25-bc1d-4604-bd93-c85b2aaf84ae Butterfly Reverse + {'en': '8715a96e-c8a2-458a-b023-4ea7d82fdab8', 'de': '605b4a25-bc1d-4604-bd93-c85b2aaf84ae'}, + + # 394 659f3fb9-2370-42fb-9c29-9aaf65c7a7de Facepull + # 415 237c8770-4c1f-433d-b8b4-b1ae5c69bbc5 Face Pulls + {'en': '659f3fb9-2370-42fb-9c29-9aaf65c7a7de', 'de': '237c8770-4c1f-433d-b8b4-b1ae5c69bbc5'}, + + # 281 e1881607-9418-4bcc-8c69-2301a579637e L Hold + # 753 6ae461d7-daea-4ac7-999b-826fe28263b0 L Hold + {'en': 'e1881607-9418-4bcc-8c69-2301a579637e', 'de': '6ae461d7-daea-4ac7-999b-826fe28263b0'}, + + # 143 b192c4eb-31c6-458e-b566-d3f38b5aa30c Long-Pulley (low Row) + # 37 91fa0487-b137-4bef-86cf-39816cd5ee48 Long-Pulley + {'en': 'b192c4eb-31c6-458e-b566-d3f38b5aa30c', 'de': '91fa0487-b137-4bef-86cf-39816cd5ee48'}, + + # 144 bcabc8cf-c005-4630-8853-ef4922e7fd91 Long-Pulley, Narrow + # 136 490a615c-4185-4560-88a5-020f3aa40be2 Long-Pulley (eng) + {'en': 'bcabc8cf-c005-4630-8853-ef4922e7fd91', 'de': '490a615c-4185-4560-88a5-020f3aa40be2'}, + + # 103 399666e7-30a7-4b86-833d-4422e4c72b61 Sitting Calf Raises + # 14 47b4d57a-3bb3-4a03-a522-a0559a254730 Wadenheben Sitzend + {'en': '399666e7-30a7-4b86-833d-4422e4c72b61', 'de': '47b4d57a-3bb3-4a03-a522-a0559a254730'}, + + # 102 abc4c62e-27b2-4c31-8766-40f8dca84cab Standing Calf Raises + # 13 283d4ec5-1b29-41bb-997d-74c30e7a68b5 Wadenheben Stehend + {'en': 'abc4c62e-27b2-4c31-8766-40f8dca84cab', 'de': '283d4ec5-1b29-41bb-997d-74c30e7a68b5'}, + + # 308 074530d6-801a-404b-b3b7-adc207be69be Calf Press Using Leg Press Machine + # 745 84afd45e-235a-41c3-8711-ea9f6d08eeb6 Wadendrücken an Beinpresse + {'en': '074530d6-801a-404b-b3b7-adc207be69be', 'de': '84afd45e-235a-41c3-8711-ea9f6d08eeb6'}, + + # 85 ee00d53e-4482-44aa-b780-bbc570061841 French Press (skullcrusher) Dumbbells + # 58 bdf8997a-84ce-434a-ae95-1f9fc50f43bb Frenchpress KH + {'en': 'ee00d53e-4482-44aa-b780-bbc570061841', 'de': 'bdf8997a-84ce-434a-ae95-1f9fc50f43bb'}, + + # 84 ee4a350b-c681-407f-a414-6ec243809ec7 French Press (skullcrusher) SZ-bar + # 25 9972e42d-43d8-43c0-b547-4638ca3e47be Frenchpress ß-Stange + {'en': 'ee4a350b-c681-407f-a414-6ec243809ec7', 'de': '9972e42d-43d8-43c0-b547-4638ca3e47be'}, + + # 788 6c8e863c-f6c2-4ad0-a0e9-5e6d9e6a928b Leg Press + # 6 a27cfdd9-5299-49ab-85f5-6e4042657549 Beinpresse + {'en': '6c8e863c-f6c2-4ad0-a0e9-5e6d9e6a928b', 'de': 'a27cfdd9-5299-49ab-85f5-6e4042657549'}, + + # 115 560e1a20-33e1-45db-ba5b-63f8c51af76d Leg Presses (narrow) + # 54 e7d0cc2d-e28b-479f-91d9-7eab7b686fd8 Beinpresse Eng + {'en': '560e1a20-33e1-45db-ba5b-63f8c51af76d', 'de': 'e7d0cc2d-e28b-479f-91d9-7eab7b686fd8'}, + + # 112 587c0052-f2bc-48ca-8af9-415175308901 Dumbbell Lunges Standing + # 55 27301836-ed7f-4510-83e7-66c0b8041a44 Ausfallschritte Stehend + # 363 c38e34a7-5560-46a1-bae4-c4fce9619e55 Výpad Statický + {'en': '587c0052-f2bc-48ca-8af9-415175308901', + 'de': '27301836-ed7f-4510-83e7-66c0b8041a44', + 'cs': 'c38e34a7-5560-46a1-bae4-c4fce9619e55'}, + + # 113 ffd4ce7e-e14f-49d4-9dc9-dc1362631382 Dumbbell Lunges Walking + # 5 5675ae61-6597-4806-ae5c-2dda5a5ac03c Ausfallschritte im Gehen + {'en': 'ffd4ce7e-e14f-49d4-9dc9-dc1362631382', 'de': '5675ae61-6597-4806-ae5c-2dda5a5ac03c'}, + + # 145 754391c6-39d5-4bb6-a311-68a520f6fd3a Fly With Dumbbells + # 18 c0119734-a412-4f34-91f1-cd1c1177fcb8 Fliegende KH Flachbank + {'en': '754391c6-39d5-4bb6-a311-68a520f6fd3a', 'de': 'c0119734-a412-4f34-91f1-cd1c1177fcb8'}, + + # 146 acf1f2df-46c4-49a3-8e6c-2979ea4204b1 Fly With Dumbbells, Decline Bench + # 73 3b34d81d-7882-46a6-bb83-40f84d3f8300 Fliegende KH Schrägbank + {'en': 'acf1f2df-46c4-49a3-8e6c-2979ea4204b1', 'de': '3b34d81d-7882-46a6-bb83-40f84d3f8300'}, + + # 409 75ec610d-216a-49fe-b395-c5fd8ee14b53 Reverse Plank + # 713 24e5637e-60eb-41f5-b964-31e2af990bfc Reverse Plank + {'en': '75ec610d-216a-49fe-b395-c5fd8ee14b53', 'de': '24e5637e-60eb-41f5-b964-31e2af990bfc'}, + + # 181 f6c4e2fa-226d-46e8-87dc-75fc8cd628bd Chin-ups + # 747 9e71d2a3-9021-4270-a7b9-0d8bd28e7394 Chin-ups + {'en': 'f6c4e2fa-226d-46e8-87dc-75fc8cd628bd', 'de': '9e71d2a3-9021-4270-a7b9-0d8bd28e7394'}, + + # 346 1d90f3a8-56e4-4c15-a4b4-94fc0e114e8c Bulgarian Split Squat + # 695 cf21383b-b96a-40b5-b047-b9c3ddcab963 Bulgarian Split Squat + {'en': '1d90f3a8-56e4-4c15-a4b4-94fc0e114e8c', 'de': 'cf21383b-b96a-40b5-b047-b9c3ddcab963'}, + + # 781 7191e015-0c60-4376-9be0-733b9754b7f8 Dips + # 29 41b495fd-562e-4d6e-942a-60dc52d5e194 Dips + {'en': '7191e015-0c60-4376-9be0-733b9754b7f8', 'de': '41b495fd-562e-4d6e-942a-60dc52d5e194'}, + + # 279 88568115-5e88-4afc-b005-e2f7d453ac13 Tricep Dumbbell Kickback + # 232 ebe60386-bf33-4f50-87a6-d44c5f454158 Kick-Backs + {'en': '88568115-5e88-4afc-b005-e2f7d453ac13', 'de': 'ebe60386-bf33-4f50-87a6-d44c5f454158'}, + + # 128 f57a0c60-7d37-4eb3-a94e-1a90292e8c02 Hyperextensions + # 60 913d71cc-ba7a-4902-bfa8-3c5203129d72 Hyperextensions + {'en': 'f57a0c60-7d37-4eb3-a94e-1a90292e8c02', 'de': '913d71cc-ba7a-4902-bfa8-3c5203129d72'}, + + # 195 9d756e84-6b77-4f17-b21d-7d266d6a8bd2 Push Ups + # 172 35871103-6cfe-493f-afe1-8401f88fed84 Liegestütz + {'en': '9d756e84-6b77-4f17-b21d-7d266d6a8bd2', 'de': '35871103-6cfe-493f-afe1-8401f88fed84'}, + + # 260 36ef5f12-6f77-4754-a926-39915e4b57a5 Decline Pushups + # 721 e386cd27-aef6-4565-88ad-639b0ea04e3a Negativ Pushups + {'en': '36ef5f12-6f77-4754-a926-39915e4b57a5', 'de': 'e386cd27-aef6-4565-88ad-639b0ea04e3a'}, + + # 139 88bbdbde-c9b6-45a1-aee9-efc6f02cfab3 Triceps Machine + # 27 ca03dd79-4a92-47ef-a461-e67ccc406f82 Trizepsmaschine + {'en': '88bbdbde-c9b6-45a1-aee9-efc6f02cfab3', 'de': 'ca03dd79-4a92-47ef-a461-e67ccc406f82'}, + + # 338 20b88059-3958-4184-9134-b48656ad868d Isometric Wipers + # 724 666d1c77-d74b-411c-be3e-1e60a02c548d Isometric Wipers + {'en': '20b88059-3958-4184-9134-b48656ad868d', 'de': '666d1c77-d74b-411c-be3e-1e60a02c548d'}, + + # 90 20a76bd0-1e56-4a4e-bd79-0ab118552bde Triceps Extensions on Cable With Bar + # 63 60aab5bf-ff7a-4e50-9e92-1f4813c3da75 Trizeps Seildrücken Mit Stange + {'en': '20a76bd0-1e56-4a4e-bd79-0ab118552bde', 'de': '60aab5bf-ff7a-4e50-9e92-1f4813c3da75'}, + + # 89 f1b5e525-6232-4d60-a243-9b2cd6c55298 Triceps Extensions on Cable + # 1 b83e3d85-a53d-4939-a61c-7baa2e94d358 Trizeps Seildrücken + {'en': 'f1b5e525-6232-4d60-a243-9b2cd6c55298', 'de': 'b83e3d85-a53d-4939-a61c-7baa2e94d358'}, + + # 270 625aefd5-7ba2-40e9-bdc3-7d3ab1bcf3b8 Pause Bench + # 725 5009eedc-554f-43ef-852e-77ba45a7297c Pause Bench + {'en': '625aefd5-7ba2-40e9-bdc3-7d3ab1bcf3b8', 'de': '5009eedc-554f-43ef-852e-77ba45a7297c'}, + + # 149 79a3a34c-262f-4cae-b827-b5a85b11b860 Lateral Raises on Cable, One Armed + # 132 382731d2-ae07-4a3c-a055-09dadd5f12e0 Seitheben am Kabel, Einarmig + {'en': '79a3a34c-262f-4cae-b827-b5a85b11b860', 'de': '382731d2-ae07-4a3c-a055-09dadd5f12e0'}, + + # 148 5345766a-c092-457a-aa21-8ee6ffa855d4 Lateral Raises + # 20 72e78f4d-65f7-4ddd-9247-cdc1e133fa80 Seitheben KH + {'en': '5345766a-c092-457a-aa21-8ee6ffa855d4', 'de': '72e78f4d-65f7-4ddd-9247-cdc1e133fa80'}, + + # 191 f2e563d2-507b-4586-88c8-77652cd19648 Front Squats + # 390 d23d1980-3a50-4d3f-8123-90d7e55c7804 Front Kniebeuge + {'en': 'f2e563d2-507b-4586-88c8-77652cd19648', 'de': 'd23d1980-3a50-4d3f-8123-90d7e55c7804'}, + + # 229 89e6d2ea-9a17-4a77-9a52-d5bcf39d57fd Military Press + # 153 47c33837-be38-4ebb-b19a-84c280f5f2b0 Frontdrücken LH + {'en': '89e6d2ea-9a17-4a77-9a52-d5bcf39d57fd', 'de': '47c33837-be38-4ebb-b19a-84c280f5f2b0'}, + + # 854 37097633-de80-4271-9b7c-291f359e0ef4 Hip Thrust + # 230 981ef1f0-414a-478b-bc1b-9c6afa45bc77 Beckenheben + {'en': '37097633-de80-4271-9b7c-291f359e0ef4', 'de': '981ef1f0-414a-478b-bc1b-9c6afa45bc77'}, + + # 177 a24a0521-6391-419c-bd89-795bba0eb5ee Leg Extension + # 133 da7fccca-941e-457a-a2eb-d0c56d419938 Beinbeuger Sitzend + {'en': 'a24a0521-6391-419c-bd89-795bba0eb5ee', 'de': 'da7fccca-941e-457a-a2eb-d0c56d419938'}, + + # 109 f82c579e-c069-4dc7-8e36-a3266dfd8e4a Bent Over Rowing + # 59 126d719a-4b59-4458-b182-d578cdcfee1a Rudern Vorgebeugt LH + {'en': 'f82c579e-c069-4dc7-8e36-a3266dfd8e4a', 'de': '126d719a-4b59-4458-b182-d578cdcfee1a'}, + + # 108 57747eb3-411a-4efd-8842-a45e562320ee Rowing, Seated + # 245 788ef0a5-492f-48a7-87dc-b15dda185bb8 Rudern Eng Zum Bauch + {'en': '57747eb3-411a-4efd-8842-a45e562320ee', 'de': '788ef0a5-492f-48a7-87dc-b15dda185bb8'}, + + # 119 9926e18f-4e2b-4c20-9477-9bfb08d229bc Shoulder Press, Barbell + # 266 197600e7-9bb2-448c-baca-244d679e7b07 Schulterdrücken LH + {'en': '9926e18f-4e2b-4c20-9477-9bfb08d229bc', 'de': '197600e7-9bb2-448c-baca-244d679e7b07'}, + + # 123 1df6a1b5-7bd2-402f-9d5e-94f9ed6d8b54 Shoulder Press, Dumbbells + # 241 0d4390ea-51dc-42dc-94af-ba0e94a73484 Schulterdrücken KH + {'en': '1df6a1b5-7bd2-402f-9d5e-94f9ed6d8b54', 'de': '0d4390ea-51dc-42dc-94af-ba0e94a73484'}, + + # 107 7ce6b090-5099-4cd0-83ae-1a02725c868b Pull-ups + # 36 4e741c73-d40a-4fad-b0e0-76edd9bbe8df Klimmzüge + {'en': '7ce6b090-5099-4cd0-83ae-1a02725c868b', 'de': '4e741c73-d40a-4fad-b0e0-76edd9bbe8df'}, + + # 140 d46adbda-7c60-42a0-b1fd-9ec111b35956 Pull Ups on Machine + # 48 22897ebe-cf17-44cf-97e6-87566285684d Klimmzüge an Maschine + {'en': 'd46adbda-7c60-42a0-b1fd-9ec111b35956', 'de': '22897ebe-cf17-44cf-97e6-87566285684d'}, + + # 87 d147a6c2-ce64-424b-baf3-4ca841a51512 Dumbbells on Scott Machine + # 28 d7c553b1-e84d-4dbc-9f6c-05db489b27c8 KH an Scottmaschine + {'en': 'd147a6c2-ce64-424b-baf3-4ca841a51512', 'de': 'd7c553b1-e84d-4dbc-9f6c-05db489b27c8'}, + + # 100 b72ae8d4-ede6-4480-8fc5-7b80e369f7ed Decline Bench Press Barbell + # 17 3ef8a516-d0d4-4078-9b4a-d7783da0fcf7 Negativ Bankdrücken + {'en': 'b72ae8d4-ede6-4480-8fc5-7b80e369f7ed', 'de': '3ef8a516-d0d4-4078-9b4a-d7783da0fcf7'}, + + # 101 80d318b3-4b8a-41aa-9c6c-0a2a921fe1e6 Decline Bench Press Dumbbell + # 720 341c73d5-2e9a-4f13-89c9-c984c86cc088 Negativ Bankdrücken KH + {'en': '80d318b3-4b8a-41aa-9c6c-0a2a921fe1e6', 'de': '341c73d5-2e9a-4f13-89c9-c984c86cc088'}, + + # 318 bd07fc6b-db86-4139-b6de-e328cea0f694 Turkish Get-Up + # 717 1546af08-017c-4de5-b13f-cb3a1999733d Turkish Get-Up + {'en': 'bd07fc6b-db86-4139-b6de-e328cea0f694', 'de': '1546af08-017c-4de5-b13f-cb3a1999733d'}, + + # 154 cd4fac32-48fb-4237-a263-a44c5108790a Leg Curls (laying) + # 22 8f0170a2-5274-4487-a295-1a9baf2c92a3 Beinbeuger Liegend + {'en': 'cd4fac32-48fb-4237-a263-a44c5108790a', 'de': '8f0170a2-5274-4487-a295-1a9baf2c92a3'}, + + # 118 89c98117-dd53-4334-bfa6-72a96525629a Leg Curls (standing) + # 72 9075241c-0493-4f2a-a399-a57e3634093e Beinbeuger Stehend + {'en': '89c98117-dd53-4334-bfa6-72a96525629a', 'de': '9075241c-0493-4f2a-a399-a57e3634093e'}, + + # 263 9f622058-85a4-4272-ad99-e5696e772137 Roman Chair + # 714 68f96d3e-9172-468c-9018-06f71a97faff Beinheben am Roman Chair + {'en': '9f622058-85a4-4272-ad99-e5696e772137', 'de': '68f96d3e-9172-468c-9018-06f71a97faff'}, + + # 421 170cc52f-345f-41b3-bdae-8a5e0c9aa449 Bent-over Lateral Raises + # 47 e701de98-32c6-4e9d-956d-434cf5bcaaf0 Vorgebeugtes Seitheben + {'en': '170cc52f-345f-41b3-bdae-8a5e0c9aa449', 'de': 'e701de98-32c6-4e9d-956d-434cf5bcaaf0'}, + + # 185 bdb7bdbb-8930-46e5-8b98-eb13e604553f Squat Jumps + # 296 032a38cf-b15a-4761-b684-577e41893f54 Tiefe Hocksprünge + {'en': 'bdb7bdbb-8930-46e5-8b98-eb13e604553f', 'de': '032a38cf-b15a-4761-b684-577e41893f54'}, +] + + +def create_exercise_mapping(apps, schema_editor): + Exercise = apps.get_model('exercises', 'Exercise') + ExerciseBase = apps.get_model('exercises', 'ExerciseBase') + for exercise_group in exercise_mapping: + langs = list(exercise_group.keys()) + exercise_objects = [] + for lang in langs: + try: + exercise_objects.append(Exercise.objects.get(uuid=exercise_group[lang])) + except Exercise.DoesNotExist: + print(exercise_group[lang], "does not exist") + + if(len(exercise_objects) > 0): + exercise_base_main = exercise_objects[0].exercise_base + for exercise in exercise_objects[1:]: + ExerciseBase.objects.get(id=exercise.exercise_base.id).delete() + exercise.exercise_base = exercise_base_main + exercise.save() + + +def remove_mappings(apps, schema_editor): + """ + Backwards migration. + """ + pass + + +class Migration(migrations.Migration): + + dependencies = [ + ('exercises', '0010_auto_20201211_0205'), + ] + + operations = [ + migrations.RunPython(create_exercise_mapping, remove_mappings), + ] diff --git a/wger/exercises/models.py b/wger/exercises/models.py index 01769c222..efafcbe3b 100644 --- a/wger/exercises/models.py +++ b/wger/exercises/models.py @@ -171,9 +171,9 @@ def get_owner_object(self): return False -class Exercise(AbstractSubmissionModel, AbstractLicenseModel, models.Model): +class ExerciseBase(AbstractSubmissionModel, AbstractLicenseModel, models.Model): """ - Model for an exercise + Model for an exercise base """ objects = SubmissionManager() @@ -182,19 +182,6 @@ class Exercise(AbstractSubmissionModel, AbstractLicenseModel, models.Model): category = models.ForeignKey(ExerciseCategory, verbose_name=_('Category'), on_delete=models.CASCADE) - description = models.TextField(max_length=2000, - verbose_name=_('Description'), - validators=[MinLengthValidator(40)]) - """Description on how to perform the exercise""" - - name = models.CharField(max_length=200, - verbose_name=_('Name')) - """The exercise's name, with correct uppercase""" - - name_original = models.CharField(max_length=200, - verbose_name=_('Name'), - default='') - """The exercise's name, as entered by the user""" muscles = models.ManyToManyField(Muscle, blank=True, @@ -203,7 +190,7 @@ class Exercise(AbstractSubmissionModel, AbstractLicenseModel, models.Model): muscles_secondary = models.ManyToManyField(Muscle, verbose_name=_('Secondary muscles'), - related_name='secondary_muscles', + related_name='secondary_muscles_base', blank=True) """Secondary muscles trained by the exercise""" @@ -212,6 +199,29 @@ class Exercise(AbstractSubmissionModel, AbstractLicenseModel, models.Model): blank=True) """Equipment needed by this exercise""" + +class Exercise(AbstractSubmissionModel, AbstractLicenseModel, models.Model): + """ + Model for an exercise + """ + + objects = SubmissionManager() + """Custom manager""" + + description = models.TextField(max_length=2000, + verbose_name=_('Description'), + validators=[MinLengthValidator(40)]) + """Description on how to perform the exercise""" + + name = models.CharField(max_length=200, + verbose_name=_('Name')) + """The exercise's name, with correct uppercase""" + + name_original = models.CharField(max_length=200, + verbose_name=_('Name'), + default='') + """The exercise's name, as entered by the user""" + creation_date = models.DateField(_('Date'), auto_now_add=True, null=True, @@ -239,6 +249,14 @@ class Exercise(AbstractSubmissionModel, AbstractLicenseModel, models.Model): ) """Variations of this exercise""" + exercise_base = models.ForeignKey(ExerciseBase, + verbose_name=('ExerciseBase'), + on_delete=models.CASCADE, + default=None, + null=True, + related_name='exercises') + """ Refers to the base exercise with non translated information """ + # # Django methods # @@ -352,7 +370,6 @@ def send_email(self, request): def set_author(self, request): """ Set author and status - This is only used when creating exercises (via web or API) """ if request.user.has_perm('exercises.add_exercise'): @@ -471,7 +488,6 @@ def get_owner_object(self): def set_author(self, request): """ Set author and status - This is only used when creating images (via web or API) """ if request.user.has_perm('exercises.add_exerciseimage'): diff --git a/wger/exercises/templates/equipment/overview.html b/wger/exercises/templates/equipment/overview.html index 406496d98..ff9f61326 100644 --- a/wger/exercises/templates/equipment/overview.html +++ b/wger/exercises/templates/equipment/overview.html @@ -45,37 +45,39 @@
- {% for exercise in equipment.exercise_set.all %} - {% if exercise.language in exercise_languages %} - - - - {% endif %} - {% empty %} - {% trans "No exercises for this equipment. Add or edit an exercise and set the equipment." %} + {% empty %} + {% trans "No exercises for this equipment. Add or edit an exercise and set the equipment." %} + {% endfor %} {% endfor %}
diff --git a/wger/exercises/templates/exercise/email_correction.tpl b/wger/exercises/templates/exercise/email_correction.tpl index 5813c1a4b..4addff4b3 100644 --- a/wger/exercises/templates/exercise/email_correction.tpl +++ b/wger/exercises/templates/exercise/email_correction.tpl @@ -15,7 +15,7 @@ Changes to the exercise: - New: {{ form_data.name }} * Category: - - Original: {{ exercise.category }} + - Original: {{ exercise.exercise_base.category }} - New: {{ form_data.category }} * Description: @@ -23,15 +23,15 @@ Changes to the exercise: - New: {{ form_data.description }} * Muscles (primary): - - Original: {{ exercise.muscles.all|join:", " }} + - Original: {{ exercise.exercise_base.muscles.all|join:", " }} - New: {{ form_data.muscles.all|join:", " }} * Muscles (secondary): - - Original: {{ exercise.muscles_secondary.all|join:", " }} + - Original: {{ exercise.exercise_base.muscles_secondary.all|join:", " }} - New: {{ form_data.muscles_secondary.all|join:", " }} * Equipment: - - Original: {{ exercise.equipment.all|join:", " }} + - Original: {{ exercise.exercise_base.equipment.all|join:", " }} - New: {{ form_data.equipment.all|join:", " }} * License: diff --git a/wger/exercises/templates/exercise/overview.html b/wger/exercises/templates/exercise/overview.html index 64910d975..270d9d488 100644 --- a/wger/exercises/templates/exercise/overview.html +++ b/wger/exercises/templates/exercise/overview.html @@ -39,7 +39,7 @@ {% block content %} {% cache cache_timeout exercise-overview language.id %} -{% regroup exercises by category as exercise_list %} +{% regroup exercises by exercise_base.category as exercise_list %}
{% for item in exercise_list %}
@@ -69,11 +69,11 @@

{{ exercise.name }}

- {{ exercise.equipment.all|join:", " }} + {{ exercise.exercise_base.equipment.all|join:", " }}
diff --git a/wger/exercises/templates/exercise/view.html b/wger/exercises/templates/exercise/view.html index 38a7a72de..cc5e6bfe0 100644 --- a/wger/exercises/templates/exercise/view.html +++ b/wger/exercises/templates/exercise/view.html @@ -74,11 +74,11 @@
{% trans "Category" %}:
-{% trans exercise.category.name %} +{% trans exercise.exercise_base.category.name %} -{% if exercise.equipment.all %} +{% if exercise.exercise_base.equipment.all %}
{% trans "Equipment" %}:
- {% for equipment in exercise.equipment.all %} + {% for equipment in exercise.exercise_base.equipment.all %} {% trans equipment.name %} {% if not forloop.last %}, {% endif %} {% endfor %} diff --git a/wger/exercises/templates/muscles/overview.html b/wger/exercises/templates/muscles/overview.html index 8a26b5198..6f6c59287 100644 --- a/wger/exercises/templates/muscles/overview.html +++ b/wger/exercises/templates/muscles/overview.html @@ -47,37 +47,39 @@ {% render_muscles muscle %}
- {% for exercise in muscle.exercise_set.all %} - {% if exercise.language in active_languages %} - -
- {% if exercise.main_image %} - {{ exercise.name }} - {% else %} - {% trans 'Placeholder image for exercise' %} - {% endif %} -
-

{{ exercise.name }}

- - {% trans exercise.category.name %} - - -
-
-
- {% endif %} - {% empty %} - {% trans "No exercises for this equipment. Add or edit an exercise and set the equipment." %} + {% for exercise_base in muscle.exercisebase_set.all %} + {% for exercise in exercise_base.exercises.all %} + {% if exercise.language in active_languages %} + +
+ {% if exercise.main_image %} + {{ exercise.name }} + {% else %} + {% trans 'Placeholder image for exercise' %} + {% endif %} +
+

{{ exercise.name }}

+ + {% trans exercise.exercise_base.category.name %} + + +
+
+
+ {% endif %} + {% empty %} + {% trans "No exercises for this muscle. Add or edit an exercise and set the muscle." %} + {% endfor %} {% endfor %}
diff --git a/wger/exercises/tests/test_corrected_exercise.py b/wger/exercises/tests/test_corrected_exercise.py index 7c8341462..332adfa07 100644 --- a/wger/exercises/tests/test_corrected_exercise.py +++ b/wger/exercises/tests/test_corrected_exercise.py @@ -32,11 +32,11 @@ def correct_exercise(self, fail=True): """ description = 'a nice, long and accurate description for the exercise' response = self.client.post(reverse('exercise:exercise:correct', kwargs={'pk': 1}), - {'category': 3, - 'name_original': 'my test exercise', + {'name_original': 'my test exercise', 'license': 2, 'description': description, - 'muscles': [3]}) + 'muscles': [3], + 'category': 3}) if fail: self.assertEqual(response.status_code, 403) @@ -50,10 +50,10 @@ def correct_exercise(self, fail=True): exercise = Exercise.objects.get(pk=1) self.assertEqual(exercise.name, 'An exercise') self.assertEqual(exercise.description, '') - self.assertEqual(exercise.category_id, 2) + self.assertEqual(exercise.exercise_base.category_id, 2) self.assertEqual(exercise.language_id, 1) - self.assertEqual([i.pk for i in exercise.muscles.all()], [1, 2]) - self.assertEqual([i.pk for i in exercise.muscles_secondary.all()], [3]) + self.assertEqual([i.pk for i in exercise.exercise_base.muscles.all()], [1, 2]) + self.assertEqual([i.pk for i in exercise.exercise_base.muscles_secondary.all()], [3]) # Check the notification email if fail: diff --git a/wger/exercises/tests/test_equipment.py b/wger/exercises/tests/test_equipment.py index 745d51769..4d15c875f 100644 --- a/wger/exercises/tests/test_equipment.py +++ b/wger/exercises/tests/test_equipment.py @@ -164,7 +164,7 @@ def test_equipmet_cache_update(self): exercise = Exercise.objects.get(pk=2) exercise.name = 'Very cool exercise 2' exercise.description = 'New description' - exercise.equipment.add(Equipment.objects.get(pk=2)) + exercise.exercise_base.equipment.add(Equipment.objects.get(pk=2)) exercise.save() self.assertFalse(cache.get(make_template_fragment_key('equipment-overview', [2]))) diff --git a/wger/exercises/tests/test_exercise.py b/wger/exercises/tests/test_exercise.py index a97f37948..0b9543f35 100644 --- a/wger/exercises/tests/test_exercise.py +++ b/wger/exercises/tests/test_exercise.py @@ -89,18 +89,20 @@ def exercise_index(self, logged_in=True, demo=False, admin=False): self.assertEqual(response.context['active_tab'], WORKOUT_TAB) # Correct categories are shown - category_1 = response.context['exercises'][0].category + category_1 = response.context['exercises'][0].exercise_base.category self.assertEqual(category_1.id, 2) self.assertEqual(category_1.name, "Another category") - category_2 = response.context['exercises'][1].category + category_2 = response.context['exercises'][1].exercise_base.category self.assertEqual(category_2.id, 3) self.assertEqual(category_2.name, "Yet another category") # Correct exercises in the categories - exercises_1 = category_1.exercise_set.all() + exercise_bases_1 = category_1.exercisebase_set.all() + exercises_1 = exercise_bases_1[0].exercises.all() + exercises_2 = exercise_bases_1[1].exercises.all() exercise_1 = exercises_1[0] - exercise_2 = exercises_1[1] + exercise_2 = exercises_2[0] self.assertEqual(exercise_1.id, 1) self.assertEqual(exercise_1.name, "An exercise") @@ -181,7 +183,7 @@ def exercise_detail(self, editor=False): exercise_1 = response.context['exercise'] self.assertEqual(exercise_1.id, 1) - muscles = exercise_1.muscles.all() + muscles = exercise_1.exercise_base.muscles.all() muscle_1 = muscles[0] muscle_2 = muscles[1] @@ -241,10 +243,12 @@ def add_exercise_user_fail(self): # Add an exercise count_before = Exercise.objects.count() response = self.client.post(reverse('exercise:exercise:add'), - {'category': 2, - 'name_original': 'my test exercise', + {'name_original': 'my test exercise', 'license': 1, - 'muscles': [1, 2]}) + 'exercise_base': { + 'category': 2, + 'muscles': [1, 2] + }}) count_after = Exercise.objects.count() self.assertIn(response.status_code, STATUS_CODES_FAIL) @@ -277,10 +281,10 @@ def add_exercise_success(self, admin=False): count_before = Exercise.objects.count() description = 'a nice, long and accurate description for the exercise' response = self.client.post(reverse('exercise:exercise:add'), - {'category': 2, - 'name_original': 'my test exercise', + {'name_original': 'my test exercise', 'license': 1, 'description': description, + 'category': 2, 'muscles': [1, 2]}) count_after = Exercise.objects.count() self.assertEqual(response.status_code, 302) @@ -310,18 +314,20 @@ def add_exercise_success(self, admin=False): # Wrong category - adding response = self.client.post(reverse('exercise:exercise:add'), - {'category': 111, - 'name_original': 'my test exercise', + {'name_original': 'my test exercise', 'license': 1, - 'muscles': [1, 2]}) + 'category': 111, + 'muscles': [1, 2] + }) self.assertTrue(response.context['form'].errors['category']) # Wrong category - editing response = self.client.post(reverse('exercise:exercise:edit', kwargs={'pk': '1'}), - {'category': 111, - 'name_original': 'my test exercise', + {'name_original': 'my test exercise', 'license': 1, - 'muscles': [1, 2]}) + 'category': 111, + 'muscles': [1, 2] + }) if admin: self.assertTrue(response.context['form'].errors['category']) else: @@ -329,18 +335,20 @@ def add_exercise_success(self, admin=False): # No muscles - adding response = self.client.post(reverse('exercise:exercise:add'), - {'category': 1, - 'name_original': 'my test exercise', + {'name_original': 'my test exercise', 'license': 1, - 'muscles': []}) + 'category': 1, + 'muscles': [] + }) self.assertEqual(response.status_code, 302) # No muscles - editing response = self.client.post(reverse('exercise:exercise:edit', kwargs={'pk': '1'}), - {'category': 1, - 'name_original': 'my test exercise', + {'name_original': 'my test exercise', 'license': 1, - 'muscles': []}) + 'category': 1, + 'muscles': [] + }) if admin: self.assertEqual(response.status_code, 302) else: @@ -449,7 +457,7 @@ def test_overview_cache_update(self): exercise = Exercise.objects.get(pk=2) exercise.name = 'Very cool exercise 2' exercise.description = 'New description' - exercise.muscles_secondary.add(Muscle.objects.get(pk=2)) + exercise.exercise_base.muscles_secondary.add(Muscle.objects.get(pk=2)) exercise.save() self.assertFalse(cache.get(make_template_fragment_key('muscle-overview', [2]))) diff --git a/wger/exercises/views/exercises.py b/wger/exercises/views/exercises.py index 64c7aacae..c8d88e68b 100644 --- a/wger/exercises/views/exercises.py +++ b/wger/exercises/views/exercises.py @@ -70,7 +70,9 @@ # wger from wger.config.models import LanguageConfig from wger.exercises.models import ( + Equipment, Exercise, + ExerciseBase, ExerciseCategory, Muscle ) @@ -111,7 +113,7 @@ def get_queryset(self): languages = load_item_languages(LanguageConfig.SHOW_ITEM_EXERCISES) return Exercise.objects.accepted() \ .filter(language__in=languages) \ - .order_by('category__id') \ + .order_by('exercise_base__category__id') \ .select_related() def get_context_data(self, **kwargs): @@ -133,13 +135,14 @@ def view(request, id, slug=None): template_data['show_shariff'] = True exercise = get_object_or_404(Exercise, pk=id) + exercise_base = exercise.exercise_base template_data['exercise'] = exercise - template_data["muscles_main_front"] = exercise.muscles.filter(is_front=True) - template_data["muscles_main_back"] = exercise.muscles.filter(is_front=False) - template_data["muscles_sec_front"] = exercise.muscles_secondary.filter(is_front=True) - template_data["muscles_sec_back"] = exercise.muscles_secondary.filter(is_front=False) + template_data["muscles_main_front"] = exercise_base.muscles.filter(is_front=True) + template_data["muscles_main_back"] = exercise_base.muscles.filter(is_front=False) + template_data["muscles_sec_front"] = exercise_base.muscles_secondary.filter(is_front=True) + template_data["muscles_sec_back"] = exercise_base.muscles_secondary.filter(is_front=False) # If the user is logged in, load the log and prepare the entries for # rendering in the D3 chart @@ -184,6 +187,10 @@ class ExerciseForm(ModelForm): widget=CheckboxSelectMultiple(), required=False) + equipment = ModelMultipleChoiceField(queryset=Equipment.objects.all(), + widget=CheckboxSelectMultiple(), + required=False) + description = CharField(label=_('Description'), widget=Textarea, required=False) @@ -207,6 +214,13 @@ class Media: def get_form(self, form_class=None): form = super(ExercisesEditAddView, self).get_form(form_class) + exercise = self.get_form_kwargs()['instance'] + if exercise is not None: + form.fields['category'].initial = exercise.exercise_base.category + form.fields['equipment'].initial = exercise.exercise_base.equipment.all() + form.fields['muscles'].initial = exercise.exercise_base.muscles.all() + form.fields['muscles_secondary'].initial = \ + exercise.exercise_base.muscles_secondary.all() form.helper.layout = Layout( "name_original", "description", @@ -225,6 +239,16 @@ def get_form(self, form_class=None): ) return form + def form_valid(self, form): + exercise_base = Exercise.objects.filter(name=form.instance.name)[0].exercise_base + exercise_base.equipment.set(form.cleaned_data['equipment'].all()) + exercise_base.muscles.set(form.cleaned_data['muscles'].all()) + exercise_base.muscles_secondary.set(form.cleaned_data['muscles_secondary'].all()) + + form.instance.exercise_base = exercise_base + form.instance.save() + return super(ExercisesEditAddView, self).form_valid(form) + class ExerciseUpdateView(ExercisesEditAddView, LoginRequiredMixin, @@ -238,7 +262,6 @@ class ExerciseUpdateView(ExercisesEditAddView, def get_context_data(self, **kwargs): context = super(ExerciseUpdateView, self).get_context_data(**kwargs) context['title'] = _('Edit {0}').format(self.object.name) - return context @@ -253,6 +276,26 @@ def form_valid(self, form): """ form.instance.language = load_language() form.instance.set_author(self.request) + existing = ExerciseBase.objects.filter( + category=ExerciseCategory.objects.get(name=form.cleaned_data['category'])) + for elem in form.cleaned_data['equipment'].all(): + existing = existing.filter(equipment=elem) + for elem in form.cleaned_data['muscles'].all(): + existing = existing.filter(muscles=elem) + for elem in form.cleaned_data['muscles_secondary'].all(): + existing = existing.filter(equipment=elem) + if not existing: + exercise_base = ExerciseBase.objects.create( + category=ExerciseCategory.objects.get(name=form.cleaned_data['category'])) + exercise_base.equipment.set(form.cleaned_data['equipment'].all()) + exercise_base.muscles.set(form.cleaned_data['muscles'].all()) + exercise_base.muscles_secondary.set(form.cleaned_data['muscles_secondary'].all()) + else: + exercise_base = existing.first() + + form.instance.exercise_base = exercise_base + form.instance.save() + return super(ExerciseAddView, self).form_valid(form) def dispatch(self, request, *args, **kwargs): @@ -318,12 +361,8 @@ class ExerciseDeleteView(WgerDeleteMixin, """ model = Exercise - fields = ('category', - 'description', - 'name_original', - 'muscles', - 'muscles_secondary', - 'equipment') + fields = ('description', + 'name_original') success_url = reverse_lazy('exercise:exercise:overview') delete_message_extra = ugettext_lazy('This will delete the exercise from all workouts.') messages = ugettext_lazy('Successfully deleted') diff --git a/wger/manager/models.py b/wger/manager/models.py index 85ec7deeb..4cec2c4f8 100644 --- a/wger/manager/models.py +++ b/wger/manager/models.py @@ -468,13 +468,13 @@ def get_canonical_representation(self): exercise_images_tmp = [] # Muscles for this set - for muscle in exercise.muscles.all(): + for muscle in exercise.exercise_base.muscles.all(): if muscle.is_front and muscle not in muscles_front: muscles_front.append(muscle) elif not muscle.is_front and muscle not in muscles_back: muscles_back.append(muscle) - for muscle in exercise.muscles_secondary.all(): + for muscle in exercise.exercise_base.muscles_secondary.all(): if muscle.is_front and muscle not in muscles_front: muscles_front_secondary.append(muscle) elif not muscle.is_front and muscle.id not in muscles_back: diff --git a/wger/manager/signals.py b/wger/manager/signals.py index f3a6df408..ee18a4296 100644 --- a/wger/manager/signals.py +++ b/wger/manager/signals.py @@ -55,7 +55,9 @@ def update_activity_cache(sender, instance, **kwargs): def reset_muscle_cache(sender, instance, **kwargs): - exercises = Exercise.objects.filter(Q(muscles=instance) | Q(muscles_secondary=instance)).all() + exercises = Exercise.objects.filter( + Q(exercise_base__muscles=instance) + | Q(exercise_base__muscles_secondary=instance)).all() languages = Language.objects.all() for exercise in exercises: diff --git a/wger/nutrition/views/ingredient.py b/wger/nutrition/views/ingredient.py index 11054c2f7..f55be50bb 100644 --- a/wger/nutrition/views/ingredient.py +++ b/wger/nutrition/views/ingredient.py @@ -47,8 +47,8 @@ # wger from wger.nutrition.forms import ( - UnitChooserForm, IngredientForm, + UnitChooserForm ) from wger.nutrition.models import Ingredient from wger.utils.cache import cache_mapper diff --git a/wger/settings.tpl b/wger/settings.tpl index 3475daffd..e70362b2e 100644 --- a/wger/settings.tpl +++ b/wger/settings.tpl @@ -67,4 +67,3 @@ WGER_SETTINGS['EMAIL_FROM'] = 'wger Workout Manager ' # Your twitter handle, if you have one for this instance. #WGER_SETTINGS['TWITTER'] = '' -