Esempio n. 1
0
def befriend(request):
    f = Friendship(from_user=request.user,
                   to_user=User.objects.get(pk=request.POST.get('other_id')))
    f.save()
    return redirect('cards:user_friends_list')
Esempio n. 2
0
    def create(self, request, pk, fpk):

        try:
            # Get Users
            me = User.objects.get(login=pk)
            newFriend = User.objects.get(login=fpk)

            # Check if users are already friends
            for actualFriend in me.friends.all():
                if (actualFriend == newFriend):
                    # Users are already friends
                    return Response('ERROR: Users are already friends')

            try:
                inverseRequestExists = FriendRequest.objects.get(
                    fromUser=newFriend, toUser=me)

                # Friend has already sent request
                # Delete friend request and add friends
                inverseRequestExists.delete()
                f1 = Friendship(firstUser=me, secondUser=newFriend)
                f1.save()
                f2 = Friendship(firstUser=newFriend, secondUser=me)
                f2.save()

                serializer = FriendshipSerializer(f1)
                return Response(serializer.data)

            except exceptions.ObjectDoesNotExist:
                # No inverse relationship exists
                # We will search for an existing request from sender
                try:
                    exists = FriendRequest.objects.get(fromUser=me,
                                                       toUser=newFriend)
                    # Already has sent request
                    return Response('ERROR: Already sent request')

                except exceptions.ObjectDoesNotExist:
                    # Haven't sent request
                    request = FriendRequest(fromUser=me, toUser=newFriend)
                    request.save()
                    serializer = FriendRequestSerializer(request)
                    return Response(serializer.data)

                except exceptions.MultipleObjectsReturned:
                    # Many requests from me to same friend
                    return Response(
                        'ERROR: # Many requests from me to same friend')

            except exceptions.MultipleObjectsReturned:
                # Many inverse relations have been sent
                return Response(
                    'ERROR: # Many inverse relations have been sent')

        except exceptions.ObjectDoesNotExist:
            # No users found
            return Response('ERROR: # No users found')

        except exceptions.MultipleObjectsReturned:
            # Multiple users found for same login
            return Response('ERROR: # Multiple users found for same login')