add member

This commit is contained in:
Hojat Shafiee 2025-05-28 14:09:17 +03:30
parent d8da0aa5c3
commit 5dbf7314ca
2 changed files with 19 additions and 30 deletions

View File

@ -1039,72 +1039,63 @@ def addSubscription(request):
@api_view(['POST'])
@authentication_classes([SessionAuthentication, TokenAuthentication])
@permission_classes([IsAuthenticated])
@api_view(['POST']) @api_view(['POST'])
@authentication_classes([SessionAuthentication, TokenAuthentication]) @authentication_classes([SessionAuthentication, TokenAuthentication])
@permission_classes([IsAuthenticated]) @permission_classes([IsAuthenticated])
def addTeamMember(request): 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 # Check if username already exists
if User.objects.filter(username=request.data['mobile_number']).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) 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 # Proceed with user creation
user_serializer = UserSerializer(data=request.data) user_serializer = UserSerializer(data=request.data)
if user_serializer.is_valid(): if user_serializer.is_valid():
user = user_serializer.save() user = user_serializer.save()
user.set_password(request.data['password']) user.set_password(request.data['password'])
# Ensure mobile_number is assigned to username field
user.username = request.data['mobile_number'] user.username = request.data['mobile_number']
user.first_name = request.data['first_name'] user.first_name = request.data['first_name']
user.last_name = request.data['last_name'] user.last_name = request.data['last_name']
user.save() user.save()
# Proceed with customer data creation
customer_data = { customer_data = {
'user': user.id, 'user': user.id,
'mobile_number': request.data['mobile_number'], # Ensure mobile number is provided 'mobile_number': request.data['mobile_number'],
'semat': request.data['semat'], 'semat': request.data['semat'],
} }
customer_serializer = CustomerSerializer(data=customer_data) customer_serializer = CustomerSerializer(data=customer_data)
if customer_serializer.is_valid(): if customer_serializer.is_valid():
customer_serializer.save() customer_serializer.save()
token = Token.objects.create(user=user) 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 = request.data.copy()
data['adminUser'] = request.user.id # Automatically assign the authenticated user as admin 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 # Pass the request object to the serializer context
serializer = TeamMemberSerializer(data=data, context={'request': request}) serializer = TeamMemberSerializer(data=data, context={'request': request})
if serializer.is_valid(): if serializer.is_valid():
# Save the team member using the validated data # Save the team member and return success response
team_member = serializer.save() # This automatically saves the team member team_member = serializer.save()
# Return the response with the team member data
return Response({ return Response({
"message": "Team member added successfully.", "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) }, status=status.HTTP_201_CREATED)
else: else:
# If validation fails, return the errors
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
else: else:
# If customer data is invalid, delete the created user # If customer data is invalid, delete the created user
user.delete() user.delete()
@ -1121,8 +1112,6 @@ def addTeamMember(request):
@api_view(['GET']) @api_view(['GET'])
@authentication_classes([SessionAuthentication, TokenAuthentication]) @authentication_classes([SessionAuthentication, TokenAuthentication])
@permission_classes([IsAuthenticated]) @permission_classes([IsAuthenticated])

View File

@ -91,7 +91,7 @@ Authorization: token d3f1b03996140c8f7561d67221953ff704b482cb
POST http://my.xroomapp.com:8000/add_teamMember POST http://my.xroomapp.com:8000/add_teamMember
Content-Type: application/json 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" } { "mobile_number": "09140086608", "first_name":"mahdi", "last_name":"arabi", "semat":"modir", "password": "12345678", "isAdmin":"true" }