def update(cls, nombre, apellido, email, id_direccion, calle, altura, ciudad, provincia, pais, documento, id_tipo_doc, id_tipo_usuario, uid): try: #Valido datos personales: if nombre == "" or apellido == "": raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.update()", msj="El nombre o el apellido no pueden ser vacios.") #Valido ID Tipo de Usuario tus = DatosTipoUsuario.get_all() if not (any(x.id == int(id_tipo_usuario) for x in tus)): raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.update()", msj="El ID no corresponde a un Tipo de Usuario registrado." ) #Actualizo Documento cls.update_documento(documento, id_tipo_doc, uid) #Actualizo email cls.update_email(email, uid) #Actualizo Dirección print("La direccion es: " + str(id_direccion)) NegocioDireccion.mod_direccion(id_direccion, calle, altura, ciudad, provincia, pais, True) #Actualizo Tipo de Usuario y datos personales. DatosUsuario.update_nombre_apellido_tu(nombre, apellido, id_tipo_usuario, uid) except Exception as e: raise e
def obtiene_nivel(cls, ecoPuntos): """ Esta función devuelve el nivel al que pertenece una determinada cantidad de EcoPuntos, recibida como parametro. """ try: niveles = DatosNivel.get_niveles() for nivel in niveles: if int(nivel.nombre) == len(niveles): if int(ecoPuntos) >= int(nivel.minimoEcoPuntos): return nivel else: raise custom_exceptions.ErrorDeNegocio( origen="negocio_nivel.obtiene_nivel()", msj_adicional= "Error calculando el nivel del usuario.") else: if (int(ecoPuntos) >= int(nivel.minimoEcoPuntos) and int(ecoPuntos) <= int(nivel.maximoEcoPuntos)): return nivel raise custom_exceptions.ErrorDeNegocio( origen="negocio_nivel.obtiene_nivel()", msj_adicional="Error calculando el nivel del usuario.") except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.obtiene_nivel()", msj=str(e), msj_adicional= "Error en la capa de Negocio calculando el nivel para una cantidad de EcoPuntos recibida como parámetro." )
def get_nivel_id(cls, id, convert_desc=False): """ Obtiene un nivel en base a su ID de la BD. """ try: nivel = DatosNivel.get_nivel_id(id) if nivel == None: raise custom_exceptions.ErrorDeNegocio( origen="negocio.get_nivel_id()", msj_adicional= "Error en la capa de Negocio obtieniendo un nivel en base su ID de la capa de Datos. No existe un nivel con el ID ingresado." ) if convert_desc: nivel.descuento = Utils.replace_dots(nivel.descuento, 1) return nivel except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.get_nivel_id()", msj=str(e), msj_adicional= "Error en la capa de Negocio obtieniendo un nivel en base su ID de la capa de Datos." )
def alta_pr(cls, nombre, estado, calle, altura, ciudad, provincia, pais, horarios, demora): """ Gestiona el alta de un Punto de Retiro en la BD. """ #Conexión con el motor de BD. try: #Valida que el nombre no esté vacío. if nombre == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_punto_retiro.alta_pr()", msj_adicional= "Error al añadir el Punto de Retiro. El nombre no puede quedar vacío." ) #Valida RN25 if nombre in cls.get_all_names(): raise custom_exceptions.ErrorDeNegocio( origen="neogocio_punto_retiro.alta_p()", msj_adicional= "Error al añadir el Punto de Retiro. El nombre ya fue utilizado." ) #Valida RN24 estado = Utils.js_py_bool_converter(estado) if estado != True and estado != False: raise custom_exceptions.ErrorDeNegocio( origen="neogocio_punto_retiro.alta_pr()", msj_adicional= "Error al añadir el Punto de Retiro. El estado no puede ser distinto de True o False." ) #Validación de direccion NegocioDireccion.valida_direccion(calle, altura, ciudad, provincia, pais) #Validacion horarios for horario in horarios: NegocioHorario.valida_horarios(horario) #Alta de la direccion idDireccion = NegocioDireccion.alta_direccion( calle, altura, ciudad, provincia, pais) #Alta Punto de Retiro idPuntoRetiro = DatosPuntoRetiro.alta_pr( PuntoRetiro(None, None, nombre, None, None, demora, estado), idDireccion) #Alta horarios NegocioHorario.alta_horarios(horarios, idPuntoRetiro, False) except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.alta_pr()", msj=str(e), msj_adicional= "Error en la capa de Negocio dando de alta un Punto de Retiro." )
def mod_pr(cls, nombre, estado, calle, altura, ciudad, provincia, pais, horarios, demora, id_direccion, id_punto, nombre_ant): """ Gestiona la modificación de un PD. """ try: #Conexión con el motor de BD. #Valida que el nombre no esté vacío. if nombre == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_punto_retiro.mod_pr()", msj_adicional= "Error al modificar el Punto de Retiro. El nombre no puede quedar vacío." ) #Valida RN25 if nombre in cls.get_all_names() and nombre != nombre_ant: raise custom_exceptions.ErrorDeNegocio( origen="neogocio_punto_retiro.mod_pr()", msj_adicional= "Error al modificar el Punto de Retiro. El nombre ya fue utilizado." ) #Valida RN24 estado = Utils.js_py_bool_converter(estado) if estado != True and estado != False: raise custom_exceptions.ErrorDeNegocio( origen="neogocio_punto_retiro.mod_pr()", msj_adicional= "Error al modificar el Punto de Retiro. El estado no puede ser distinto de True o False." ) #Validación de direccion NegocioDireccion.valida_direccion(calle, altura, ciudad, provincia, pais) #Validacion horarios for horario in horarios: NegocioHorario.valida_horarios(horario) #Modificación de la direccion NegocioDireccion.mod_direccion(id_direccion, calle, altura, ciudad, provincia, pais) #Modificación Punto de Retiro DatosPuntoRetiro.mod_pr( PuntoRetiro(id_punto, None, nombre, None, None, demora, estado)) #Modificación horarios NegocioHorario.mod_horarios(horarios, id_punto, False) except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.mod_pd()", msj=str(e), msj_adicional= "Error en la capa de Negocio modificando un Punto de Retiro.")
def baja_nivel(cls, id): """ Da de baja un nivel en base a su nombre, validando primero las reglas de negocio pertinentes. """ try: min_max_niveles = cls.get_min_max_niveles() min_nivel = min_max_niveles[0] max_nivel = min_max_niveles[1] nivel = cls.get_nivel_id(id) if int(nivel.nombre) == 1: #Valida regla RN09. if int(max_nivel) == int(nivel.nombre): raise custom_exceptions.ErrorDeNegocio( origen="negocio_nivel.baja_nivel()", msj_adicional= "Error al eliminar nivel. No se puede eliminar el nivel 1 si no existen otros niveles." ) else: nuevo_min = 0 DatosNivel.baja_nivel(nuevo_min, None, None, None, nivel) cls.actualiza_nivel_all() elif int(nivel.nombre) == int(max_nivel): factor_mod = (nivel.maximoEcoPuntos - nivel.minimoEcoPuntos + 1) / 2 nuevo_max = round(nivel.minimoEcoPuntos) - 1 nuevo_min = round(nivel.maximoEcoPuntos - factor_mod, 0) + 1 DatosNivel.baja_nivel(nuevo_min, int(nivel.nombre) + 1, nuevo_max, int(nivel.nombre) - 1, nivel) cls.actualiza_nivel_all() else: #Valida regla RN05 y RN10 factor_mod = (nivel.maximoEcoPuntos - nivel.minimoEcoPuntos + 1) / 2 nuevo_max = round(nivel.minimoEcoPuntos + factor_mod, 0) - 1 nuevo_min = round(nivel.maximoEcoPuntos - factor_mod, 0) + 1 DatosNivel.baja_nivel(nuevo_min, int(nivel.nombre) + 1, nuevo_max, int(nivel.nombre) - 1, nivel) cls.actualiza_nivel_all() except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.baja_nivel()", msj=str(e), msj_adicional= "Error en la capa de Negocio dando de baja un nivel.")
def add_one(cls,nombre): try: #Valida que el nombre no sea vacío. if nombre == "": raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.add_one()", msj_adicional = "Error al añadir el Tipo de Usuario. El nombre no puede quedar vacío.") #Valida que el nombre no exista. for tu in cls.get_all(): if tu.nombre == nombre: raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.add_one()", msj_adicional = "Error al añadir el Tipo de Usuario. El nombre ya se encuentra utilizado.") DatosTipoUsuario.add_one(nombre) except Exception as e: raise e
def valida_horarios(cls, horario_): """ Valida las RN referidas a los horarios. """ #Conexión con el motor de BD. try: horaDesde = horario_[0] horaHasta = horario_[1] dia = horario_[2] #Valida RN33 if horaDesde == "" and horaHasta != "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_horarios.valida_horarios()", msj_adicional= "Error al añadir el Horario. El horario de cierre no puede quedar vacío si el horario de apertura está asignado." ) #Valida RN33 elif horaDesde != "" and horaHasta == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_horarios.valida_horarios()", msj_adicional= "Error al añadir el Horario. El horario de apertura no puede quedar vacío si el horario de cierre está asignado." ) if horaDesde == "" and horaHasta == "": horario = Horario(None, None, None, dia) else: horario = Horario(None, datetime.strptime(horaDesde, '%H:%M').time(), datetime.strptime(horaHasta, '%H:%M').time(), dia) #Valida RN32 if horario.horaDesde >= horario.horaHasta: raise custom_exceptions.ErrorDeNegocio( origen="neogocio_horarios.valida_horarios()", msj_adicional= "Error al añadir el Horario. La hora de apertura debe ser menor a la de cierre." ) return horario except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="neogocio_horarios.valida_horarios()", msj=str(e), msj_adicional= "Error en la capa de Negocio validando las RN de un horario.")
def modifica_nivel_logic(cls, niveles_baja, nivel_mod, nuevo_des, nuevo_minEP, nuevo_maxEP): """ Maneja la logica para el borrado de elementos en base a las modificaciones realizadas, y llama a la capa de datos para guardar estos cambios. """ try: niveles = DatosNivel.get_niveles() niv = [] for nivel in niveles: niv.append(int(nivel.nombre)) nuevos_niveles = Utils.difference_between_lists(niv, niveles_baja) mas_cercano_inf = Utils.nearest_element( Utils.lower_higher_elements_than(nuevos_niveles, nivel_mod)[0], nivel_mod) mas_cercano_sup = Utils.nearest_element( Utils.lower_higher_elements_than(nuevos_niveles, nivel_mod)[1], nivel_mod) DatosNivel.baja_nivel_mod(niveles_baja, nivel_mod, nuevo_des, nuevo_minEP, nuevo_maxEP, mas_cercano_inf, mas_cercano_sup, nuevos_niveles) cls.actualiza_nivel_all() except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocioNivel.modifica_nivel_logic()", msj=str(e), msj_adicional= "Error en la capa de Negocio en el manejo de la lógica de la modifiacion del nivel." )
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 update(cls, idEnt, nombre): """ Actualiza el nombre de una entidad de destino en la BD """ try: if not DatosEntidadDestino.check_name_repeats(nombre): #Valida regla RN11 raise custom_exceptions.ErrorReglaDeNegocio( origen="negocio_entidad_destino.update()", msj_adicional= "Error en la capa de negocio al validar regla RN11: Todas las entidades de destino deben tener nombres distintos." ) elif nombre == "": #Valida regla RN12 raise custom_exceptions.ErrorReglaDeNegocio( origen="negocio_entidad_destino.update()", msj_adicional= "Error en la capa de negocio al validar regla RN12: Una entidad no puede tener nombre vacio." ) else: DatosEntidadDestino.update(idEnt, nombre) except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio_entidad_destino.update()", msj=str(e), msj_adicional= "Error en la capa de Negocio actualizando una Entidad destino de la base de Datos" )
def add(cls, nombre): """ Da de alta una nueva entidad destino en el sistema. """ try: if not DatosEntidadDestino.check_name_repeats(nombre): #Valida regla RN11 raise custom_exceptions.ErrorReglaDeNegocio( origen="negocio_entidad_destino.add()", msj_adicional= "Error en la capa de negocio al validar regla RN11: Todas las entidades de destino deben tener nombres distintos." ) elif nombre == "": #Valida regla RN12 raise custom_exceptions.ErrorReglaDeNegocio( origen="negocio_entidad_destino.add()", msj_adicional= "Error en la capa de negocio al validar regla RN12: Una entidad no puede tener nombre vacio." ) else: DatosEntidadDestino.add(nombre) except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio_entidad_destino.add()", msj=str(e), msj_adicional= "Error en la capa de Negocio dando de alta una nueva entidad de destino." )
def abre_toda_semana(cls, horarios): """ Dtermina si un Punto de Depósito abre de lunes a viernes. """ #Conexión con el motor de BD. try: lunes = next(x for x in horarios if x.dia == "Lunes") martes = next(x for x in horarios if x.dia == "Martes") miercoles = next(x for x in horarios if x.dia == "Miércoles") jueves = next(x for x in horarios if x.dia == "Jueves") viernes = next(x for x in horarios if x.dia == "Viernes") if lunes.horaDesde != False and lunes.horaHasta != False: if martes.horaDesde != False and martes.horaHasta != False: if miercoles.horaDesde != False and miercoles.horaHasta != False: if jueves.horaDesde != False and jueves.horaHasta != False: if viernes.horaDesde != False and viernes.horaHasta != False: return True return False except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.abre_toda_semana()", msj=str(e), msj_adicional= "Error en la capa de Negocio calculando si un PD abre de corrido durante la semana." )
def get_materialesPd_by_id(cls, idPunto, json_return=True): """ Obtiene los materiales que acepta un punto de depósito en base al ID que recibe como parámetro. """ #Conexión con el motor de BD. try: materiales = DatosMaterial.get_all_byIdPuntoDep(idPunto) materiales_ = [] if json_return == False: return materiales else: for material in materiales: materiales_.append({ "id": material.id, "nombre": material.nombre, "unidadMedida": material.unidadMedida, "color": material.color, "estado": material.estado }) return materiales_ except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.get_materialesPd_by_id()", msj=str(e), msj_adicional= "Error en la capa de Negocio obtieniendo los materiales que acepta un PD de la capa de Datos." )
def getDescuentosAntPost(cls, numero): """ Obtiene el descuento anterior y posterior en base a un determinado numero de nivel, y los devuelve en un diccionario. """ try: maxLevel = int(DatosNivel.get_max_nivel().nombre) if numero == 1 and numero == maxLevel: anterior = 0 posterior = 100 elif numero == 1: anterior = 0 posterior = DatosNivel.get_nivel_nombre(int(numero) + 1).descuento elif numero == maxLevel: anterior = DatosNivel.get_nivel_nombre(int(numero) - 1).descuento posterior = 100.01 else: anterior = DatosNivel.get_nivel_nombre(int(numero - 1)).descuento posterior = DatosNivel.get_nivel_nombre(int(numero) + 1).descuento result = {'anterior': anterior, 'posterior': posterior} return result except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio.getDescuentosAntPost()", msj=str(e), msj_adicional= "Error en la capa de Negocio obtieniendo los descuentos de los niveles anteriores y posteriores a un nivel por numero." )
def update_email(cls, email, uid): try: #Valida RN18 if cls.check_email(email): if email not in cls.get_all_emails(uid): DatosUsuario.update_email(email, uid) else: raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.update_email()", msj="El email no puede estar repetido.") else: raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.update_email()", msj="El email tiene un formato incorrecto.") except Exception as e: raise e
def checkStock(cls, idTA, cant): articulo = DatosArticulo.get_by_id(idTA) nueva_cant = articulo.stock - cant if nueva_cant < 0: raise custom_exceptions.ErrorDeNegocio( origen="negocio_articulo.disminuirStock()", msj="error-stock", msj_adicional="Stock insuficiente para realizar pedido")
def checkEP(cls, id, totalEP): """Comprueba que se puede gastar cierta cantidad de EP. Si no es así, levanta una excepción de negocio""" user = DatosUsuario.get_by_id(id) nueva_cant_ep = user.totalEcopuntos - totalEP if nueva_cant_ep < 0: raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.useEP()", msj="error-ep", msj_adicional="EP insuficientes para realizar pedido")
def update_documento(cls, nro, tipo, uid): try: #Valida RN30 if str(nro).isalnum(): #Valida RN20 if str(nro) not in cls.get_all_documentos(uid): DatosUsuario.update_documento(nro, tipo, uid) else: raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.update_documento()", msj="El número de documento no puede estar repetido.") else: raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.update_documento()", msj="El número de documento solo puede ser alfanumérico.") except Exception as e: raise e
def valida_direccion(cls, calle, altura, ciudad, provincia, pais): """ Realiza las validaciones de negocio de una direccion. """ #Conexión con el motor de BD. try: #Valida RN27 if altura == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_direccion.alta_pd()", msj_adicional= "Error al validar una dirección. La altura no puede quedar vacía." ) #Valida RN31 elif not (isinstance(int(altura), int)): raise custom_exceptions.ErrorDeNegocio( origen="neogocio_direccion.alta_pd()", msj_adicional= "Error al validar una dirección. La altura debe ser numérica." ) #Valida RN26 elif calle == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_direccion.alta_pd()", msj_adicional= "Error al validar una dirección. La calle no puede quedar vacía." ) #Valida RN28 elif ciudad == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_direccion.alta_pd()", msj_adicional= "Error al validar una dirección. La ciudad no puede quedar vacía." ) #Valida RN29 elif provincia == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_direccion.alta_pd()", msj_adicional= "Error al validar una dirección. La provincia no puede quedar vacía." ) #Valida RN30 elif pais == "": raise custom_exceptions.ErrorDeNegocio( origen="neogocio_direccion.alta_pd()", msj_adicional= "Error al validar una dirección. El país no puede quedar vacío." ) return True except custom_exceptions.ErrorDeConexion as e: raise e except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio_direccion.valida_direccion()", msj=str(e), msj_adicional= "Error en la capa de Negocio validando las Reglas de Negocio de una direccion." )
def get_movimientos_stock(cls,id,stock): """ Obtiene los movimientos de stock de un insumo durante el último año en base a su ID, recibiendo stock actual como parámetro. """ try: return DatosInsumo.get_movimientos_stock(id,stock)[::-1] except Exception as e: raise custom_exceptions.ErrorDeNegocio(origen="negocio_material.get_movimientos_stock()", msj=str(e), msj_adicional="Error en la capa de Negocio obteniendo los movimientos de stock de la base de Datos")
def baja(cls, uid): try: users = DatosUsuario.get_all(True) if not (any(x.id == int(uid) for x in users)): raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.baja()", msj="El ID no corresponde a un Usuario registrado.") DatosUsuario.baja(uid) except Exception as e: raise e
def verificacion(cls, code): try: if len(code) > 0: return DatosUsuario.verificacion(code) else: raise custom_exceptions.ErrorDeNegocio( origen="negocio_usuario.verificacion()", msj_adicional="Error al verificar el codigo") except Exception as e: raise e
def adress_format(cls, value): """ Convierte la dirección al formato deseado para mostrar (elimina la ciudad). """ try: return (value.partition(",")[0]) except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="utils.adress_format()", msj=str(e), msj_adicional="Error convirtiendo el formato de la dirección.")
def difference_between_lists(cls, lista1, lista2): """ Obtiene la diferencia de la lista 1 con repsecto de la lista 2 listas, y devuelve el resultado. """ try: return list(set(lista1).difference(lista2)) except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="utils.difference_between_lists()", msj=str(e), msj_adicional="Error obteniendo la diferencia entre dos listas." )
def baja(cls,idTipoUsuario,idTuReemplazo): try: #Valida que no sean vacíos. if idTipoUsuario == None and idTuReemplazo == None: raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.baja()", msj_adicional = "Error al eliminando el Tipo de Usuario. Los ids no pueden ser vacíos.") #Valido que sean distintos entre sí. if idTipoUsuario == idTuReemplazo: raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.baja()", msj_adicional = "Error al eliminando el Tipo de Usuario. Los ids no pueden ser iguales.") #Valido que existan tus = cls.get_all() if not (any(x.id == int(idTipoUsuario) for x in tus) and any(x.id == int(idTuReemplazo) for x in tus)): raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.baja()", msj_adicional = "Error al eliminando el Tipo de Usuario. Los ids no corresponden a Tipos de Usuario registrados.") DatosTipoUsuario.baja(idTipoUsuario,idTuReemplazo) return True except Exception as e: raise e
def delete(cls, id): """ Elimina un artículo de la BD a partir de su id """ try: DatosArticulo.delete(id) except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio_articulo.delete()", msj=str(e), msj_adicional= "Error en la capa de Negocio eliminando un artículo de la base de Datos" )
def lower_higher_elements_than(cls, lista, valor): """ Filtra de una lista, aquellos elementos que son menores que el valor pasado como parametro, y aquellos que son mayores. Devuelve una lista para cada caso de la forma [[menores], [mayores]] """ try: mayores = sorted(i for i in lista if i > valor) menores = sorted(i for i in lista if i < valor) return [menores, mayores] except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="utils.difference_between_lists()", msj=str(e), msj_adicional="Error obteniendo elementos menores y mayores.")
def delete(cls, id): """ Elimina una entidad de destino de la BD a partir de su id """ try: DatosEntidadDestino.delete(id) except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio_entidad_destino.delete()", msj=str(e), msj_adicional= "Error en la capa de Negocio eliminando una Entidad destino de la base de Datos" )
def get_by_not_in_id_array(cls, ids): """ Obtiene TiposArticulos de la BD en base a los que no estan en una lista de IDs """ try: articulos = DatosArticulo.get_by_not_in_id_array(ids) return articulos except Exception as e: raise custom_exceptions.ErrorDeNegocio( origen="negocio_articulo.get_by_not_in_id_array()", msj=str(e), msj_adicional= "Error en la capa de Negocio obtieniendo tipos de articulo de la capa de Datos." )