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 })
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 })
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 })
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 })
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 })