Example #1
0
def hoy():
    # 1
    if datos.leerArchivo(ARCHIVO_DIA):
        diaHoy = datos.leerArchivo(ARCHIVO_DIA)['dia'][0]['hoy']  # 1.1
        return diaHoy  # 1.2
    # 2
    else:
        diaPorDefecto = {
            'hoy': DIA_INICIAL,  # 2.1
        }
        datos.guardarEnArchivo(ARCHIVO_DIA, diaPorDefecto)  # 2.2
        diaHoy = datos.leerArchivo(ARCHIVO_DIA)['dia'][0]['hoy']  # 2.3
        return diaHoy  # 2.4
Example #2
0
def __anadirCohete():
    # 1
    print('Has seleccionado añadir un cohete de un modelo nuevo')
    idTipo = input('¿Cual es el nombre (identificador) del modelo?: ')
    
    while len(idTipo) < 3:  # 1.1
        input('La palabra debe tener por lo menos 3 caracteres: ')

    # 2
    if datos.leerArchivo(ARCHIVO_COHETES):      # 2.1
        listaCohetes = listarLosCohetes()       # 2.2
        for cohete in listaCohetes:             # 2.3
            if idTipo == cohete['idTipo']:
                print(
                    'Ya existe un tipo de cohete con esa identificacion',
                    'por lo que no se han agregado datos',
                sep='\n')
                return  # 2.3.1
    # 3
    cargaUtil = int(input('¿Cual es la carga util de este tipo de cohete? (en Kg): '))
    # 4
    while cargaUtil < 0:
        print('Ese numero es negativo y... llevar carga negativa es dificil')
        cargaUtil = int(input('Escribe de nuevo la carga util, por favor: '))
    # 5
    nuevoCohete = {
        'idTipo': idTipo,
        'cargaUtil': cargaUtil,
        'cantidad': 1,  # 5.1
    }
    # 6
    datos.guardarEnArchivo(ARCHIVO_COHETES, nuevoCohete)
    print('')
Example #3
0
def __actualizarDia(diaNuevo):
    # 1
    dicDiaAnterior = datos.leerArchivo(ARCHIVO_DIA)['dia'][0]
    datos.eliminarDeArchivo(ARCHIVO_DIA, dicDiaAnterior)
    # 2
    dicDiaNuevo = {'hoy': diaNuevo}
    datos.guardarEnArchivo(ARCHIVO_DIA, dicDiaNuevo)
Example #4
0
def __anadirPeticion():
    # 1
    print('Has seleccionado realizar una nueva peticion.')
    idPeticion = input('Ingresa el identificador unico de tu peticion: ')

    while len(idPeticion) < 3:  # 1.1
        idPeticion = input('La palabra debe tener por lo menos 3 caracteres: ')

    # 2
    if datos.leerArchivo(ARCHIVO_PETICIONES):  # 2.1
        listaPeticiones = listarLasPeticiones()  # 2.2
        for peticion in listaPeticiones:  # 2.3
            if idPeticion == peticion['idPeticion']:
                print('Ya existe una peticion con esa identificacion',
                      'por lo que no se han agregado datos',
                      sep='\n')
                return  # 2.3.1

    # 3
    descripcion = input('Escribe la descripcion de la peticion: ')

    # 4
    peso = float(input('Introduce el peso en Kg (hasta 3 decimales): '))

    # 5
    while peso < 0:
        print('Ese numero es negativo y... llevar carga negativa es dificil')
        peso = float(input('Escribe de nuevo el peso, por favor: '))

    # 6
    peso = round(peso, 3)
    # 7
    maxDias = int(
        input('Escribe el numero maximo de dias que debe tardar en llegar: '))

    # 8
    while peso < 0:
        print('Ese numero es negativo y... ¿dias negativos?')
        peso = float(input('Escribe de nuevo los dias, por favor: '))

    # 9
    nuevaPeticion = {
        'idPeticion': idPeticion,
        'descripcion': descripcion,
        'peso': peso,
        'maxDias': maxDias,
        'diaPeticion': dias.hoy(),
        'lanzamientoAsignado': 'sin asignar',
    }
    # 10
    datos.guardarEnArchivo(ARCHIVO_PETICIONES, nuevaPeticion)
    print('')
