prevent duplicate friend requests
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
52dbe93d3c
commit
b3bae6f5ad
2 changed files with 52 additions and 3 deletions
|
|
@ -64,10 +64,18 @@ class FriendsRequests(APIView, ViewSetMixin):
|
|||
befriendee_username, befriendee_domain = split_userhandle_or_throw(request.data['befriendee'])
|
||||
if befriender_domain == befriendee_domain and befriender_username == befriendee_username:
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST, data={'status': 'cannot befriend yourself'})
|
||||
if user := authenticate_request_against_local_users(request, raw_request):
|
||||
if user := authenticate_request_against_local_users(request, raw_request): # befriender is local
|
||||
secret = secrets.token_hex(64)
|
||||
befriendee_user = ToolshedUser.objects.filter(username=befriendee_username, domain=befriendee_domain)
|
||||
if befriendee_user.exists():
|
||||
if befriendee_user.exists(): # befriendee is local (both are local)
|
||||
if user.friends.filter(username=befriendee_username, domain=befriendee_domain).exists():
|
||||
return Response(status=status.HTTP_208_ALREADY_REPORTED, data={'status': "exists"})
|
||||
existing_request = FriendRequestIncoming.objects.filter(
|
||||
befriender_username=befriender_username,
|
||||
befriender_domain=befriender_domain,
|
||||
befriendee_user=befriendee_user.get())
|
||||
if existing_request.exists():
|
||||
return Response(status=status.HTTP_208_ALREADY_REPORTED, data={'status': "exists"})
|
||||
FriendRequestIncoming.objects.create(
|
||||
befriender_username=befriender_username,
|
||||
befriender_domain=befriender_domain,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue