コード例 #1
0
def index(request):
    product_list = Product.objects.all()[1:3]
    usuario = User.objects.all()[0]
    product_list_2, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
    template = loader.get_template("recomendador/index.html")
    context = {"product_list": product_list_2, "metadatos_usuario": metadatos_recomendacion}
    return HttpResponse(template.render(context, request))
コード例 #2
0
def index_busqueda(request):
     #Se generan las lista que se van a generar en el index
    usuario_activo = request.user
    usuario = Users.objects.get(pk=usuario_activo.id)
    nombre_usuario = usuario.Nombre +  " " + usuario.Apellido_p
    

    
    # Carrusel de resultados de busqueda
    texto_busqueda = ""
    if request.GET.get('busqueda_main') is not None: 
        texto_busqueda = request.GET.get('busqueda_main')
    productos_busqueda = busqueda.coincidencia(texto_busqueda)
    productoExtra = Product_extras()
    for cada_producto in productos_busqueda:
        productoExtra = productoExtra.calculaPromedio(cada_producto)


    # Carrusel de productos que te han gustado
    productos_calificados = recomendaciones_contenido.productos_calificados(usuario)
    for productoEvaluado in productos_calificados:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Carrusel de productos similares
    productos_similares = recomendaciones_contenido.recomendacion_similares(usuario)
    for productoEvaluado in productos_similares:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Recomendaciones por perfil
    productos_perfil, metadatos_recomendacion4 = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
    for productoEvaluado in productos_perfil:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Recomendaciones productos_fc
    productos_fc = recomendaciones_filtrado_colaborativo.recomendaciones_fc(usuario)
    for productoEvaluado in productos_fc:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Recomendaciones hibridas
    recomendaciones_predictivas = recomendaciones_filtrado_colaborativo.recomendaciones_hibridas(productos_fc)
    for productoEvaluado in recomendaciones_predictivas:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)


    template = loader.get_template('products/index.html')
    perfil_usuario = recomendaciones_conocimiento.perfil_usuario(usuario)


    context = {
        'nombre_usuario_saludo': nombre_usuario,
        'perfil': perfil_usuario,
        'productos_busqueda': productos_busqueda,
        'productos_calificados': productos_calificados,
        'productos_similares': productos_similares,
        'productos_perfil': productos_perfil,
        'productos_predictivos': recomendaciones_predictivas,
        'productos_fc': productos_fc
    }
    return HttpResponse(template.render(context, request))
コード例 #3
0
def index(request):
    product_list = Product.objects.all()[1:3]
    usuario = User.objects.all()[0]
    product_list_2, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
    template = loader.get_template('recomendador/index.html')
    context = {
        'product_list': product_list_2,
        'metadatos_usuario': metadatos_recomendacion
    }
    return HttpResponse(template.render(context, request))
コード例 #4
0
def index_busqueda(request):

    texto_busqueda = ""

    if request.GET.get('busqueda_main') is not None:
        texto_busqueda = request.GET.get('busqueda_main')
        print texto_busqueda

    if request.user.is_authenticated():
        usuario = Users.objects.get(pk=request.user.id)
        nombre_usuario = usuario.Nombre + " " + usuario.Apellido_p
    else:
        usuario = Users.objects.all()[3]
        nombre_usuario = "Usuario anónimo"

    # Carrusel de resultados de busqueda
    productos_busqueda = busqueda.coincidencia(texto_busqueda)

    # Carrusel de productos que te han gustado
    calificaciones = Calificaciones.objects.filter(
        users=usuario.id).values_list('product_id', flat=True)
    print "lista:: ", calificaciones
    productos_calificados = Product.objects.filter(pk__in=list(calificaciones))

    # Carrusel de productos similares
    productos_similares = clasificador_k_vecinos.k_vecinos_lista_productos(
        productos_calificados, 15)

    # Recomendaciones por perfil
    productos_perfil, metadatos_recomendacion4 = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario)

    # Recomendaciones de usuarios similares
    recomendaciones_usuarios_similares = clasificador_k_vecinos.recomendaciones_usuarios_similares(
        usuario)

    # Recomendaciones productos_fc
    productos_fc = clasificador_k_vecinos.recomendaciones_fc(usuario)

    template = loader.get_template('products/index.html')
    perfil_usuario = recomendaciones_conocimiento.perfil_usuario(usuario)

    context = {
        'nombre_usuario_saludo': nombre_usuario,
        'perfil': perfil_usuario,
        'productos_busqueda': productos_busqueda[:50],
        'productos_calificados': productos_calificados,
        'productos_similares': productos_similares[:50],
        'productos_perfil': productos_perfil[:50],
        'productos_contenido': recomendaciones_usuarios_similares[:50],
        'productos_fc': productos_fc[:50]
    }
    return HttpResponse(template.render(context, request))
