Esempio n. 1
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')
Esempio n. 2
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. 3
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')