diff --git a/SubscribesApp/serializers.py b/SubscribesApp/serializers.py new file mode 100644 index 0000000..8559dfa --- /dev/null +++ b/SubscribesApp/serializers.py @@ -0,0 +1,7 @@ +from rest_framework import serializers + + +class SubscribersSerializer(serializers.Serializer): + email = serializers.EmailField(error_messages={'invalid': 'Invalid email'}) + email_notification = serializers.BooleanField() + auto_subscribe = serializers.BooleanField() diff --git a/SubscribesApp/views.py b/SubscribesApp/views.py index b55ab34..59a86bd 100644 --- a/SubscribesApp/views.py +++ b/SubscribesApp/views.py @@ -5,32 +5,39 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.views import APIView from SubscribesApp.models import SubscribeForUser +from SubscribesApp.serializers import SubscribersSerializer class SubscribersView(APIView): # permission_classes = [IsAuthenticated] def post(self, request): - data = request.data - email = data['email'] - email_notification = data['email_notification'] - auto_subscribe = data['auto_subscribe'] + serializer = SubscribersSerializer(data=request.data) - user = User.objects.filter(email=email) + if serializer.is_valid(): + validated_data = serializer.validated_data + email = validated_data['email'] + email_notification = validated_data['email_notification'] + auto_subscribe = validated_data['auto_subscribe'] - if user: - subscribe_for_user = SubscribeForUser.objects.filter(user_id=user[0].id) + user = User.objects.filter(email=email) - if email_notification: - subscribe_for_user.update(receive_finish_subscribe_msg=True) + if user: + + subscribe_for_user = SubscribeForUser.objects.filter(user_id=user[0].id) + + if email_notification: + subscribe_for_user.update(receive_finish_subscribe_msg=True) + else: + subscribe_for_user.update(receive_finish_subscribe_msg=False) + + if auto_subscribe: + subscribe_for_user.update(auto_continue=True) + else: + subscribe_for_user.update(auto_continue=False) + + return JsonResponse({"message": "Subscriptions updated successfully"}, status=status.HTTP_200_OK) else: - subscribe_for_user.update(receive_finish_subscribe_msg=False) - - if auto_subscribe: - subscribe_for_user.update(auto_continue=True) - else: - subscribe_for_user.update(auto_continue=False) - - return JsonResponse({"message": "Subscriptions updated successfully"}, status=status.HTTP_200_OK) - - return JsonResponse({"message": "User not found"}, status=status.HTTP_404_NOT_FOUND) + return JsonResponse({"message": "User not found"}, status=status.HTTP_404_NOT_FOUND) + else: + return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file