def todos_presentacion(): datos = DatosSocio() socios = datos.todos() for socio in socios: tree.insert("", tk.END, text=socio.id, values=(socio.nombre, socio.apellido, socio.dni)) return socios
class NegocioSocio(object): MIN_CARACTERES = 3 MAX_CARACTERES = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ anterior Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar(id_socio) def buscar_dni(self, dni_socio): """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar_dni(dni_socio) def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ return self.datos.todos() def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ if (self.regla_1(socio) and self.regla_2(socio) and self.regla_3()): self.datos.alta(socio) return True else: return None def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ socio_deleted = self.buscar(id_socio) if socio_deleted is None: return False return self.datos.baja(id_socio) def modificacion(self, socio, id=-1): """ Modifica un socio. Se debe validar la regla 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True si la modificacion fue exitosa. :type socio: Socio :rtype: bool """ if self.regla_1(socio, id) and self.regla_2(socio) and ( self.datos.modificacion(socio) is not None): return True return False def resetTabla(self): self.base.drop_all(self.engine) def regla_1(self, socio, id=-1): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ #tengo q comprobar si el buscar_dni funciona correctamente y dps si encuentra el socio_repe socio_repe = self.buscar_dni(socio.dni) if socio_repe == None: return True if socio_repe.id != id: #levanto excepcion raise DniRepetido('Error. Dni ya registrado') else: return True def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ if (len(socio.nombre) < self.MIN_CARACTERES or len(socio.nombre) > self.MAX_CARACTERES): raise LongitudInvalida( 'ERROR. La longitud del nombre debe tener entre 3 y 15 caracteres.' ) elif (len(socio.apellido) < self.MIN_CARACTERES or len(socio.apellido) > self.MAX_CARACTERES): raise LongitudInvalida( 'ERROR. La longitud del apellido debe tener entre 3 y 15 caracteres.' ) return True def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ if len(self.datos.todos()) > self.MAX_SOCIOS: #Excepción de maximo socios raise MaximoAlcanzado( 'ERROR: Se excedio la cantidad maxima de socios') else: return True
class NegocioSocio(object): MIN_CARACTERES = 3 MAX_CARACTERES = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ try: self.datos.buscar(id_socio) except: return None def buscar_dni(self, dni_socio): """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ try: self.datos.buscar_dni(dni_socio) except: return None def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ return self.datos.todos() def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ if not (self.regla_1(socio) or not self.regla_2(socio) or not self.regla_3()): return False else: self.datos.alta(socio) return True def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ if self.buscar(id_socio) is None: return False else: self.datos.baja(id_socio) return True def modificacion(self, socio): """ Modifica un socio. Se debe validar la regla 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True si la modificacion fue exitosa. :type socio: Socio :rtype: bool """ if not self.regla_2(socio): return False else: self.datos.modificacion(socio) return True def regla_1(self, socio): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ if self.datos.buscar_dni(socio.dni) is not None: raise DniRepetido("El Dni ya esxite") return True def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ if (len(socio.nombre < self.MIN_CARACTERES) and len(socio.nombre > self.MAX_CARACTERES) and len(socio.apellido < self.MIN_CARACTERES) and len(socio.apellido > self.MAX_CARACTERES)): raise LongitudInvalida( "El nombre y/o apellido del socio debe tener entre 3 y 15 caracteres" ) return False def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ if (len(self.todos()) > self.MAX_SOCIOS): raise MaximoAlcanzado("Ha alcanzado el máximo de socios permitido") return False
class NegocioSocio(object): MIN_CARACTERES = 3 MAX_CARACTERES = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar(id_socio) def buscar_dni(self, dni_socio): """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar_dni(dni_socio) def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ todos=self.datos.todos() return todos def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ try: if self.regla_1(socio) == True and self.regla_2(socio) == True and self.regla_3() == True: self.datos.alta(socio) return True except DniRepetido as e: return e except LongitudInvalida as e: return e except MaximoAlcanzado as e: return e def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ resultado=self.datos.baja(id_socio) return resultado def modificacion(self, socio): """ Modifica un socio. Se debe validar la regla 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True si la modificacion fue exitosa. :type socio: Socio :rtype: bool """ try: self.regla_2(socio) self.datos.modificacion(socio) except LongitudInvalida as e: return e return True def regla_1(self, socio): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ dni = self.datos.buscar_dni(socio.dni) if dni is not None: raise DniRepetido('Ya se encuentra un usuario con ese dni') return False return True def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ long_nombre = len(socio.nombre) long_apellido = len(socio.apellido) if long_nombre >= self.MIN_CARACTERES and long_nombre <= self.MAX_CARACTERES: if long_apellido >= self.MIN_CARACTERES and long_apellido <= self.MAX_CARACTERES: return True else: raise LongitudInvalida("Apellido debe tener entre "+str(self.MIN_CARACTERES)+" y "+ str(self.MAX_CARACTERES)) else: raise LongitudInvalida("Nombre debe tener entre "+str(self.MIN_CARACTERES)+" y "+ str(self.MAX_CARACTERES)) return False def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ todos = self.datos.todos() if len(todos) == self.MAX_SOCIOS: raise MaximoAlcanzado("Se ha alcanzado el máximo de socios") return False return True
class NegocioSocio(object): MIN_CARACTERES = 3 MAX_CARACTERES = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar(id_socio) def buscar_dni(self, dni_socio): """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar_dni(dni_socio) def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ return self.datos.todos() def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ if (self.regla_1(socio) and self.regla_2(socio) and self.regla_3()): self.datos.alta(socio) return True else: return None def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ if self.buscar(id_socio) is not None: return True else: return False def modificacion(self, socio): """ Modifica un socio. Se debe validar la regla 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True si la modificacion fue exitosa. :type socio: Socio :rtype: bool """ if (self.regla_2(socio) == True and self.datos.modificacion(socio) is not None): return True else: return False def regla_1(self, socio): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ socio_repetido = self.buscar_dni(socio.dni) if socio_repetido == None: return True else: raise DniRepetido('DNI Repetido') def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ if (len(socio.nombre) < 3 or len(socio.nombre) > 15): raise LongitudInvalida( 'Error en la longitud del nombre, debe tener entre 3 y 15 caracteres.' ) elif (len(socio.apellido) < 3 or len(socio.apellido) > 15): raise LongitudInvalida( 'Error en la longitud del apellido, debe tener entre 3 y 15 caracteres.' ) else: return True def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ if len(self.datos.todos()) > 200: raise MaximoAlcanzado('Se ha alcanzado el maximo de socios') else: return True
class NegocioSocio(object): MIN_CARACTERES = 3 MAX_CARACTERES = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar(id_socio) def buscar_dni(self, dni_socio): """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar_dni(dni_socio) def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ return self.datos.todos() def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ try: self.regla_1(socio) except DniRepetido as e: print(e.args) return False try: self.regla_2(socio) except LongitudInvalida as e: print(e.args) return False try: self.regla_3() except MaximoAlcanzado as e: print(e.args) return False soc = self.datos.alta(socio) if soc is not None: return True else: return False def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ return self.datos.baja(id_socio) def modificacion(self, socio): """ Modifica un socio. Se debe validar la regla 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True si la modificacion fue exitosa. :type socio: Socio :rtype: bool """ try: self.regla_2(socio) except LongitudInvalida as e: print(e.args) return False self.datos.modificacion(socio) return True def regla_1(self, socio): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ soc = self.datos.buscar_dni(socio.dni) if soc is not None: raise DniRepetido('DNI repetido') return False else: return True def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ if (len(socio.nombre) > self.MAX_CARACTERES or len(socio.nombre) < self.MIN_CARACTERES or len(socio.apellido) > self.MAX_CARACTERES or len(socio.apellido) < self.MIN_CARACTERES): raise LongitudInvalida('Longitud inválida') return False else: return True def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ cant = len(self.datos.todos()) if cant >= self.MAX_SOCIOS: raise MaximoAlcanzado('Máximo alcanzado') return False else: return True
class NegocioSocio(object): MIN_CARACTERES_ABIERTO = 3 MAX_CARACTERES_ABIERTO = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar(id_socio) def buscar_dni(self, dni_socio): """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar_dni(dni_socio) def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ return self.datos.todos() def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ try: if self.regla_1(socio) and self.regla_2(socio) and self.regla_3(): self.datos.alta(socio) return True except Exception as ex: raise ex def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ return self.datos.baja(id_socio) def modificacion(self, socio): """ Modifica un socio. Se deben validar las reglas 1 y 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True si la modificacion fue exitosa. :type socio: Socio :rtype: bool """ try: if self.regla_1(socio) and self.regla_2(socio): self.datos.modificacion(socio) return True except Exception as ex: raise ex def regla_1(self, socio): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ enc = self.buscar_dni(socio.dni) if enc is None or enc.id == socio.id: return True raise DniRepetido() def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ errores = [] if not self.MIN_CARACTERES_ABIERTO < len( socio.nombre) < self.MAX_CARACTERES_ABIERTO: errores.append(('nombre', (self.MIN_CARACTERES_ABIERTO + 1, self.MAX_CARACTERES_ABIERTO - 1))) if not self.MIN_CARACTERES_ABIERTO < len( socio.apellido) < self.MAX_CARACTERES_ABIERTO: errores.append(('apellido', (self.MIN_CARACTERES_ABIERTO + 1, self.MAX_CARACTERES_ABIERTO - 1))) if len(errores) == 0: return True else: raise LongitudInvalida(errores) def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ if len(self.datos.todos()) < self.MAX_SOCIOS: return True raise MaximoAlcanzado(self.MAX_SOCIOS) def validar_todo(self, socio): """ Validar las 3 reglas de negocio Si no validan, levanta la excepcion correspondiente. Devuelve True si las validaciones son exitosas. :type socio: Socio :rtype: bool """ errores = [] for r in zip((self.regla_1, self.regla_2, self.regla_3), (socio, socio, None)): try: regla, arg = r if arg is not None: regla(arg) else: regla() except Exception as ex: errores.append(ex) if len(errores) > 0: raise Exception(*errores) return True
class NegocioSocio(object): MIN_CARACTERES = 3 MAX_CARACTERES = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ try: socio = self.datos.buscar(id_socio) return (socio) except Exception as e: return None def buscar_dni(self, dni_socio): try: socio = self.datos.buscarDni(dni_socio) return socio except Exception as e: return None """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ socios = self.datos.todos() return socios def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ self.regla_1(socio) self.regla_2(socio) self.regla_3() validacion = self.datos.alta(socio) if (validacion == False): return False else: return True def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ try: return self.datos.baja(id_socio) except Exception as e: raise e def modificacion(self, socio): """ Modifica un socio. Se debe validar la regla 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True si la modificacion fue exitosa. :type socio: Socio :rtype: bool """ try: self.regla_2(socio) validacion = self.datos.modificacion(socio) if (validacion): return True else: return False except Exception as e: raise e def regla_1(self, socio): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ if (self.buscar_dni(socio.dni)): raise DniRepetido("Ya existe un Socio con el mismo DNI.") else: return True def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ if (len(socio.nombre) > self.MIN_CARACTERES & len(socio.nombre) < self.MAX_CARACTERES): if (len(socio.apellido) > self.MIN_CARACTERES & len(socio.apellido) < self.MAX_CARACTERES): return True else: raise LongitudInvalida('Longitud Invalida: campo "Apellido"') else: raise LongitudInvalida('Longitud Invalida: campo "Nombre"') def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ socios = self.todos() if (len(socios) < self.MAX_SOCIOS): return True else: raise MaximoAlcanzado('Cantidad máxima de socios alcanzada.')
class NegocioSocio(object): MIN_CARACTERES = 3 MAX_CARACTERES = 15 MAX_SOCIOS = 200 def __init__(self): self.datos = DatosSocio() def buscar(self, id_socio): """ Devuelve la instancia del socio, dado su id. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar(id_socio) def buscar_dni(self, dni_socio): """ Devuelve la instancia del socio, dado su dni. Devuelve None si no encuentra nada. :rtype: Socio """ return self.datos.buscar_dni(dni_socio) def todos(self): """ Devuelve listado de todos los socios. :rtype: list """ return self.datos.todos() def alta(self, socio): """ Da de alta un socio. Se deben validar las 3 reglas de negocio primero. Si no validan, levantar la excepcion correspondiente. Devuelve True si el alta fue exitoso. :type socio: Socio :rtype: bool """ try: if self.regla_1(socio) and self.regla_2(socio) and self.regla_3(): self.datos.alta(socio) return True except Exception as ex: raise ex def baja(self, id_socio): """ Borra el socio especificado por el id. Devuelve True si el borrado fue exitoso. :rtype: bool """ return self.datos.baja(id_socio) def modificacion(self, socio): """ Modifica un socio. Se debe validar la regla 2 primero. Si no valida, levantar la excepcion correspondiente. Devuelve True spassi la modificacion fue exitosa. :type socio: Socio :rtype: bool """ try: if self.regla_2(socio): modificoSocio = self.datos.modificacion(socio) if modificoSocio: return True else: return False except Exception as ex: raise ex def regla_1(self, socio): """ Validar que el DNI del socio es unico (que ya no este usado). :type socio: Socio :raise: DniRepetido :return: bool """ s = self.datos.buscar_dni(socio.dni) if not s: return True raise DniRepetido('El DNI no se puede repetir.') def regla_2(self, socio): """ Validar que el nombre y el apellido del socio cuenten con mas de 3 caracteres pero menos de 15. :type socio: Socio :raise: LongitudInvalida :return: bool """ if self.MIN_CARACTERES > len(socio.nombre) or len( socio.nombre) > self.MAX_CARACTERES: raise LongitudInvalida( "El nombre no coincide con los parametros de Longitud previstos" ) if self.MIN_CARACTERES > len(socio.apellido) and len( socio.apellido) > self.MAX_CARACTERES: raise LongitudInvalida( "El apellido no coincide con los parametros de Longitud previstos" ) return True def regla_3(self): """ Validar que no se esta excediendo la cantidad maxima de socios. :raise: MaximoAlcanzado :return: bool """ if len(self.datos.todos()) < self.MAX_SOCIOS: return True raise MaximoAlcanzado("Se ha alcanzado la cantidad maxima de socios.")