Example #5
0
def mostrarPeticiones():
    # 1
    if not datos.leerArchivo(ARCHIVO_PETICIONES):
        print('Todavia no hay peticiones registradas')
        return
    # 2
    listaPeticiones = listarLasPeticiones()
    listaPeticiones = datos.ordenarLista(listaPeticiones, 'idPeticion')
    for peticion in listaPeticiones:
        print(peticion['idPeticion'], peticion['descripcion'], 'peso',
              peticion['peso'], 'Kg', 'maxDias', peticion['maxDias'])

    print('')
Example #6
0
def __menuCohetes():
    # 1
    print(
        'Has seleccionado la opcion de añadir cohetes.',
        'Selecciona el modelo de cohete que deseas añadir:',
        '1. Nuevo tipo de cohete',
    sep='\n')
    # 2
    if not datos.leerArchivo(ARCHIVO_COHETES):
        datos.crearArchivo(ARCHIVO_COHETES)
    # 3
    dicOpciones = mostrarCohetes()
    # 4
    __usarEleccion(dicOpciones)
Example #7
0
def mostrarInfoCohetes():
    # 1
    if not datos.leerArchivo(cohetes.ARCHIVO_COHETES):
        print('No hay cohetes registrados')
        return

    # 2
    print('En el hangar quedan estos cohetes sin asignar lanzamiento:')
    listaCohetes = cohetes.listarLosCohetes()

    for cohete in listaCohetes:
        print(
            cohete['idTipo'],
            'Carga util:',
            cohete['cargaUtil'],
            'Kg',
            'Cantidad:',
            cohete['cantidad'],
        )
Example #8
0
def mostrarInfoPeticiones():
    # 1
    if not datos.leerArchivo(peticiones.ARCHIVO_PETICIONES):
        print('No hay peticiones registradas')
        return

    # 2
    listaPeticiones = peticiones.listarLasPeticiones()
    
    for peticion in listaPeticiones:
        print(
            peticion['idPeticion'],
            peticion['descripcion'],
            'Peso:',
            peticion['peso'],
            'Kg',
            'Dia Limite: dia',
            peticion['maxDias'] + peticion['diaPeticion'],
            'Lanzamiento Asignado:',
            peticion['lanzamientoAsignado']
        )
Example #9
0
def mostrarEstadoLanzamientos():
    # 1
    if not datos.leerArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS):
        print('No hay lanzamientos registrados')
        return

    # 2
    listaLanzamientos = lanzamientos.listarLosLanzamientos()

    for lanzamiento in listaLanzamientos:
        # 2.1
        if lanzamiento['diaLanzamiento'] == 'sin asignar':
            print(
                lanzamiento['idLanzamiento'],
                'sin dia de lanzamiento asignado'
            )
        # 2.2
        else:
            diaSale = lanzamiento['diaLanzamiento']
            diaLlega = lanzamiento['diasTarda'] + diaSale

            if dias.hoy() < diaSale:
                print(
                    lanzamiento['idLanzamiento'],
                    'preparando motores',
                )
                print(
                    'Despegara dia',
                    diaSale,
                    'y llegara dia',
                    diaLlega
                )
            elif dias.hoy() == diaSale:
                print(
                    lanzamiento['idLanzamiento'],
                    'despega hoy mismo',
                )
                print(
                    'Llegara dia',
                    diaLlega
                )
            elif dias.hoy() > diaSale and dias.hoy() < diaLlega:
                print(
                    lanzamiento['idLanzamiento'],
                    'en ruta a la estacion',
                )
                print(
                    'Despego dia',
                    diaSale,
                    'y llegara dia',
                    diaLlega
                )
            elif dias.hoy() == diaLlega:
                print(
                    lanzamiento['idLanzamiento'],
                    'ha llegado hoy mismo',
                )
                print(
                    'Despego dia',
                    diaSale,
                )
            elif dias.hoy() > diaLlega:
                print(
                    lanzamiento['idLanzamiento'],
                    'ya esta en la estacion',
                )
                print(
                    'Despego dia',
                    diaSale,
                    'y llego dia',
                    diaLlega
                )