コード例 #5
0
def index_busqueda(request):

    texto_busqueda = ""

    if request.GET.get('busqueda_main') is not None: 
        texto_busqueda = request.GET.get('busqueda_main')
        print texto_busqueda

    if request.user.is_authenticated():
        usuario = Users.objects.get(pk=request.user.id)
        nombre_usuario = usuario.Nombre +  " " + usuario.Apellido_p
    else:
        usuario = Users.objects.all()[3]
        nombre_usuario = "Usuario anónimo"

    # Carrusel de resultados de busqueda
    productos_busqueda = busqueda.coincidencia(texto_busqueda)
    
    # Carrusel de productos que te han gustado
    calificaciones = Calificaciones.objects.filter(users=usuario.id).values_list('product_id', flat=True)
    print "lista:: ", calificaciones
    productos_calificados = Product.objects.filter(pk__in=list(calificaciones))

    # Carrusel de productos similares
    productos_similares = clasificador_k_vecinos.k_vecinos_lista_productos(productos_calificados, 15)

    # Recomendaciones por perfil
    productos_perfil, metadatos_recomendacion4 = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)

    # Recomendaciones de usuarios similares
    recomendaciones_usuarios_similares = clasificador_k_vecinos.recomendaciones_usuarios_similares(usuario)
        
    # Recomendaciones productos_fc
    productos_fc = clasificador_k_vecinos.recomendaciones_fc(usuario)

    template = loader.get_template('products/index.html')
    perfil_usuario = recomendaciones_conocimiento.perfil_usuario(usuario)

    context = {
        'nombre_usuario_saludo': nombre_usuario,
        'perfil': perfil_usuario,
        'productos_busqueda': productos_busqueda[:50],
        'productos_calificados': productos_calificados,
        'productos_similares': productos_similares[:50],
        'productos_perfil': productos_perfil[:50],
        'productos_contenido': recomendaciones_usuarios_similares[:50],
        'productos_fc': productos_fc[:50]
    }
    return HttpResponse(template.render(context, request))
コード例 #6
0
def index(request):

    # Esta parte inserta calificaciones de manera aleatoria de los productos especificados
    #    productosx = Product.objects.all()
    #    usuariosx = Users.objects.all()[:10]
    #    for productox in productosx :
    #        for usuariox in usuariosx :
    #            try:
    #                calificacionE = Calificaciones.objects.get(product=productox, users=usuariox)
    #            except Calificaciones.DoesNotExist:
    #                comentario = ""
    #                valorCalif = random.randint(0, 5)
    #                calificacionE = Calificaciones(product=productox, users=usuariox, calificacion_producto=valorCalif, comentario=comentario)
    #                calificacionE.save()

    #Aqui debería proponerse un algoritmo que calcule la calificacion promedio de cada producto
    #de manera diaria - Si el promedio es el del dia no se recalculará.
    #En caso de que el promedio sea del dia anterior se recalculará el promedio de manera automática
    #en cuanto se cargue esta página
    #Evitando de esta manera que el servidor se sobrecargue y el promedio este en tiempo real

    #Se generan las lista que se van a generar en el index
    product_list = Product.objects.all()[1:3]
    usuario_activo = request.user
    usuario = Users.objects.get(pk=usuario_activo.id)
    latest_productos_list_new, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario)
    latest_productos_list = Product.objects.all()[:20]
    for productoEvaluado in latest_productos_list:
        suma = 0.0
        n = 1
        try:
            calificacionesExistentes = Calificaciones.objects.filter(
                product=productoEvaluado)
            for calificacionExistente in calificacionesExistentes:
                suma = suma + calificacionExistente.calificacion_producto
                n = n + 1
            calificacion_promedio = suma / (n - 1)
            if calificacion_promedio >= 0 and calificacion_promedio <= 0.5:
                calificacion_promedio = 0.50
            if calificacion_promedio > 0.5 and calificacion_promedio <= 1.0:
                calificacion_promedio = 1.00
            if calificacion_promedio > 1.0 and calificacion_promedio <= 1.5:
                calificacion_promedio = 1.50
            if calificacion_promedio > 1.5 and calificacion_promedio <= 2.0:
                calificacion_promedio = 2.00
            if calificacion_promedio > 2.0 and calificacion_promedio <= 2.5:
                calificacion_promedio = 2.50
            if calificacion_promedio > 2.5 and calificacion_promedio <= 3.0:
                calificacion_promedio = 3.00
            if calificacion_promedio > 3.0 and calificacion_promedio <= 3.5:
                calificacion_promedio = 3.50
            if calificacion_promedio > 3.5 and calificacion_promedio <= 4.0:
                calificacion_promedio = 4.00
            if calificacion_promedio > 4.0 and calificacion_promedio <= 4.5:
                calificacion_promedio = 4.50
            if calificacion_promedio > 4.5 and calificacion_promedio <= 5.0:
                calificacion_promedio = 5.00
        except Calificaciones.DoesNotExist:
            calificacionesExistentes = None
            calificacion_promedio = 0.0
        try:
            productoExtra = Product_extras.objects.get(
                Product=productoEvaluado)
            productoExtra.Calificacion_promedio = calificacion_promedio
        except Product_extras.DoesNotExist:
            productoExtra = Product_extras(
                Product=productoEvaluado,
                Calificacion_promedio=calificacion_promedio,
                Precio=0.00,
                Descuento=0.00)
        productoExtra.save()

    usuario2 = Users.objects.all()[0]
    latest_productos_list2, metadatos_recomendacion2 = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario2)

    usuario3 = Users.objects.all()[0]
    latest_productos_list3, metadatos_recomendacion3 = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario3)

    usuario4 = Users.objects.all()[0]
    latest_productos_list4, metadatos_recomendacion4 = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario4)

    template = loader.get_template('products/index.html')
    context = {
        'latest_productos_list': latest_productos_list[:100],
        'metadatos_usuario': metadatos_recomendacion,
        'latest_productos_list2': latest_productos_list2[:100],
        'metadatos_usuario2': metadatos_recomendacion2,
        'latest_productos_list3': latest_productos_list3[:100],
        'metadatos_usuario3': metadatos_recomendacion3,
        'latest_productos_list4': latest_productos_list4[:100],
        'metadatos_usuario4': metadatos_recomendacion4
    }
    return HttpResponse(template.render(context, request))
