def get(self, id_persona): try: dirname = os.path.dirname(__file__) user_model = UserModel() id_cliente = yield user_model.get_client_id_by_person_id( id_persona) if not id_cliente: raise Exception('Cliente no encontrado') try: filename = os.path.join(dirname, 'recoms/' + str(id_cliente) + '.json') file = open(filename, 'r') file = file.read() recom = json.loads(file) except: product_model = ProductModel() util = UtilProject() recom = yield product_model.get_default_recommendations() recom = util.cast_numeric_to_string(recom, 'precio_venta') recom = util.cast_numeric_to_string(recom, 'score') self.set_status(200) self.write({'recommendations': recom}) except Exception as error: self.set_status(400) self.write({'message': str(error)})
def get(self, id_usuario, id_departamento): try: util = UtilProject() user_model = UserModel() product_model = ProductModel() products = yield product_model.get_products_by_department( id_departamento) id_cliente = yield user_model.get_client_id_by_person_id( id_usuario) if not id_cliente: raise Exception('Cliente no encontrado') client = yield user_model.get_client_thetas(id_cliente) if client['thetas']: client['theta'] = np.array([client['thetas']], dtype=np.longdouble) del client['thetas'] for product in products: product['x'] = np.array([product['x']], dtype=np.longdouble) client = yield user_model.get_purchases_and_favs_by_client( client) favs = client['favs'] purchases = client['purchases'] recommendations = [] for product in products: if not any( d['fk_id_producto'] == product['id_producto'] for d in favs) or not any( d['fk_id_producto'] == product['id_producto'] for d in purchases): recommendations.append({ 'id_producto': product['id_producto'], 'score': np.matmul(client['theta'].T, product['x'])[0][0] + product['mu'] }) recommendations = yield product_model.get_recommendations_specific_info( recommendations ) #obtenemos los datos de cada recomendacion recommendations = sorted( recommendations, key=lambda k: k['score'], reverse=True) #ordenamos de mayor a menor recommendations = recommendations[:15] else: recommendations = yield product_model.get_default_recommendations_department( id_departamento) recommendations = util.cast_numeric_to_string( recommendations, 'precio_venta') recommendations = util.cast_numeric_to_string( recommendations, 'score') self.set_status(200) self.write({'recommendations': recommendations}) except Exception as error: import traceback traceback.print_exc() self.set_status(400) self.write({'message': str(error)}) """
def get(self, id_persona): try: user_model = UserModel() id_cliente = yield user_model.get_client_id_by_person_id( id_persona) if not id_cliente: raise Exception('Cliente no encontrado.') achievements = yield user_model.get_client_achievements(id_cliente) if len(achievements) is 0: raise Exception('No tienes ningun logro.') self.set_status(200) self.write({'achievements': achievements}) except Exception as error: self.set_status(400) self.write({'message': str(error)})
class FavouriteHandler(tornado.web.RequestHandler): @gen.coroutine def post(self): try: self.__model = UserModel() data = json.loads(self.request.body.decode('UTF-8')) if not 'id_persona' in data and not 'id_producto' in data and not 'favorito' in data: raise Exception('No cumples con los datos necesarios.') id_cliente = yield self.__model.get_client_id_by_person_id(data['id_persona']) if not id_cliente: raise Exception('Ha ocurrido un error al buscar el cliente.') if data['favorito'] is 1: registered = yield self.__model.existent_favourite(id_cliente, data['id_producto']) if registered: raise Exception('Este producto ya estaba agregado a tus favoritos.') register = yield self.__model.add_client_favourite(id_cliente, data['id_producto']) if not register: raise Exception('Ha ocurrido un error.') self.set_status(200) self.write({'message': 'Producto agregado a favoritos'}) else: errased = yield self.__model.remove_client_favourite(id_cliente, data['id_producto']) if not errased: raise Exception('Ha habido un problema al remover de favoritos.') self.set_status(200) self.write({'message' : 'Se ha removido el producto de favoritos.'}) except Exception as error: self.set_status(400) self.write({'message' : str(error)}) @gen.coroutine def get(self): try: self.__model = UserModel() self.__util = UtilProject() id_cliente = yield self.__model.get_cliente_id_from_persona_id(self.get_argument('id_persona')) if not id_cliente: raise Exception('Ha ocurrido un error al buscar el cliente.') favourites = yield self.__model.get_client_favourites_products(id_cliente) if not favourites or len(favourites) == 0: raise Exception('No tienes ningún favorito registrado.') favourites = self.__util.cast_numeric_to_string(favourites, 'precio_venta') self.set_status(200) self.write({'products': favourites}) except Exception as error: self.set_status(400) self.write({'message' : str(error)})