def get_by_id_usuario(cls,uid, limit=False): """ Busca los depósitos que correspondan a un usuario en base a su ID. """ try: return DatosDeposito.get_by_id_usuario(uid, limit) except Exception as e: raise e
def get_by_id(cls, id, noClose=False): """ Busca un usuario en la BD segun su id. """ try: cls.abrir_conexion() sql = ("SELECT usuarios.idUsuario, \ usuarios.nroDoc, \ usuarios.nombre, \ usuarios.apellido, \ usuarios.email, \ usuarios.password, \ usuarios.idTipoUsuario, \ usuarios.idTipoDoc, \ usuarios.idDireccion, \ usuarios.idNivel, \ usuarios.img \ from usuarios where usuarios.idUsuario = {}").format(id) cls.cursor.execute(sql) usuarios = cls.cursor.fetchall() if len(usuarios) > 0: usu = usuarios[0] direc = DatosDireccion.get_one_id(usu[8]) depositos = DatosDeposito.get_by_id_usuario(usu[0]) ped = DatosPedido.get_by_user_id(usu[0]) usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3], usu[5], usu[6], direc, depositos, ped, usu[9], [], [], [], usu[4], usu[10]) usuario.calcularTotalEcopuntos() return usuario else: raise custom_exceptions.ErrorDeConexion( origen="data_usuario.get_by_id()", msj_adicional="Usuario inexistente") except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_usuario.get_by_id()", msj=str(e), msj_adicional="Error buscando usuario en la BD.") finally: if not (noClose): cls.cerrar_conexion()
def buscar_info_user(cls, busqueda): """ Obtiene todos los usuarios según su ID, nombre completo, email, o documento """ try: cls.abrir_conexion() sql = ("SELECT usuarios.idUsuario, \ usuarios.nroDoc, \ usuarios.nombre, \ usuarios.apellido, \ usuarios.email, \ usuarios.password, \ usuarios.idTipoUsuario, \ usuarios.idTipoDoc, \ usuarios.idDireccion, \ usuarios.idNivel, \ usuarios.img \ from usuarios WHERE estado = \"habilitado\" AND (idUsuario=\"{}\" OR email=\"{}\" OR nroDOC=\"{}\")" ).format(busqueda, busqueda, busqueda) cls.cursor.execute(sql) usuarios = cls.cursor.fetchall() users = [] for usu in usuarios: direc = DatosDireccion.get_one_id(usu[8]) depositos = DatosDeposito.get_by_id_usuario(usu[0]) ped = DatosPedido.get_by_user_id(usu[0]) tipo_doc = DatosTipoDocumento.get_by_id(usu[7]) usuario = Usuario(usu[0], usu[1], tipo_doc, usu[2], usu[3], usu[5], usu[6], direc, depositos, ped, usu[9], [], [], [], usu[4], usu[10]) usuario.calcularTotalEcopuntos() users.append(usuario) return users except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_usuario.buscar_info_user()", msj=str(e), msj_adicional="Error buscando usuarios.") finally: cls.cerrar_conexion()
def get_all(cls, noFilter=False): """ Obtiene todos los usuarios. El No filter solamente filtra los no-activos y los no-verificados, no se incluyen nunca los eliminados. """ try: cls.abrir_conexion() if noFilter: sql = ("SELECT usuarios.idUsuario, \ usuarios.nroDoc, \ usuarios.nombre, \ usuarios.apellido, \ usuarios.email, \ usuarios.password, \ usuarios.idTipoUsuario, \ usuarios.idTipoDoc, \ usuarios.idDireccion, \ usuarios.idNivel, \ usuarios.img, \ usuarios.estado \ from usuarios where estado != 'eliminado' order by nombre IS NULL, nombre,estado ASC" ) else: sql = ("SELECT usuarios.idUsuario, \ usuarios.nroDoc, \ usuarios.nombre, \ usuarios.apellido, \ usuarios.email, \ usuarios.password, \ usuarios.idTipoUsuario, \ usuarios.idTipoDoc, \ usuarios.idDireccion, \ usuarios.idNivel, \ usuarios.img, \ usuarios.estado \ from usuarios WHERE estado = \"habilitado\" order by nombre ASC" ) cls.cursor.execute(sql) usuarios = cls.cursor.fetchall() users = [] if noFilter: for usu in usuarios: print(usu[0]) print(usu[11]) if usu[11] != 'habilitado': direc = None depositos = None ped = None usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3], usu[5], usu[6], direc, depositos, ped, usu[9], [], [], [], usu[4], usu[10], usu[11]) users.append(usuario) else: direc = DatosDireccion.get_one_id(usu[8]) depositos = DatosDeposito.get_by_id_usuario(usu[0]) ped = DatosPedido.get_by_user_id(usu[0]) usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3], usu[5], usu[6], direc, depositos, ped, usu[9], [], [], [], usu[4], usu[10], usu[11]) usuario.calcularTotalEcopuntos() users.append(usuario) else: for usu in usuarios: direc = DatosDireccion.get_one_id(usu[8]) depositos = DatosDeposito.get_by_id_usuario(usu[0]) ped = DatosPedido.get_by_user_id(usu[0]) usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3], usu[5], usu[6], direc, depositos, ped, usu[9], [], [], [], usu[4], usu[10], usu[11]) usuario.calcularTotalEcopuntos() users.append(usuario) return users except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_usuario.get_all()", msj=str(e), msj_adicional="Error obteniendo todos los usuarios.") finally: cls.cerrar_conexion()
def login(cls, email, password, noClose=False): """ Busca un usuario en la BD que tenga el email y la contraseña que recibe como parámetro. Si no hay ninguno, devuelve False. """ try: cls.abrir_conexion() sql = ("SELECT usuarios.idUsuario, \ usuarios.nroDoc, \ usuarios.nombre, \ usuarios.apellido, \ usuarios.email, \ usuarios.password, \ usuarios.idTipoUsuario, \ usuarios.idTipoDoc, \ usuarios.idDireccion, \ usuarios.idNivel, \ usuarios.img, \ usuarios.estado \ from usuarios where email = %s and password = %s and estado != 'eliminado'" ) values = (email, password) cls.cursor.execute(sql, values) usuarios = cls.cursor.fetchall() if len(usuarios) > 0: usu = usuarios[0] if usu[11] != "habilitado": usuario = Usuario(usu[0], None, None, None, None, usu[5], None, None, email=usu[4], estado=usu[11]) else: direc = DatosDireccion.get_one_id(usu[8]) depositos = DatosDeposito.get_by_id_usuario(usu[0]) ped = DatosPedido.get_by_user_id(usu[0]) usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3], usu[5], usu[6], direc, depositos, ped, usu[9], [], [], [], usu[4], usu[10], usu[11]) usuario.calcularTotalEcopuntos() return usuario else: raise custom_exceptions.ErrorDeConexion( origen="data_usuario.login()", msj_adicional="Usuario inexistente") except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_usuario.login()", msj=str(e), msj_adicional= "Error buscando usuario en la BD para realizar el login.") finally: if not (noClose): cls.cerrar_conexion()