コード例 #7
0
def detail(request, product_id):

    #Buscar Lista de Productos recomendados para el usuario
    valorCalificacion = 0
    usuario_activo = request.user
    usuario = Users.objects.get(pk=usuario_activo.id)
    product_list = Product.objects.all()[1:3]
    latest_productos_list, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario)

    #Busca el producto seleccionado
    Producto = get_object_or_404(Product, pk=product_id)

    #Busca objeto de Producto con calificacion para el usuario
    try:
        calificacionExistente = Calificaciones.objects.get(product=Producto,
                                                           users=usuario)
    except Calificaciones.DoesNotExist:
        comentario = ""
        valorCalificacion = 0
        calificacionExistente = Calificaciones(
            product=Producto,
            users=usuario,
            calificacion_producto=valorCalificacion,
            comentario=comentario)

    if request.POST.get('comentario') is not None:
        comentario = request.POST.get('comentario')
        #        comentario = unicode(comentario, "utf-8")
        calificacionExistente.calificacion_producto = valorCalificacion
        calificacionExistente.comentario = comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.comentario is not None:
            comentario = calificacionExistente.comentario
        else:
            comentario = ""

    if request.POST.get('calificacion') is not None:
        valorCalificacion = request.POST.get('calificacion')
        #        calificacionExistente = Calificacionx(productx=Producto, userx=usuario, calificacion_producto=valorCalificacion, comentario=comentario)
        calificacionExistente.calificacion_producto = valorCalificacion
        calificacionExistente.comentario = comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.calificacion_producto is not None:
            valorCalificacion = calificacionExistente.calificacion_producto
        else:
            valorCalificacion = 0

    #Busca comentarios del mismo Producto por otros usuarios
    try:
        comentariosExistentes = Calificaciones.objects.filter(
            product=Producto).exclude(
                users=usuario).order_by('-fecha').select_related('users')
    except Calificaciones.DoesNotExist:
        comentariosExistentes = None

    #Construcción del template y envío de Respuesta
    template = loader.get_template('products/detail.html')
    context = {
        'latest_productos_list': latest_productos_list[:150],
        'metadatos_usuario': metadatos_recomendacion,
        'Producto': Producto,
        'id_user': usuario_activo.id,
        'calificacionExistente': calificacionExistente,
        'comentario': comentario,
        'valorCalificacion': valorCalificacion,
        'comentariosExistentes': comentariosExistentes
    }

    return HttpResponse(template.render(context, request))
コード例 #8
0
def recomendaciones_xti(usuario):
    # Se generan las lista que se van a presentar en el index

    nombre_usuario = (
        usuario.Nombre.encode("utf-8").lower().capitalize()
        + " "
        + usuario.Apellido_p.encode("utf-8").lower().capitalize()
    )
    ciudad_usuario = usuario.Ciudad.encode("utf-8").lower().capitalize()
    contacto_usuario = usuario.Contacto.encode("utf-8").lower()
    listas_productos = []

    configuracion_layout = Listas_recomendadores_config.objects.all().order_by("secuencia")
    for cada_c in configuracion_layout:

        titulo = cada_c.titulo_interfaz
        algoritmo = cada_c.algoritmo_recomendador
        longitud = cada_c.longitud_max
        parametro = cada_c.param

        if algoritmo == "calificados":
            # Carrusel de productos que te han gustado
            productos_calificados = recomendaciones_contenido.productos_calificados_rec(usuario, longitud)
            if len(productos_calificados) > 0:
                listas_productos.append({"titulo": titulo, "productos": productos_calificados})
            else:
                print "No hay productos en Productos que has calificado"

        elif algoritmo == "comentados_ciudad":
            # Recomendaciones lo mas comentado en tu ciudad
            productos_comentados_ciudad = busqueda.productos_comentados_ciudad(longitud, ciudad_usuario)
            if len(productos_comentados_ciudad) > 0:
                listas_productos.append({"titulo": titulo, "productos": productos_comentados_ciudad})
            else:
                print "No hay productos en Lo más comentado en tu ciudad"

        elif algoritmo == "reglas_perfil":
            # Recomendaciones por perfil
            productos_perfil = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
            if len(productos_perfil) > 0:
                listas_productos.append({"titulo": titulo, "productos": productos_perfil})
            else:
                print "No hay productos en Recomendaciones a tu pefil"

        elif algoritmo == "nuevos":
            # Alianzas nuevas en tu ciudad
            productos_nuevos = busqueda.productos_nuevos(longitud, parametro)
            if len(productos_nuevos) > 0:
                listas_productos.append({"titulo": titulo, "productos": productos_nuevos})
            else:
                print "No hay productos en Nuevas alianzas X-ti"

        elif algoritmo == "usuario_similar_demografico":
            # Recomendaciones usuarios socialmente similares
            productos_usuarios_similares = recomendaciones_contenido.recomendaciones_usuarios_similares(
                usuario, longitud
            )
            if len(productos_usuarios_similares) > 0:
                listas_productos.append({"titulo": titulo, "productos": productos_usuarios_similares})
            else:
                print "No hay productos en Usuarios como tú recomiendan"

        elif algoritmo == "productos_similares_gustado":
            # Carrusel de productos similares
            productos_similares = recomendaciones_contenido.recomendacion_similares(usuario, longitud)
            if len(productos_similares) > 0:
                listas_productos.append({"titulo": titulo, "productos": productos_similares})
            else:
                print "No hay productos en Productos similares a los que te han gustado"

        elif algoritmo == "filtrado_colaborativo":
            # Recomendaciones productos_fc
            productos_fc = recomendaciones_filtrado_colaborativo.recomendaciones_fc(usuario, longitud)
            if len(productos_fc) > 0:
                listas_productos.append({"titulo": titulo, "productos": productos_fc})
            else:
                print "No hay productos en Usuarios con gustos similares les han gustado"

        elif algoritmo == "hibrido":
            # Recomendaciones hibridas
            recomendaciones_predictivas = recomendaciones_filtrado_colaborativo.recomendaciones_hibridas(
                productos_fc, longitud
            )
            if len(recomendaciones_predictivas) > 0:
                listas_productos.append({"titulo": titulo, "productos": recomendaciones_predictivas})
            else:
                print "No hay productos en Productos interesantes para tí"

    return listas_productos
