Example #1
0
def galeriaProducto(request):
    user = getUserConsultaGlobal()
    try:
        conn = psycopg2.connect(
            "dbname='tienda_bd' user='******' host='localhost' password='******'"
        )
        print("Conexion a la base de datos exitosa \n")
    except:
        print("I am unable to connect to the database")
    query1 = """ SELECT r.reviewerid, m.asin, r.overall FROM metadata_amazon_dataset m JOIN reviews_amazon_dataset r ON m.asin = r.asin WHERE m.price !='0.00' AND r.overall !='1.0' AND r.overall !='2.0' AND m.description !='Sin descripcion' AND m.description !='''' AND m.brand != 'Sin marca' AND m.asin !='sinAsin' """
    data_query = pd.read_sql(query1, conn)
    cuenta_rating_producto = (data_query.groupby(
        by=['asin'])['overall'].count().reset_index().rename(
            columns={'overall': 'cuentaTotalRatings'})[[
                'asin', 'cuentaTotalRatings'
            ]])
    totales_ratings = data_query.merge(cuenta_rating_producto,
                                       left_on='asin',
                                       right_on='asin',
                                       how='left')
    ratings_minimo = 50
    productos_mas_populares = totales_ratings.query(
        'cuentaTotalRatings >= @ratings_minimo')
    ratings_pivot = productos_mas_populares.pivot(index='asin',
                                                  columns='reviewerid',
                                                  values='overall').fillna(0)
    print("ratings_pivot")
    print(ratings_pivot.index)
    indexListAsin = []
    objGaleriaList = []
    indexListAsin = ratings_pivot.index
    for i in range(0, 150):
        objProducto = productoSql(indexListAsin[i])
        producto = [
            str(objProducto.asin.get(0)),
            str(objProducto.title.get(0)),
            str(objProducto.imurl.get(0)),
            str(objProducto.price.get(0)),
            str(objProducto.description.get(0)),
            str(objProducto.brand.get(0)),
            str(objProducto.categories.get(0))
        ]
        objGaleriaList.append(producto)
    global objGaleriaListGlobal
    objGaleriaListGlobal = objGaleriaList
    return render(request, 'tienda_app/galeria.html', {
        'user': user,
        'objGaleriaList': objGaleriaList
    })
Example #2
0
def Home(request):
    user = getUserConsultaGlobal()
    asinlist = asinlistGlobal
    ObjProducto1 = buscarProductoxAsin(asinlist[0])
    ObjProducto2 = buscarProductoxAsin(asinlist[1])
    ObjProducto3 = buscarProductoxAsin(asinlist[2])
    ObjProducto4 = buscarProductoxAsin(asinlist[3])
    ObjProducto5 = buscarProductoxAsin(asinlist[4])

    return render(
        request, 'tienda_app/home.html', {
            'user': user,
            'ObjProducto1': ObjProducto1,
            'ObjProducto2': ObjProducto2,
            'ObjProducto3': ObjProducto3,
            'ObjProducto4': ObjProducto4,
            'ObjProducto5': ObjProducto5
        })
Example #3
0
def calificarBtnCinco(request, asin, nombreUser, idUser):
    user = getUserConsultaGlobal()
    print("------------")
    print("Logre calificar el produdcto: " + asin)
    print("Nombre Usuario: " + nombreUser)
    print("ID Usuario: " + idUser)
    print("------------")
    dataVerificacion = validarCalificacion(asin, idUser)
    print("dataVerificacion")
    print(dataVerificacion)
    if dataVerificacion.empty:
        print("Ese producto no ha sido votado anteriormente")
        calificacion = '5.0'
        registrarCalificacion(idUser, asin, nombreUser, calificacion)
    else:
        print("Ya se voto ese producto anteriormente")
        calificacion = '5.0'
        actualizarCalificacion(idUser, asin, calificacion)
    objGaleriaList = objGaleriaListGlobal
    return render(request, 'tienda_app/galeria.html', {
        'user': user,
        'objGaleriaList': objGaleriaList
    })
