示例#1
0
def calcularPontuacaoProximidade(indice_proximidade, loc_usuario, loc_est):
    '''
        @param indice_proximidade: indice de proximidade (minimo e maximo) definido pelo usuario
        @param loc_usuario: localização atual do usuário (lat/long)
        @param loc_est: localização do estabelecimento (lat/long)
        @rtype: float
    '''
    try:
        distancia = calcularDistancia(loc_usuario, loc_est)
        pontuacao = ( 100.0 - ((distancia - indice_proximidade.minimo) * 100.0)/float(indice_proximidade.diferenca()) )
        return (pontuacao * indice_proximidade.relevancia)/100.0 
    except Exception, e:
        print "Recomendacao.views.calcularPontuacaoProximidade:", e
        return 0
示例#2
0
def avaliar(localizacao_usuario, estabelecimento_item_list, indice_preco, indice_reputacao, indice_proximidade, formas_de_pagamento):
    '''
        @author: alezy oliveira lima
    
        @param localizacao_usuario: localizacao.latitude e localizacao.longitude do usuário
        @type localizacao_usuario: Recomendacao.utils.Localizacao
    
        @param estabelecimento_item_list: lista de estabelecimentos que tem o item pretendido pelo usuário
        @type estabelecimento_item_list: list(ItemEstabelecimento)
        
        @param indice_preco: escala de indice_preco.minimo e indice_preco.maximo indicada pelo usuario
        @param indice_reputacao: escala de indice_reputacao.minimo e indice_reputacao.maximo indicada pelo usuario
        @param indice_proximidade: escala de indice_proximidade.minimo e indice_proximidade.maximo indicada pelo usuario
        @type indice_preco, indice_reputacao, indice_proximidade: Recomendacao.utils.Valores
        
        @param formas_de_pagamento: formas de pagamento indicadas pelo usuario
        @type formas_de_pagamento: list(int)
        
        @rtype: list(AvaliacaoItem)
    '''
    
    # novo algoritmo de captação dos valores minimos e maximos
    try:
        lista = estabelecimento_item_list
        lista.sort(key=operator.attrgetter('preco'))
        indice_preco.maximo = lista[len(lista)-1].preco
        indice_preco.minimo = lista[0].preco
        
        lista.sort(key=operator.attrgetter('estabelecimento.reputacao.media'))
        indice_reputacao.maximo =  lista[len(lista)-1].estabelecimento.reputacao.media
        indice_reputacao.minimo =  lista[0].estabelecimento.reputacao.media
        
        for i in lista:
            i.distancia = calcularDistancia(localizacao_usuario, Localizacao(i.estabelecimento.latitude, i.estabelecimento.longitude))
        lista.sort(key=operator.attrgetter('distancia'))
        indice_proximidade.maximo = lista[len(lista)-1].distancia
        indice_proximidade.minimo = lista[0].distancia
    except Exception, e:
        print e