コード例 #9
0
def recomendaciones_xti(usuario):
    #Se generan las lista que se van a presentar en el index

    nombre_usuario = usuario.Nombre.encode("utf-8").lower().capitalize(
    ) + " " + usuario.Apellido_p.encode("utf-8").lower().capitalize()
    ciudad_usuario = usuario.Ciudad.encode("utf-8").lower().capitalize()
    contacto_usuario = usuario.Contacto.encode("utf-8").lower()
    listas_productos = []

    # Carrusel de productos que te han gustado
    productos_calificados = recomendaciones_contenido.productos_calificados(
        usuario)
    if len(productos_calificados) > 0:
        listas_productos.append({
            'titulo': 'Productos que has calificado',
            'productos': productos_calificados
        })
    else:
        print "No hay productos en Productos que has calificado"

    # Recomendaciones lo mas comentado en tu ciudad
    productos_comentados_ciudad = busqueda.productos_comentados_ciudad(
        15, ciudad_usuario)
    if len(productos_comentados_ciudad) > 0:
        listas_productos.append({
            'titulo': 'Lo más comentado en tu ciudad',
            'productos': productos_comentados_ciudad
        })
    else:
        print "No hay productos en Lo más comentado en tu ciudad"

    # Recomendaciones por perfil
    productos_perfil = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario)
    if len(productos_perfil) > 0:
        listas_productos.append({
            'titulo': 'Recomendaciones a tu pefil',
            'productos': productos_perfil
        })
    else:
        print "No hay productos en Recomendaciones a tu pefil"

    # Alianzas nuevas en tu ciudad
    productos_nuevos = busqueda.productos_nuevos(15, 90)
    if len(productos_nuevos) > 0:
        listas_productos.append({
            'titulo': 'Nuevas alianzas X-ti',
            'productos': productos_nuevos
        })
    else:
        print "No hay productos en Nuevas alianzas X-ti"

    # Recomendaciones usuarios socialmente similares
    productos_usuarios_similares = recomendaciones_contenido.recomendaciones_usuarios_similares(
        usuario, 15)
    if len(productos_usuarios_similares) > 0:
        listas_productos.append({
            'titulo': 'Usuarios como tú recomiendan',
            'productos': productos_usuarios_similares
        })
    else:
        print "No hay productos en Usuarios como tú recomiendan"

    # Carrusel de productos similares
    productos_similares = recomendaciones_contenido.recomendacion_similares(
        usuario)
    if len(productos_similares) > 0:
        listas_productos.append({
            'titulo': 'Productos similares a los que te han gustado',
            'productos': productos_similares
        })
    else:
        print "No hay productos en Productos similares a los que te han gustado"

    # Recomendaciones productos_fc
    productos_fc = recomendaciones_filtrado_colaborativo.recomendaciones_fc(
        usuario)
    if len(productos_fc) > 0:
        listas_productos.append({
            'titulo': 'Usuarios con gustos similares les han gustado',
            'productos': productos_fc
        })
    else:
        print "No hay productos en Usuarios con gustos similares les han gustado"

    # Recomendaciones hibridas
    recomendaciones_predictivas = recomendaciones_filtrado_colaborativo.recomendaciones_hibridas(
        productos_fc)
    if len(recomendaciones_predictivas) > 0:
        listas_productos.append({
            'titulo': 'Productos interesantes para tí',
            'productos': recomendaciones_predictivas
        })
    else:
        print "No hay productos en Productos interesantes para tí"

    return listas_productos
