Proyecto gestor de clientes para practicar de todo en Python

Añadiendo clientes (1)

Para añadir usuarios necesitaremos validar los tres campos del cliente:

  • nombre: Mínimo de 2 caracteres y máximo de 30.
  • apellidos: Mínimo de 2 caracteres y máximo de 30.
  • dni: Debe tener 3 caracteres (es una prueba), dos números y una mayúscula al final.

Creo que sería una buena idea ayudarnos de una función auxiliar que se encargue de leer los valores por teclado y comprobar que tengan la longitud mínima y máxima que nosotros les indiquemos:

gestor/helpers.py

def input_text(min_length, max_length):
    while True:
        text = input("> ")
        if len(text) >= min_length and len(text) <= max_length:
            return text

Además también tenemos que validar el dni, un campo especial que debe tener un patrón de dos números y una mayúsculas y no se puede repetir. Para crear el patrón podemos usar una sencilla expresión regular y testear algunos ejemplos de prueba en la documentación haciendo unos doctests:

gestor/manager.py

def is_valid(dni):
    """
    >>> is_valid('48H')  # No válido, en uso
    False
    >>> is_valid('X82')  # No válido, incorrecto
    False
    >>> is_valid('21A')  # Válido
    True
    """

    # Comprueba que el dni empieza con un patrón
    if not re.match('[0-9]{2}[A-Z]', dni):
        return False

    # Comprueba que el dni no esté repetido
    for client in clients:
        if client['dni'] == dni:
            return False

    return True


if __name__ == "__main__":
    import doctest
    doctest.testmod()

Podemos ejecutar las pruebas ejecutando el script con el argumento -v:

python manage.py -v

Ya lo tenemos todo listo, en la siguiente sección crearemos la función para añadir el nuevo cliente.