diff --git a/core/views/userView.py b/core/views/userView.py index 1fe5742..a4c5a1f 100644 --- a/core/views/userView.py +++ b/core/views/userView.py @@ -1039,72 +1039,63 @@ def addSubscription(request): +@api_view(['POST']) +@authentication_classes([SessionAuthentication, TokenAuthentication]) +@permission_classes([IsAuthenticated]) @api_view(['POST']) @authentication_classes([SessionAuthentication, TokenAuthentication]) @permission_classes([IsAuthenticated]) def addTeamMember(request): + # Ensure mobile number is provided + if 'mobile_number' not in request.data or not request.data['mobile_number'].strip(): + return Response({'mobile_number': ['This field is required and cannot be empty.']}, status=status.HTTP_400_BAD_REQUEST) # Check if username already exists if User.objects.filter(username=request.data['mobile_number']).exists(): return Response({'username': ['A user with that username already exists.']}, status=status.HTTP_400_BAD_REQUEST) - - # Ensure mobile number is provided - if 'mobile_number' not in request.data: - return Response({'mobile_number': ['This field is required.']}, status=status.HTTP_400_BAD_REQUEST) - # Proceed with user creation user_serializer = UserSerializer(data=request.data) if user_serializer.is_valid(): user = user_serializer.save() user.set_password(request.data['password']) + + # Ensure mobile_number is assigned to username field user.username = request.data['mobile_number'] user.first_name = request.data['first_name'] user.last_name = request.data['last_name'] - user.save() + # Proceed with customer data creation customer_data = { - 'user': user.id, - 'mobile_number': request.data['mobile_number'], # Ensure mobile number is provided - 'semat': request.data['semat'], - + 'user': user.id, + 'mobile_number': request.data['mobile_number'], + 'semat': request.data['semat'], } + customer_serializer = CustomerSerializer(data=customer_data) if customer_serializer.is_valid(): customer_serializer.save() token = Token.objects.create(user=user) - # return Response({'token': token.key, 'customer': customer_serializer.data, 'user': user_serializer.data}, status=status.HTTP_201_CREATED) - - - - # Make a mutable copy of the request data + # Make a mutable copy of the request data for TeamMember data = request.data.copy() data['adminUser'] = request.user.id # Automatically assign the authenticated user as admin - data['user'] = user.id # Automatically assign the authenticated user as admin + data['user'] = user.id # Automatically assign the user as team member # Pass the request object to the serializer context serializer = TeamMemberSerializer(data=data, context={'request': request}) if serializer.is_valid(): - # Save the team member using the validated data - team_member = serializer.save() # This automatically saves the team member + # Save the team member and return success response + team_member = serializer.save() - # Return the response with the team member data return Response({ "message": "Team member added successfully.", - "team_member": serializer.data # This gives you the serialized data of the saved team member + "team_member": serializer.data }, status=status.HTTP_201_CREATED) - else: - # If validation fails, return the errors return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - - - - else: # If customer data is invalid, delete the created user user.delete() @@ -1121,8 +1112,6 @@ def addTeamMember(request): - - @api_view(['GET']) @authentication_classes([SessionAuthentication, TokenAuthentication]) @permission_classes([IsAuthenticated]) diff --git a/testServer.rest b/testServer.rest index 58b6361..3acc0d4 100644 --- a/testServer.rest +++ b/testServer.rest @@ -91,7 +91,7 @@ Authorization: token d3f1b03996140c8f7561d67221953ff704b482cb POST http://my.xroomapp.com:8000/add_teamMember Content-Type: application/json -Authorization: token 8dcae0063521ca707a9d0ab6ce3d4794a90064ca +Authorization: token a6e1d5db61c4e8b2a0a4c0b623915e3b3a68df40 { "mobile_number": "09140086608", "first_name":"mahdi", "last_name":"arabi", "semat":"modir", "password": "12345678", "isAdmin":"true" }