コード例 #10
0
def recomendaciones_xti(usuario):
    #Se generan las lista que se van a presentar en el index
    
    nombre_usuario = usuario.Nombre.encode("utf-8").lower().capitalize() +  " " + usuario.Apellido_p.encode("utf-8").lower().capitalize()
    ciudad_usuario = usuario.Ciudad.encode("utf-8").lower().capitalize()
    contacto_usuario = usuario.Contacto.encode("utf-8").lower()
    listas_productos = []

     # Carrusel de productos que te han gustado
    productos_calificados = recomendaciones_contenido.productos_calificados(usuario)
    if len(productos_calificados) > 0:
        listas_productos.append({'titulo': 'Productos que has calificado', 'productos': productos_calificados})
    else:
        print "No hay productos en Productos que has calificado"


    # Recomendaciones lo mas comentado en tu ciudad
    productos_comentados_ciudad = busqueda.productos_comentados_ciudad(15, ciudad_usuario)
    if len(productos_comentados_ciudad) > 0:
        listas_productos.append({'titulo': 'Lo más comentado en tu ciudad', 'productos': productos_comentados_ciudad})
    else:
        print "No hay productos en Lo más comentado en tu ciudad"

    # Recomendaciones por perfil
    productos_perfil = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
    if len(productos_perfil) > 0:
        listas_productos.append({'titulo': 'Recomendaciones a tu pefil', 'productos': productos_perfil})
    else:
        print "No hay productos en Recomendaciones a tu pefil"

    # Alianzas nuevas en tu ciudad
    productos_nuevos = busqueda.productos_nuevos(15, 90)
    if len(productos_nuevos) > 0:
        listas_productos.append({'titulo': 'Nuevas alianzas X-ti', 'productos': productos_nuevos})
    else:
        print "No hay productos en Nuevas alianzas X-ti"
    


    # Recomendaciones usuarios socialmente similares
    productos_usuarios_similares = recomendaciones_contenido.recomendaciones_usuarios_similares(usuario, 15)
    if len(productos_usuarios_similares) > 0:
        listas_productos.append({'titulo': 'Usuarios como tú recomiendan', 'productos': productos_usuarios_similares})
    else:
        print "No hay productos en Usuarios como tú recomiendan"


    # Carrusel de productos similares
    productos_similares = recomendaciones_contenido.recomendacion_similares(usuario)
    if len(productos_similares) > 0:
        listas_productos.append({'titulo': 'Productos similares a los que te han gustado', 'productos': productos_similares})
    else:
        print "No hay productos en Productos similares a los que te han gustado"

    
    # Recomendaciones productos_fc
    productos_fc = recomendaciones_filtrado_colaborativo.recomendaciones_fc(usuario)
    if len(productos_fc) > 0:
        listas_productos.append({'titulo': 'Usuarios con gustos similares les han gustado', 'productos': productos_fc})
    else:
        print "No hay productos en Usuarios con gustos similares les han gustado"

    # Recomendaciones hibridas
    recomendaciones_predictivas = recomendaciones_filtrado_colaborativo.recomendaciones_hibridas(productos_fc)
    if len(recomendaciones_predictivas) > 0:
        listas_productos.append({'titulo': 'Productos interesantes para tí', 'productos': recomendaciones_predictivas})
    else:
        print "No hay productos en Productos interesantes para tí"

    return listas_productos
コード例 #11
0
def index(request):
    #Se generan las lista que se van a generar en el index
    usuario_activo = request.user
    usuario = Users.objects.get(pk=usuario_activo.id)
    nombre_usuario = usuario.Nombre +  " " + usuario.Apellido_p


    ## populate comments
    # se insertan 10,000 comentarios de 1000 usuarios sobre 1000 productos, 10 por usuario
    # se colectan 1000 usuarios al azar
    #todos_usuarios = Users.objects.order_by('?')[:1000]
    #todos_productos = Product.objects.order_by('?')[:1000]
    #calificaciones_por_usuario = 10
    #for cada_usuario in todos_usuarios:
    #    print "HEY: Ho ", cada_usuario.Nombre
    #    for i in range(0, calificaciones_por_usuario):
    #        valorCalificacion = random.randint(1, 5)
    #        producto_calificar = todos_productos[random.randint(0, len(todos_productos)-1)]
    #        comentario = comentarios_predefinidos[valorCalificacion]
    #        calificacionExistente = Calificaciones(product=producto_calificar, users=cada_usuario, calificacion_producto=valorCalificacion, comentario=comentario)
    #        print "cali: ", calificacionExistente
    #        calificacionExistente.save()
    #valorCalificacion = request.POST.get('calificacion')
    #calificacionExistente.calificacion_producto=valorCalificacion
    #calificacionExistente.comentario=comentario
    #calificacionExistente.save()



    # Carrusel de resultados de busqueda
    texto_busqueda = ""
    if request.GET.get('busqueda_main') is not None: 
        texto_busqueda = request.GET.get('busqueda_main')
    productos_busqueda = busqueda.coincidencia(texto_busqueda)
    productoExtra = Product_extras()
    for cada_producto in productos_busqueda:
        productoExtra = productoExtra.calculaPromedio(cada_producto)


    # Carrusel de productos que te han gustado
    productos_calificados = recomendaciones_contenido.productos_calificados(usuario)
    for productoEvaluado in productos_calificados:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Carrusel de productos similares
    productos_similares = recomendaciones_contenido.recomendacion_similares(usuario)
    for productoEvaluado in productos_similares:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Recomendaciones por perfil
    productos_perfil, metadatos_recomendacion4 = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
    for productoEvaluado in productos_perfil:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Recomendaciones productos_fc
    productos_fc = recomendaciones_filtrado_colaborativo.recomendaciones_fc(usuario)
    for productoEvaluado in productos_fc:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)

    # Recomendaciones hibridas
    recomendaciones_predictivas = recomendaciones_filtrado_colaborativo.recomendaciones_hibridas(productos_fc)
    for productoEvaluado in recomendaciones_predictivas:
        productoExtra = productoExtra.calculaPromedio(productoEvaluado)


    template = loader.get_template('products/index.html')
    perfil_usuario = recomendaciones_conocimiento.perfil_usuario(usuario)


    context = {
        'nombre_usuario_saludo': nombre_usuario,
        'perfil': perfil_usuario,
        'productos_busqueda': productos_busqueda,
        'productos_calificados': productos_calificados,
        'productos_similares': productos_similares,
        'productos_perfil': productos_perfil,
        'productos_predictivos': recomendaciones_predictivas,
        'productos_fc': productos_fc
    }
    return HttpResponse(template.render(context, request))