Example #4
0
def vistaRecomendacionKnn(request):
    print("")
    print("***************************")
    print("Entro a Recomendacion KNN")
    user = getUserConsultaGlobal()
    print("reviewerName: " + str(user.reviewername))
    print("reviewerID: " + str(user.reviewerid))
    asinValido = 'sinAsin'
    reviewsAsociados = reviewsAsociadosUsuario(user.reviewername,
                                               user.reviewerid)
    if reviewsAsociados.empty:
        asinValido = 'sinAsin'
    else:
        print("Revies Asociados")
        print(reviewsAsociados)
        asinValido = str(reviewsAsociados.asin.get(0))
        print("Asin valido seleccionado: " + asinValido)
        if asinValido is None:
            asinValido = 'sinAsin'
            print("Asin valido seleccionado: " + asinValido)
    if asinValido == 'sinAsin':
        print("No hay recomendaciones que mostrar")
        ObjProducto1 = None
        ObjProducto2 = None
        ObjProducto3 = None
        ObjProducto4 = None
        ObjProducto5 = None
        ObjProducto6 = None
        ObjProducto7 = None
        ObjProducto8 = None
        ObjProducto9 = None
        ObjProducto10 = None
        return render(
            request, 'tienda_app/knn.html', {
                'user': user,
                'ObjProducto1': ObjProducto1,
                'ObjProducto2': ObjProducto2,
                'ObjProducto3': ObjProducto3,
                'ObjProducto4': ObjProducto4,
                'ObjProducto5': ObjProducto5,
                'ObjProducto6': ObjProducto6,
                'ObjProducto7': ObjProducto7,
                'ObjProducto8': ObjProducto8,
                'ObjProducto9': ObjProducto9,
                'ObjProducto10': ObjProducto10
            })
    else:
        # Del review se extrae el usuario, y el asin (id producto) asociado a ese review de compra
        # con respecto al cual se realizara la recomendacion
        asinconsultar = asinValido
        """
		asinconsultar = user.asin.asin
		print("objeto asin consultar")
		print("ID:"+" "+user.asin.asin)
		print("Precio:"+" "+user.asin.price)
		print("Descripcion:"+" "+user.asin.description)
		print("Marca:"+" "+user.asin.brand)
		print("Categorias:"+" "+user.asin.categories)
		"""
        rec = RecomendacionKnn(
            asinconsultar
        )  # rec contiene rec=[[lista_id_productos],[lista_distanciasknn_productos]]
        asinlist = rec[0]  # extrae los id de los productos recomendados
        distanceslist = rec[
            1]  # extrae las distancias knn de los productos recomendados
        # Se espera que en knn se recomiende maximo 10 productos, aunque la cantidad de productos que se recomienden
        # dependera de ajustar el parametro n_neighbors, en la funciĆ³n RecomendacionKnn
        ObjProducto1 = None
        ObjProducto2 = None
        ObjProducto3 = None
        ObjProducto4 = None
        ObjProducto5 = None
        ObjProducto6 = None
        ObjProducto7 = None
        ObjProducto8 = None
        ObjProducto9 = None
        ObjProducto10 = None
        for i in range(0, len(asinlist)):
            if (i == 0):
                ObjProducto1 = buscarProductoxAsin(asinlist[i])
            if (i == 1):
                ObjProducto2 = buscarProductoxAsin(asinlist[i])
            if (i == 2):
                ObjProducto3 = buscarProductoxAsin(asinlist[i])
            if (i == 3):
                ObjProducto4 = buscarProductoxAsin(asinlist[i])
            if (i == 4):
                ObjProducto5 = buscarProductoxAsin(asinlist[i])
            if (i == 5):
                ObjProducto6 = buscarProductoxAsin(asinlist[i])
            if (i == 6):
                ObjProducto7 = buscarProductoxAsin(asinlist[i])
            if (i == 7):
                ObjProducto8 = buscarProductoxAsin(asinlist[i])
            if (i == 8):
                ObjProducto9 = buscarProductoxAsin(asinlist[i])
            if (i == 9):
                ObjProducto10 = buscarProductoxAsin(asinlist[i])
        return render(
            request, 'tienda_app/knn.html', {
                'user': user,
                'ObjProducto1': ObjProducto1,
                'ObjProducto2': ObjProducto2,
                'ObjProducto3': ObjProducto3,
                'ObjProducto4': ObjProducto4,
                'ObjProducto5': ObjProducto5,
                'ObjProducto6': ObjProducto6,
                'ObjProducto7': ObjProducto7,
                'ObjProducto8': ObjProducto8,
                'ObjProducto9': ObjProducto9,
                'ObjProducto10': ObjProducto10
            })
