diff --git a/db.sqlite3 b/db.sqlite3 index a19a66f..77b1cd9 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/workout/serializers.py b/workout/serializers.py index aef862d..5ac12e9 100644 --- a/workout/serializers.py +++ b/workout/serializers.py @@ -75,7 +75,25 @@ class POSTCompleteWorkoutSerializer(serializers.ModelSerializer): exclude = ['registered_user'] class PlannedWorkoutSerializer(serializers.ModelSerializer): + workout = POSTCompleteWorkoutSerializer(many=False, read_only=True) class Meta: model = PlannedWorkout exclude = ['registered_user'] - depth = 1 \ No newline at end of file + depth = 1 + +class POSTPlannedWorkoutSerializer(serializers.ModelSerializer): + class Meta: + model = PlannedWorkout + exclude = ['registered_user'] + + def create(self, validated_data): + print(validated_data) + registered_user_id = self.context.get("registered_user") + registered_user = RegisteredUser.objects.get(id=registered_user_id) + planned_workout = PlannedWorkout.objects.create( + registered_user=registered_user, + workout=validated_data['workout'], + on_date=validated_data['on_date'] + ) + planned_workout.save() + return planned_workout \ No newline at end of file diff --git a/workout/urls.py b/workout/urls.py index 889cf71..014f6f5 100644 --- a/workout/urls.py +++ b/workout/urls.py @@ -9,4 +9,5 @@ urlpatterns = [ path('completed/', views.workouts_completed_by_logged_in_user, name='user completed workouts'), path('create/', views.add_workout, name='create new workout'), path('planned_workouts/', views.workouts_planned_by_logged_in_user, name='planned workout for user'), + path('plan_workout/', views.plan_workout, name='plan workout'), ] \ No newline at end of file diff --git a/workout/views.py b/workout/views.py index 37e4b7a..87e8ca3 100644 --- a/workout/views.py +++ b/workout/views.py @@ -12,6 +12,7 @@ from rest_framework.authentication import TokenAuthentication from rest_framework.permissions import IsAuthenticated from rest_framework.decorators import authentication_classes from rest_framework.decorators import permission_classes +from django.shortcuts import get_object_or_404 import json @@ -59,7 +60,6 @@ def add_workout(request): # exercise_data = dict(request.POST)["exercise_data"] exercise_data = request.data["exercise_data"] - print(exercise_data) if exercise_data is None: return Response({"exercise_data": [ "missing" ] }, status=status.HTTP_400_BAD_REQUEST) @@ -99,4 +99,17 @@ def workouts_planned_by_logged_in_user(request): registered_user = RegisteredUser.objects.get(user=request.user) workouts = PlannedWorkout.objects.filter(registered_user=registered_user) serializer = PlannedWorkoutSerializer(workouts, many=True) - return Response(serializer.data, status=status.HTTP_201_CREATED) \ No newline at end of file + return Response(serializer.data, status=status.HTTP_200_OK) + +@api_view(['POST']) +@authentication_classes([TokenAuthentication]) +@permission_classes([IsAuthenticated]) +def plan_workout(request): + registered_user = RegisteredUser.objects.get(user=request.user) + serializer = POSTPlannedWorkoutSerializer(data=request.data, + context = {"registered_user":registered_user.pk}) + + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_500_INTERNAL_SERVER_ERROR)