コード例 #12
0
def detail(request, product_id):

    #Buscar Lista de Productos recomendados para el usuario
    valorCalificacion = 0
    usuario_activo = request.user
    usuario = Users.objects.get(pk=usuario_activo.id)
    latest_productos_list, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
    latest_productos_list = recomendaciones_contenido.k_vecinos_productos(product_id, 10)
    #Busca el producto seleccionado
    Producto = get_object_or_404(Product, pk=product_id)

    #Busca objeto de Producto con calificacion para el usuario
    try:
        calificacionExistente = Calificaciones.objects.get(product=Producto, users=usuario)
    except Calificaciones.DoesNotExist:
        comentario = ""
        valorCalificacion = 0
        calificacionExistente = Calificaciones(product=Producto, users=usuario, calificacion_producto=valorCalificacion, comentario=comentario)

    if request.POST.get('comentario') is not None:
        comentario = request.POST.get('comentario')
        calificacionExistente.calificacion_producto=valorCalificacion
        calificacionExistente.comentario=comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.comentario is not None:
            comentario = calificacionExistente.comentario
        else:
            comentario = ""

    if request.POST.get('calificacion') is not None:
        valorCalificacion = request.POST.get('calificacion')
        calificacionExistente.calificacion_producto=valorCalificacion
        calificacionExistente.comentario=comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.calificacion_producto is not None:
            valorCalificacion = calificacionExistente.calificacion_producto
        else:
            valorCalificacion = 0

    #Busca comentarios del mismo Producto por otros usuarios
    try:
        comentariosExistentes = Calificaciones.objects.filter(product=Producto).order_by('-fecha').select_related('users')[:20]
    except Calificaciones.DoesNotExist:
        comentariosExistentes = None

    #Construccion del template y envio de Respuesta
    template = loader.get_template('products/detail.html')
    context = {
        'latest_productos_list': latest_productos_list[:100],
        'metadatos_usuario': metadatos_recomendacion,
        'Producto': Producto,
        'id_user': usuario_activo.id,
        'calificacionExistente': calificacionExistente,
        'comentario': comentario,
        'valorCalificacion': valorCalificacion,
        'comentariosExistentes': comentariosExistentes
    }

    return HttpResponse(template.render(context, request))
コード例 #13
0
def detail(request, product_id):

    #Buscar Lista de Productos recomendados para el usuario
    valorCalificacion = 0
    usuario = Users.objects.get(pk=request.user.id)
    product_list = Product.objects.all()[1:3]
    
    
    #Busca el producto seleccionado
    Producto = get_object_or_404(Product, pk=product_id)

    
    
    latest_productos_list, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)

    latest_productos_list = clasificador_k_vecinos.k_vecinos_productos(product_id, 20)

    print "In views detail: product count: ", len(latest_productos_list) 


    #Busca objeto de Producto con calificacion para el usuario
    try:
        calificacionExistente = Calificaciones.objects.get(product=Producto, users=usuario)
    except Calificaciones.DoesNotExist:
        comentario = ""
        valorCalificacion = 0
        calificacionExistente = Calificaciones(product=Producto, users=usuario, calificacion_producto=valorCalificacion, comentario=comentario)

    if request.POST.get('comentario') is not None:
        comentario = request.POST.get('comentario')
#        comentario = unicode(comentario, "utf-8")
        calificacionExistente.calificacion_producto=valorCalificacion
        calificacionExistente.comentario=comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.comentario is not None:
            comentario = calificacionExistente.comentario
        else:
            comentario = ""


    if request.POST.get('calificacion') is not None:
        valorCalificacion = request.POST.get('calificacion')
#        calificacionExistente = Calificacionx(productx=Producto, userx=usuario, calificacion_producto=valorCalificacion, comentario=comentario)
        calificacionExistente.calificacion_producto=valorCalificacion
        calificacionExistente.comentario=comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.calificacion_producto is not None:
            valorCalificacion = calificacionExistente.calificacion_producto
        else:
            valorCalificacion = 0

    #Construcción del template y envío de Respuesta
    template = loader.get_template('products/detail.html')
    context = {
        'latest_productos_list': latest_productos_list[:100],
        'metadatos_usuario': metadatos_recomendacion,
        'Producto': Producto,
        'id_user': usuario.id,
        'calificacionExistente': calificacionExistente,
        'comentario': comentario,
        'valorCalificacion': valorCalificacion
    }

    return HttpResponse(template.render(context, request))
コード例 #14
0
def index(request):

     # Esta parte inserta calificaciones de manera aleatoria de los productos especificados