Example #5
0
def vistaRecomendacionSvd(request):
    print("")
    print("***************************")
    print("Entro a Recomendacion SVD")
    user = getUserConsultaGlobal()
    print("reviewerName: " + str(user.reviewername))
    print("reviewerID: " + str(user.reviewerid))
    reviewsAsociados = reviewsAsociadosUsuario(user.reviewername,
                                               user.reviewerid)
    if reviewsAsociados.empty:
        asinValido = 'sinAsin'
    else:
        print("Revies Asociados")
        print(reviewsAsociados)
        asinValido = str(reviewsAsociados.asin.get(0))
        print("Asin valido seleccionado: " + asinValido)
        if asinValido is None:
            asinValido = 'sinAsin'
            print("Asin valido seleccionado: " + asinValido)
    if asinValido == 'sinAsin':
        print("No hay recomendaciones que mostrar")
        ObjProducto1 = None
        ObjProducto2 = None
        ObjProducto3 = None
        ObjProducto4 = None
        ObjProducto5 = None
        ObjProducto6 = None
        ObjProducto7 = None
        ObjProducto8 = None
        ObjProducto9 = None
        ObjProducto10 = None
        return render(
            request, 'tienda_app/svd.html', {
                'user': user,
                'ObjProducto1': ObjProducto1,
                'ObjProducto2': ObjProducto2,
                'ObjProducto3': ObjProducto3,
                'ObjProducto4': ObjProducto4,
                'ObjProducto5': ObjProducto5,
                'ObjProducto6': ObjProducto6,
                'ObjProducto7': ObjProducto7,
                'ObjProducto8': ObjProducto8,
                'ObjProducto9': ObjProducto9,
                'ObjProducto10': ObjProducto10
            })
    else:
        asinconsultar = asinValido
        """
		asinconsultar = user.asin.asin
		print("objeto asin consultar")
		print("ID:"+" "+user.asin.asin)
		print("Precio:"+" "+user.asin.price)
		print("Descripcion:"+" "+user.asin.description)
		print("Marca:"+" "+user.asin.brand)
		print("Categorias:"+" "+user.asin.categories)
		"""
        asinlist = []
        rec_svd = recomendacionColaborativaSVD(asinconsultar)
        for i in range(0, len(rec_svd)):
            tupla = rec_svd[i]
            asinlist.append(tupla[0])
        ObjProducto1 = None
        ObjProducto2 = None
        ObjProducto3 = None
        ObjProducto4 = None
        ObjProducto5 = None
        ObjProducto6 = None
        ObjProducto7 = None
        ObjProducto8 = None
        ObjProducto9 = None
        ObjProducto10 = None
        for i in range(0, len(asinlist)):
            if (i == 0):
                ObjProducto1 = buscarProductoxAsin(asinlist[i])
            if (i == 1):
                ObjProducto2 = buscarProductoxAsin(asinlist[i])
            if (i == 2):
                ObjProducto3 = buscarProductoxAsin(asinlist[i])
            if (i == 3):
                ObjProducto4 = buscarProductoxAsin(asinlist[i])
            if (i == 4):
                ObjProducto5 = buscarProductoxAsin(asinlist[i])
            if (i == 5):
                ObjProducto6 = buscarProductoxAsin(asinlist[i])
            if (i == 6):
                ObjProducto7 = buscarProductoxAsin(asinlist[i])
            if (i == 7):
                ObjProducto8 = buscarProductoxAsin(asinlist[i])
            if (i == 8):
                ObjProducto9 = buscarProductoxAsin(asinlist[i])
            if (i == 9):
                ObjProducto10 = buscarProductoxAsin(asinlist[i])
        return render(
            request, 'tienda_app/svd.html', {
                'user': user,
                'ObjProducto1': ObjProducto1,
                'ObjProducto2': ObjProducto2,
                'ObjProducto3': ObjProducto3,
                'ObjProducto4': ObjProducto4,
                'ObjProducto5': ObjProducto5,
                'ObjProducto6': ObjProducto6,
                'ObjProducto7': ObjProducto7,
                'ObjProducto8': ObjProducto8,
                'ObjProducto9': ObjProducto9,
                'ObjProducto10': ObjProducto10
            })