Example #10
0
def listarLosCohetes():
    # 1
    return datos.leerArchivo(ARCHIVO_COHETES)['cohetes']
Example #11
0
def listarLasPeticiones():
    # 1
    return datos.leerArchivo(ARCHIVO_PETICIONES)['peticiones']
Example #12
0
def __asignar(diasParaLanzamiento = 0):
    # 1
    if not datos.leerArchivo(peticiones.ARCHIVO_PETICIONES):
        print('No hay peticiones registradas')
        return
    
    if not datos.leerArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS):
        print('No hay lanzamientos registrados')
        return

    listaPeticiones = peticiones.listarLasPeticiones()
    listaLanzamientos = lanzamientos.listarLosLanzamientos()

    # 2
    diaDeLanzamiento = dias.hoy() + diasParaLanzamiento

    for lanzamiento in listaLanzamientos:
        
        if lanzamiento['diaLanzamiento'] == 'sin asignar':  # 2.1
            datos.eliminarDeArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS, lanzamiento)
            lanzamiento['diaLanzamiento'] = diaDeLanzamiento
            datos.guardarEnArchivo(lanzamientos.ARCHIVO_LANZAMIENTOS, lanzamiento)

        diaQueLlega = lanzamiento['diaLanzamiento'] + lanzamiento['diasTarda']
        lanzamiento['diaQueLlega'] = diaQueLlega                # 2.2

    # 4
    for peticion in listaPeticiones:
        diaQueDebeLlegar = peticion['maxDias'] + peticion['diaPeticion']
        peticion['diaQueDebeLlegar'] = diaQueDebeLlegar         # 4.1

    # 5
    listaPeticiones = datos.ordenarLista(listaPeticiones, 'diaQueDebeLlegar')
    listaLanzamientos = datos.ordenarLista(listaLanzamientos, 'diaQueLlega')
    
    # 6
    for lanzamiento in listaLanzamientos:
        # 6.0
        if lanzamiento['diaLanzamiento'] < dias.hoy():
            continue
        # 6.1
        lanzamiento['cargaQueCabe'] = __hallarCargaQueCabe(lanzamiento)
        diaQueLlega = lanzamiento['diaQueLlega']
        # 6.2
        for peticion in listaPeticiones:
            # 6.2.1
            if peticion['lanzamientoAsignado'] == 'sin asignar':
                # 6.2.2
                if peticion['diaQueDebeLlegar'] >= diaQueLlega:

                    lanzamiento['cargaQueCabe'] -= peticion['peso'] # 6.2.3

                    if lanzamiento['cargaQueCabe'] < 0: # 6.2.4
                        lanzamiento['cargaQueCabe'] += peticion['peso']

                    else:   # 6.2.5
                        peticion.pop('diaQueDebeLlegar')
                        datos.eliminarDeArchivo(peticiones.ARCHIVO_PETICIONES, peticion)
                        peticion['lanzamientoAsignado'] = lanzamiento['idLanzamiento']
                        datos.guardarEnArchivo(peticiones.ARCHIVO_PETICIONES, peticion)
                        print(
                            peticion['idPeticion'],
                            'ha sido asignada en',
                            lanzamiento['idLanzamiento'],
                            '\n Llegara en ',
                            diaQueLlega - dias.hoy(),
                            'dias',
                        )

    # 7
    haySinAsignar = False

    for peticion in listaPeticiones:

        if peticion['lanzamientoAsignado'] == 'sin asignar':
            haySinAsignar = True
            # 7.1
            if peticion['diaQueDebeLlegar'] < dias.hoy():
                print(
                    'La peticion',
                    peticion['idPeticion'],
                    'ha caducado porque ya tendria que haber llegado...',
                    '\n El dia maximo para llegar era dia',
                    peticion['diaQueDebeLlegar'],
                )
            else:
                print(
                    'Ha sido imposible asignar la peticion',
                    peticion['idPeticion'],
                    'o no cabe o no llegaria a tiempo',
                )

    if not haySinAsignar:
        print('No hay peticiones sin lanzamiento asignado')
    
    print('')