#    productosx = Product.objects.all()
#    usuariosx = Users.objects.all()[:10]    
#    for productox in productosx :
#        for usuariox in usuariosx :
#            try:
#                calificacionE = Calificaciones.objects.get(product=productox, users=usuariox)
#            except Calificaciones.DoesNotExist:
#                comentario = ""
#                valorCalif = random.randint(0, 5)
#                calificacionE = Calificaciones(product=productox, users=usuariox, calificacion_producto=valorCalif, comentario=comentario)
#                calificacionE.save()

    #Aqui debería proponerse un algoritmo que calcule la calificacion promedio de cada producto
    #de manera diaria - Si el promedio es el del dia no se recalculará.
    #En caso de que el promedio sea del dia anterior se recalculará el promedio de manera automática 
    #en cuanto se cargue esta página
    #Evitando de esta manera que el servidor se sobrecargue y el promedio este en tiempo real


    #Se generan las lista que se van a generar en el index
    product_list = Product.objects.all()[1:3]
    usuario_activo = request.user
    usuario = Users.objects.get(pk=usuario_activo.id)
    latest_productos_list_new, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(usuario)
    latest_productos_list = Product.objects.all()[:20]
    for productoEvaluado in latest_productos_list:
        suma = 0.0
        n = 1
        try:
            calificacionesExistentes = Calificaciones.objects.filter(product=productoEvaluado)
            for calificacionExistente in calificacionesExistentes:
                suma = suma + calificacionExistente.calificacion_producto
                n = n + 1
            calificacion_promedio = suma/(n-1)
            if calificacion_promedio >= 0 and calificacion_promedio <= 0.5:
                calificacion_promedio = 0.50
            if calificacion_promedio > 0.5 and calificacion_promedio <= 1.0:
                calificacion_promedio = 1.00   
            if calificacion_promedio > 1.0 and calificacion_promedio <= 1.5:
                calificacion_promedio = 1.50
            if calificacion_promedio > 1.5 and calificacion_promedio <= 2.0:
                calificacion_promedio = 2.00
            if calificacion_promedio > 2.0 and calificacion_promedio <= 2.5:
                calificacion_promedio = 2.50
            if calificacion_promedio > 2.5 and calificacion_promedio <= 3.0:
                calificacion_promedio = 3.00
            if calificacion_promedio > 3.0 and calificacion_promedio <= 3.5:
                calificacion_promedio = 3.50
            if calificacion_promedio > 3.5 and calificacion_promedio <= 4.0:
                calificacion_promedio = 4.00
            if calificacion_promedio > 4.0 and calificacion_promedio <= 4.5:
                calificacion_promedio = 4.50
            if calificacion_promedio > 4.5 and calificacion_promedio <= 5.0:
                calificacion_promedio = 5.00
        except Calificaciones.DoesNotExist:
            calificacionesExistentes = None
            calificacion_promedio = 0.0
        try:
            productoExtra = Product_extras.objects.get(Product=productoEvaluado);
            productoExtra.Calificacion_promedio = calificacion_promedio
        except Product_extras.DoesNotExist:
            productoExtra = Product_extras(Product=productoEvaluado, Calificacion_promedio=calificacion_promedio, Precio=0.00, Descuento=0.00);
        productoExtra.save()


    usuario2 = Users.objects.all()[0]
    latest_productos_list2, metadatos_recomendacion2 = recomendaciones_conocimiento.recomendacion_por_reglas(usuario2)

    usuario3 = Users.objects.all()[0]
    latest_productos_list3, metadatos_recomendacion3 = recomendaciones_conocimiento.recomendacion_por_reglas(usuario3)

    usuario4 = Users.objects.all()[0]
    latest_productos_list4, metadatos_recomendacion4 = recomendaciones_conocimiento.recomendacion_por_reglas(usuario4)

    template = loader.get_template('products/index.html')
    context = {
        'latest_productos_list': latest_productos_list[:100],
        'metadatos_usuario': metadatos_recomendacion,
        'latest_productos_list2': latest_productos_list2[:100],
        'metadatos_usuario2': metadatos_recomendacion2,
        'latest_productos_list3': latest_productos_list3[:100],
        'metadatos_usuario3': metadatos_recomendacion3,
        'latest_productos_list4': latest_productos_list4[:100],
        'metadatos_usuario4': metadatos_recomendacion4
    }
    return HttpResponse(template.render(context, request))
