def alta_direccion(cls,
                       calle,
                       altura,
                       ciudad,
                       provincia,
                       pais,
                       validar=False):
        """
        Añade una dirección a la BD.
        """
        #Conexión con el motor de BD.
        try:
            if validar:
                if NegocioDireccion.valida_direccion(calle, altura, ciudad,
                                                     provincia, pais):
                    return DatosDireccion.alta_direccion(
                        Direccion(None, calle, altura, ciudad, provincia,
                                  pais))
            else:
                return DatosDireccion.alta_direccion(
                    Direccion(None, calle, altura, ciudad, provincia, pais))

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio_direccion.alta_direccion()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio dando de alta una direccion.")
    def get_by_id(cls, id):
        """
        Obtiene un Punto de Depósito de la BD segun su ID.
        """
        try:
            cls.abrir_conexion()
            sql = (
                "select * from puntosDeposito where estadoEliminacion = 'disponible' AND idPunto={} order by nombre ASC"
            ).format(id)
            cls.cursor.execute(sql)
            punto = cls.cursor.fetchall()[0]
            #Se instancia sin los horarios ya que no se muestran, para no generar tráfico de datos innecesario.
            direccion = DatosDireccion.get_one_id(punto[4])
            materiales_ = DatosMaterial.get_all_byIdPuntoDep(punto[0], True)
            materiales = []
            for mat in materiales_:
                materiales.append(mat.id)
            pd = PuntoDeposito(punto[0], direccion, punto[1], punto[2],
                               materiales, None)
            return pd

        except Exception as e:
            raise custom_exceptions.ErrorDeConexion(
                origen="data.get_by_id()",
                msj=str(e),
                msj_adicional=
                "Error obteniendo un Punto de Depósito desde la BD.")
        finally:
            cls.cerrar_conexion()
    def get_all_sin_filtro(cls, noClose=False):
        """
        Obtiene todos los Puntos de Depósito de la BD.
        """
        try:
            cls.abrir_conexion()
            sql = ("select * from puntosDeposito order by nombre ASC")
            cls.cursor.execute(sql)
            puntosDeposito = cls.cursor.fetchall()
            puntosDeposito_ = []
            for punto in puntosDeposito:
                #Se instancia sin los horarios ya que no se muestran, para no generar tráfico de datos innecesario.
                if punto[3] == 'eliminado':
                    direccion = None
                else:
                    direccion = DatosDireccion.get_one_id(punto[4])
                materiales_ = DatosMaterial.get_all_byIdPuntoDep(
                    punto[0], True)
                materiales = []
                for mat in materiales_:
                    materiales.append(mat.id)
                puntosDeposito_.append(
                    PuntoDeposito(punto[0], direccion, punto[1], punto[2],
                                  materiales, None))
            return puntosDeposito_

        except Exception as e:
            raise custom_exceptions.ErrorDeConexion(
                origen="data.get_all()",
                msj=str(e),
                msj_adicional="Error otodos los Puntos de Depósito desde la BD."
            )
        finally:
            if not (noClose):
                cls.cerrar_conexion()
Пример #4
0
 def get_by_id(cls,id):
     """
     Obtiene un punto de retiro de la BD a partir de su id.
     """
     try:
         cls.abrir_conexion()
         sql = ("SELECT idPunto, \
                        estadoEliminacion, \
                        demoraFija, \
                        nombre, \
                        idDireccion, \
                        estado \
                     FROM puntosRetiro WHERE idPunto = {} AND estadoEliminacion != \"eliminado\";".format(id))
         cls.cursor.execute(sql)
         pr = cls.cursor.fetchall()[0]
         direccion = DatosDireccion.get_one_id(pr[4])
         horarios = DatosHorario.get_horariosPR_id(pr[0])
         puntoRetiro = PuntoRetiro(pr[0],direccion,pr[3],pr[1],horarios,pr[2],bool(pr[5]))
         return puntoRetiro
     except Exception as e:
         raise custom_exceptions.ErrorDeConexion(origen="data_punto_retiro.get_by_id()",
                                                 msj=str(e),
                                                 msj_adicional="Error obtieniendo un punto de retiro desde la BD.")
     finally:
         cls.cerrar_conexion()
Пример #5
0
 def get_all(cls,noFilter, filterInactivos):
     """
     Obtiene todos los puntos de retiro de la BD.
     """
     try:
         cls.abrir_conexion()
         if noFilter and filterInactivos == False:
             sql = ("SELECT idPunto, \
                         estadoEliminacion, \
                         demoraFija, \
                         nombre, \
                         idDireccion, \
                         estado \
                         FROM puntosRetiro order by nombre ASC;")
         elif noFilter == False and filterInactivos == False:
             sql = ("SELECT idPunto, \
                         estadoEliminacion, \
                         demoraFija, \
                         nombre, \
                         idDireccion, \
                         estado \
                         FROM puntosRetiro WHERE estadoEliminacion != \"eliminado\" order by nombre ASC;")
         elif noFilter and filterInactivos:
             sql = ("SELECT idPunto, \
                         estadoEliminacion, \
                         demoraFija, \
                         nombre, \
                         idDireccion, \
                         estado \
                         FROM puntosRetiro where estado=1 order by nombre ASC;")
         elif noFilter == False and filterInactivos:
             sql = ("SELECT idPunto, \
                         estadoEliminacion, \
                         demoraFija, \
                         nombre, \
                         idDireccion, \
                         estado \
                         FROM puntosRetiro WHERE estadoEliminacion != \"eliminado\" and estado=1 order by nombre ASC;")
         cls.cursor.execute(sql)
         puntos = cls.cursor.fetchall()
         puntosRetiro = []
         for pr in puntos:
             if pr[4] == None:
                 direccion = None
             else:
                 direccion = DatosDireccion.get_one_id(pr[4])
             horarios = DatosHorario.get_horariosPR_id(pr[0])
             puntoRetiro = PuntoRetiro(pr[0],direccion,pr[3],pr[1],horarios,pr[2],bool(pr[5]))
             puntosRetiro.append(puntoRetiro)
         return puntosRetiro
     except Exception as e:
         raise custom_exceptions.ErrorDeConexion(origen="data_punto_retiro.get_all()",
                                                 msj=str(e),
                                                 msj_adicional="Error obtieniendo los puntos de retiro desde la BD.")
     finally:
         cls.cerrar_conexion()
Пример #6
0
    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()
Пример #7
0
 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()
Пример #8
0
 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()
Пример #9
0
    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()