Пример #1
0
    def get_soulmates_all_users():
        """
        Encuentra la afinidad entre todos los usuarios.
         
        """
        users1 = UserLikees.objects.all()
        users2 = UserLikees.objects.all()

        Soulmates_Coef.objects.all().delete()

        for user1 in users1:
            votes1 = Vote.objects.filter(user=user1.id)

            if votes1.count() < 40:
                continue

            votes_a = {}

            for vote1 in votes1:
                votes_a[vote1.item.id] = vote1.rate

                for user2 in users2:
                    if user1.id == user2.id:
                        break

                    votes2 = Vote.objects.filter(user=user2.id)

                    if votes2.count() < 40:
                        continue

                    votes_b = {}

                    for vote2 in votes2:
                        votes_b[vote2.item.id] = vote2.rate

                        print "Calculando coef G entre " + user1.username + "(" + str(
                            votes1.count(
                            )) + ")" + " " + user2.username + "(" + str(
                                votes2.count()) + ")" + "..."

                        coef = Soulmates_Coef()
                        coef.user1 = user1
                        coef.user2 = user2
                        coef.coef = soulmates(votes_a, votes_b)
                        coef.save()
Пример #2
0
    def get_soulmates_by_user(self, user):
        """
        Calcula la afinididad de un usuario con el resto de usuarios.
    
        """
        Soulmates_Coef.objects.filter(Q(user1=user) | Q(user2=user)).delete()

        votes_user = Vote.objects.filter(user=user.id)

        if votes_user.count() < 40:
            return

        votes_a = {}

        for vote_user in votes_user:
            votes_a[vote_user.item.id] = vote_user.rate

        users = UserLikees.objects.all().exclude(pk=user.id)

        for user_soul in users:
            votes_soul = Vote.objects.filter(user=user_soul.id)

            if votes_soul.count() < 40:
                continue

            votes_b = {}

            for vote_soul in votes_soul:
                votes_b[vote_soul.item.id] = vote_soul.rate

            print "Calculando coef G entre " + user.username + "(" + str(
                votes_user.count(
                )) + ")" + " " + user_soul.username + "(" + str(
                    votes_soul.count()) + ")" + "..."

            coef = Soulmates_Coef()
            coef.user1 = user
            coef.user2 = user_soul
            coef.coef = self.soulmates(votes_a, votes_b)
            coef.save()
 def get_soulmates_all_users():
     """
     Encuentra la afinidad entre todos los usuarios.
      
     """
     users1 = UserLikees.objects.all()
     users2 = UserLikees.objects.all()
     
     Soulmates_Coef.objects.all().delete()
      
     for user1 in users1:
         votes1 = Vote.objects.filter(user=user1.id)
         
         if votes1.count() < 40:
             continue
         
         votes_a = {}
         
         for vote1 in votes1:
             votes_a[vote1.item.id] = vote1.rate
             
             for user2 in users2:
                 if user1.id == user2.id:
                     break
                 
                 votes2 = Vote.objects.filter(user=user2.id)
                 
                 if votes2.count() < 40:
                     continue
                     
                 votes_b = {}
                 
                 for vote2 in votes2:
                     votes_b[vote2.item.id] = vote2.rate
                 
                     print "Calculando coef G entre " + user1.username + "(" + str(votes1.count()) + ")" + " " + user2.username + "(" + str(votes2.count()) + ")" + "..."
                      
                     coef = Soulmates_Coef()
                     coef.user1 = user1
                     coef.user2 = user2
                     coef.coef = soulmates (votes_a, votes_b)
                     coef.save()
 def get_soulmates_by_user(self, user):
     """
     Calcula la afinididad de un usuario con el resto de usuarios.
 
     """
     Soulmates_Coef.objects.filter(Q(user1=user) | Q(user2=user)).delete()
 
     votes_user = Vote.objects.filter(user=user.id)
     
     if votes_user.count() < 40:
         return
     
     votes_a = {}
 
     for vote_user in votes_user:
         votes_a[vote_user.item.id] = vote_user.rate
 
     users = UserLikees.objects.all().exclude(pk=user.id)
 
     for user_soul in users:
         votes_soul = Vote.objects.filter(user=user_soul.id)
 
         if votes_soul.count() < 40:
             continue
 
         votes_b = {}
 
         for vote_soul in votes_soul:
             votes_b[vote_soul.item.id] = vote_soul.rate
 
         print "Calculando coef G entre " + user.username + "(" + str(votes_user.count()) + ")" + " " + user_soul.username + "(" + str(votes_soul.count()) + ")" + "..."
 
         coef = Soulmates_Coef()
         coef.user1 = user
         coef.user2 = user_soul
         coef.coef = self.soulmates(votes_a, votes_b)
         coef.save()