コード例 #15
0
def detail(request, product_id):

    #Buscar Lista de Productos recomendados para el usuario
    valorCalificacion = 0
    usuario = Users.objects.get(pk=request.user.id)
    product_list = Product.objects.all()[1:3]

    #Busca el producto seleccionado
    Producto = get_object_or_404(Product, pk=product_id)

    latest_productos_list, metadatos_recomendacion = recomendaciones_conocimiento.recomendacion_por_reglas(
        usuario)

    latest_productos_list = clasificador_k_vecinos.k_vecinos_productos(
        product_id, 20)

    print "In views detail: product count: ", len(latest_productos_list)

    #Busca objeto de Producto con calificacion para el usuario
    try:
        calificacionExistente = Calificaciones.objects.get(product=Producto,
                                                           users=usuario)
    except Calificaciones.DoesNotExist:
        comentario = ""
        valorCalificacion = 0
        calificacionExistente = Calificaciones(
            product=Producto,
            users=usuario,
            calificacion_producto=valorCalificacion,
            comentario=comentario)

    if request.POST.get('comentario') is not None:
        comentario = request.POST.get('comentario')
        #        comentario = unicode(comentario, "utf-8")
        calificacionExistente.calificacion_producto = valorCalificacion
        calificacionExistente.comentario = comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.comentario is not None:
            comentario = calificacionExistente.comentario
        else:
            comentario = ""

    if request.POST.get('calificacion') is not None:
        valorCalificacion = request.POST.get('calificacion')
        #        calificacionExistente = Calificacionx(productx=Producto, userx=usuario, calificacion_producto=valorCalificacion, comentario=comentario)
        calificacionExistente.calificacion_producto = valorCalificacion
        calificacionExistente.comentario = comentario
        calificacionExistente.save()
    else:
        if calificacionExistente.calificacion_producto is not None:
            valorCalificacion = calificacionExistente.calificacion_producto
        else:
            valorCalificacion = 0

    #Construcción del template y envío de Respuesta
    template = loader.get_template('products/detail.html')
    context = {
        'latest_productos_list': latest_productos_list[:100],
        'metadatos_usuario': metadatos_recomendacion,
        'Producto': Producto,
        'id_user': usuario.id,
        'calificacionExistente': calificacionExistente,
        'comentario': comentario,
        'valorCalificacion': valorCalificacion
    }

    return HttpResponse(template.render(context, request))
コード例 #16
0
def recomendaciones_xti(usuario):
    #Se generan las lista que se van a presentar en el index

    nombre_usuario = usuario.Nombre.encode("utf-8").lower().capitalize(
    ) + " " + usuario.Apellido_p.encode("utf-8").lower().capitalize()
    ciudad_usuario = usuario.Ciudad.encode("utf-8").lower().capitalize()
    contacto_usuario = usuario.Contacto.encode("utf-8").lower()
    listas_productos = []

    configuracion_layout = Listas_recomendadores_config.objects.all().order_by(
        'secuencia')
    for cada_c in configuracion_layout:

        titulo = cada_c.titulo_interfaz
        algoritmo = cada_c.algoritmo_recomendador
        longitud = cada_c.longitud_max
        parametro = cada_c.param

        if algoritmo == "calificados":
            # Carrusel de productos que te han gustado
            productos_calificados = recomendaciones_contenido.productos_calificados_rec(
                usuario, longitud)
            if len(productos_calificados) > 0:
                listas_productos.append({
                    'titulo': titulo,
                    'productos': productos_calificados
                })
            else:
                print "No hay productos en Productos que has calificado"

        elif algoritmo == "comentados_ciudad":
            # Recomendaciones lo mas comentado en tu ciudad
            productos_comentados_ciudad = busqueda.productos_comentados_ciudad(
                longitud, ciudad_usuario)
            if len(productos_comentados_ciudad) > 0:
                listas_productos.append({
                    'titulo':
                    titulo,
                    'productos':
                    productos_comentados_ciudad
                })
            else:
                print "No hay productos en Lo más comentado en tu ciudad"

        elif algoritmo == "reglas_perfil":
            # Recomendaciones por perfil
            productos_perfil = recomendaciones_conocimiento.recomendacion_por_reglas(
                usuario)
            if len(productos_perfil) > 0:
                listas_productos.append({
                    'titulo': titulo,
                    'productos': productos_perfil
                })
            else:
                print "No hay productos en Recomendaciones a tu pefil"

        elif algoritmo == "nuevos":
            # Alianzas nuevas en tu ciudad
            productos_nuevos = busqueda.productos_nuevos(longitud, parametro)
            if len(productos_nuevos) > 0:
                listas_productos.append({
                    'titulo': titulo,
                    'productos': productos_nuevos
                })
            else:
                print "No hay productos en Nuevas alianzas X-ti"

        elif algoritmo == "usuario_similar_demografico":
            # Recomendaciones usuarios socialmente similares
            productos_usuarios_similares = recomendaciones_contenido.recomendaciones_usuarios_similares(
                usuario, longitud)
            if len(productos_usuarios_similares) > 0:
                listas_productos.append({
                    'titulo':
                    titulo,
                    'productos':
                    productos_usuarios_similares
                })
            else:
                print "No hay productos en Usuarios como tú recomiendan"

        elif algoritmo == "productos_similares_gustado":
            # Carrusel de productos similares
            productos_similares = recomendaciones_contenido.recomendacion_similares(
                usuario, longitud)
            if len(productos_similares) > 0:
                listas_productos.append({
                    'titulo': titulo,
                    'productos': productos_similares
                })
            else:
                print "No hay productos en Productos similares a los que te han gustado"

        elif algoritmo == "filtrado_colaborativo":
            # Recomendaciones productos_fc
            productos_fc = recomendaciones_filtrado_colaborativo.recomendaciones_fc(
                usuario, longitud)
            if len(productos_fc) > 0:
                listas_productos.append({
                    'titulo': titulo,
                    'productos': productos_fc
                })
            else:
                print "No hay productos en Usuarios con gustos similares les han gustado"

        elif algoritmo == "hibrido":
            # Recomendaciones hibridas
            recomendaciones_predictivas = recomendaciones_filtrado_colaborativo.recomendaciones_hibridas(
                productos_fc, longitud)
            if len(recomendaciones_predictivas) > 0:
                listas_productos.append({
                    'titulo':
                    titulo,
                    'productos':
                    recomendaciones_predictivas
                })
            else:
                print "No hay productos en Productos interesantes para tí"

    return listas_productos