예제 #1
0
파일: dbapi.py 프로젝트: 3ll34ndr0/10cur4
 def remove(self,participants=None,initHour=None):
     """
     Method to remove participants, OR erase all information for a given initHour
     """
     #Me parece un bug que initHour no checkee por None
     if (participants or initHour) is None:
        return
     objetoHorario = Horario(self.name, self.initHour,self.endHour,self.quota,self.participants)
     if (participants is not None and initHour is not None):
         return
         print("You can not use this method this way. You can delete either participants of the current initHour OR all information of a given initHour, not both.")
     if participants is not None:
         objetoHorario.removeParticipant(self.initHour,participants)
         # Write to database
         self.writeDatabase(objetoHorario)
         # Update object with database values
         self.__init__(self.database,self.activity,self.initHour)
     if initHour is not None: # 'Erase' all information from activity at initHour
         objetoHorario = Horario(self.name,self.initHour,'')
         description=''
         vCalendar  =''
         # Write to database
         self.writeDatabase(objetoHorario,description=description,vCalendar=vCalendar)
         # Update object with database values
         self.__init__(self.database,self.activity,self.initHour)
예제 #2
0
def index():
    aulas = Aulas()
    lista_aulas = aulas.leer_registros()
    horario = Horario()
    lista_horario = horario.leer_registros()
    return render_template('index.html',
                           lista_aulas=lista_aulas,
                           lista_horario=lista_horario)
예제 #3
0
def obtener_reserva(id):
    aulas = Aulas()
    lista_aulas = aulas.leer_registros()
    horario = Horario()
    lista_horario = horario.leer_registros()
    reserva = Reserva(id, 0, 0, 0, 0, 0, 0, 0)
    datos_reserva = reserva.seleciona_reserva()
    fecha = datetime.strftime(datos_reserva[0][2], "%d/%m/%Y")
    return render_template('edita_reserva.html',
                           fecha=fecha,
                           reserva=datos_reserva[0],
                           lista_aulas=lista_aulas,
                           lista_horario=lista_horario)
예제 #4
0
def main():
    # Lista Pre-Pronta de socios
    # socios = input('Socios separados por ", ": ').split(', ')
    socios = ['pedro', 'afonso', 'João']
    sociosList = []
    codigo = 0
    salario = 999
    for i in socios:
        codigo += 1
        salario += 1
        sociosList.append(Socio(codigo, i, salario, 25))

    salas = Salas()
    salas.reserva(0, Horario('2:00', 14, 4, 2000), sociosList[0].nome)
    salas.reserva(1, Horario('3:00', 14, 4, 2000), sociosList[0].nome)
    salas.getAllReservas()
    salas.removerAllReservaSocio(sociosList[0].nome)
    salas.getAllReservas()

    salas.reserva(0, Horario('2:00', 14, 4, 2000), sociosList[0].nome)
    salas.reserva(1, Horario('3:00', 14, 4, 2000), sociosList[0].nome)
    salas.getAllReservasSocioDia(sociosList[0].nome, Horario('3:00', 14, 4, 2000))
    salas.trocarNomeSocio(1, Horario('3:00', 14, 4, 2000), sociosList[0].nome)
    salas.getAllReservas()

    salas.trocarHorario(0, Horario('2:00', 14, 4, 2000), Horario("15:00", 30, 2, 2077))
    salas.getAllReservas()
예제 #5
0
파일: dbapi.py 프로젝트: 3ll34ndr0/10cur4
 def loadReg(self):
   """Method that creates an Horario object from current activity and database data"""
   areg = getActivityRegister(self.database,self.activity)
   horarios = json.loads(getActivityRegister(self.database,self.activity)[1])
   h = horarios['horarios']
   # Get all keys from 'horarios'
   keys = list(h.keys())
   # Get the first key and create the object
   key = keys.pop()
   objetoHorario = Horario(self.activity, key, h[key][0], h[key][1], h[key][2])
   # Next, get all other keys and populate the object with data from ddbb
   while len(keys)>0:
      key = keys.pop()
      objetoHorario.addAppointment(key,h[key][0], h[key][1], h[key][2])
   return objetoHorario
예제 #6
0
파일: dbapi.py 프로젝트: 3ll34ndr0/10cur4
 def loadReg(self):
     """Method that creates an Horario object from current activity and database data"""
     areg = getActivityRegister(self.database, self.activity)
     horarios = json.loads(
         getActivityRegister(self.database, self.activity)[1])
     h = horarios['horarios']
     # Get all keys from 'horarios'
     keys = list(h.keys())
     # Get the first key and create the object
     key = keys.pop()
     objetoHorario = Horario(self.activity, key, h[key][0], h[key][1],
                             h[key][2])
     # Next, get all other keys and populate the object with data from ddbb
     while len(keys) > 0:
         key = keys.pop()
         objetoHorario.addAppointment(key, h[key][0], h[key][1], h[key][2])
     return objetoHorario
예제 #7
0
파일: dbapi.py 프로젝트: 3ll34ndr0/10cur4
 def remove(self, participants=None, initHour=None):
     """
     Method to remove participants, OR erase all information for a given initHour
     """
     #Me parece un bug que initHour no checkee por None
     if (participants or initHour) is None:
         return
     objetoHorario = Horario(self.name, self.initHour, self.endHour,
                             self.quota, self.participants)
     if (participants is not None and initHour is not None):
         return
         print(
             "You can not use this method this way. You can delete either participants of the current initHour OR all information of a given initHour, not both."
         )
     if participants is not None:
         objetoHorario.removeParticipant(self.initHour, participants)
         # Write to database
         self.writeDatabase(objetoHorario)
         # Update object with database values
         self.__init__(self.database, self.activity, self.initHour)
     if initHour is not None:  # 'Erase' all information from activity at initHour
         objetoHorario = Horario(self.name, self.initHour, '')
         description = ''
         vCalendar = ''
         # Write to database
         self.writeDatabase(objetoHorario,
                            description=description,
                            vCalendar=vCalendar)
         # Update object with database values
         self.__init__(self.database, self.activity, self.initHour)
예제 #8
0
def modifica_reserva(id):
    aulas = Aulas()
    lista_aulas = aulas.leer_registros()
    horario = Horario()
    lista_horario = horario.leer_registros()
    if request.method == 'POST':
        aula = request.form['aula']
        print(aula)
        reserva = Reserva(id, request.form['aula'], request.form['fecha'],
                          request.form['actividad'], request.form['horario'],
                          request.form['profesional'],
                          request.form['observaciones'], request.form['email'])
        reserva.modifica_reserva()
        del reserva
        flash('Reserva Actualizada')
        reserva = Reserva(id, 0, 0, 0, 0, 0, 0, 0)
        datos_reserva = reserva.seleciona_reserva()
        fecha = datetime.strftime(datos_reserva[0][2], "%d/%m/%Y")
        return render_template('edita_reserva.html',
                               fecha=fecha,
                               reserva=datos_reserva[0],
                               lista_aulas=lista_aulas,
                               lista_horario=lista_horario)
예제 #9
0
파일: dbapi.py 프로젝트: 3ll34ndr0/10cur4
def createActivityRegister(database,
                           activity,
                           initHour=None,
                           endHour=None,
                           quota='1',
                           description=None,
                           vCalendar=None):
    """
    Creo una entrada en la tabla con 'activity' y un horario.
    En cada tabla de actividad puedo agregar mas de un horario, por ejemplo: 
    lunes 18:30, lunes 20:30, martes 9:00, miercoles 13:00
    quota: Cantidad maxima de participantes permitida por horario (a las 13hs pueden
    8 pero a las 16hs pueden ser 20)
    TODO: Pasar los dias de la semana a minusculas siempre. Asegurar
    formato am/pm y/o formato 24hs para pm. Probablemente
    eso es en una capa superior. 
    """
    # Construyo el objeto tipo Horario:
    objetoHorario = Horario(activity, initHour, endHour, quota)
    #print(objetoHorario.__dict__)
    horarios = json.dumps(objetoHorario, default=jdefault)
    try:
        db = sqlite3.connect(database)
        cursor = db.cursor()
        cursor.execute(
            '''INSERT INTO activityCalendar(act, horarios, quota, description, vCalendar)
         VALUES(?,?,?,?,?)''',
            (activity, horarios, quota, description, vCalendar))
        print("DEBUG: Register %s, %s, %s, %s , %s added" %
              (activity, horarios, quota, description, vCalendar))
        db.commit()
    except sqlite3.IntegrityError as e:
        db.rollback()
        print("Existing record...")
        print(
            e
        )  # Son necesarios los raise?, por las dudas lo saque para que no falle.
    except sqlite3.OperationalError as e:
        db.rollback()
        print("DEBUG: Diferenciar el tipo de error")
        raise e
    finally:
        cursor.close()
예제 #10
0
        self.__precio = Boleto.calcular_precio(destino, aerolinea, avion)
        Boleto.__numero_de_boleto += 1

    def ticket(self):  #Genera un ticket
        x = ''
        x += f'*** {self.__aerolinea} ***\n'
        x += f'Boleto #{self.__ID}\n'
        x += f'Destino: {self.__destino}\n'
        x += f'Clase: {self.__avion}\n'
        x += f'Hora de salida: {self.__salida}\n'
        x += f'Precio del boleto: ${self.__precio}\n'
        return x


##PRUEBAS##
h1 = Horario("12:30 PM")  #crea un horario
h2 = Horario("13:00 PM")  #crea un horario
h3 = Horario("06:00 AM")  #crea un horario
h4 = Horario("10:00 AM")  #crea un horario
d1 = Destino("Hawaii", 1500)  #crea un destino con costo base
d2 = Destino("Canada", 100)  #crea un destino con costo base
d3 = Destino("China", 10000)  #crea un destino con costo base
d4 = Destino("Oaxaca", 99999)  #crea un destino con costo base
d1.añadir_horario(h1)  #añade un horario al desitno
d1.añadir_horario(h3)  #añade un horario al desitno
d1.añadir_horario(h2)  #añade un horario al destino
d2.añadir_horario(h1)  #añade un horario al destino
d2.añadir_horario(h2)  #añade un horario al destino
d2.añadir_horario(h3)  #añade un horario al destino
d2.añadir_horario(h4)  #añade un horario al destino
d3.añadir_horario(h4)  #añade un horario al destino
예제 #11
0
 def AgregarHorario(self, dia, hora):
     H = Horario()
     H.dia = dia
     H.hora = hora
     self.lista_horarios.append(H)
예제 #12
0
 def start(self):
     #Crea tus objetos aqui
     h1 = Horario("12:30 PM")  #crea un horario
     h2 = Horario("13:00 PM")  #crea un horario
     h3 = Horario("06:00 AM")  #crea un horario
     h4 = Horario("10:00 AM")  #crea un horario
     d1 = Destino("Hawaii", 1500)  #crea un destino con costo base
     d2 = Destino("Canada", 100)  #crea un destino con costo base
     d3 = Destino("China", 10000)  #crea un destino con costo base
     d4 = Destino("Oaxaca", 99999)  #crea un destino con costo base
     d1.añadir_horario(h1)  #añade un horario al desitno
     d1.añadir_horario(h3)  #añade un horario al desitno
     d1.añadir_horario(h2)  #añade un horario al destino
     d2.añadir_horario(h1)  #añade un horario al destino
     d2.añadir_horario(h2)  #añade un horario al destino
     d2.añadir_horario(h3)  #añade un horario al destino
     d2.añadir_horario(h4)  #añade un horario al destino
     d3.añadir_horario(h4)  #añade un horario al destino
     d4.añadir_horario(h1)  #añade un horario al destino
     t1 = Terminal()  #crea una terminal
     t2 = Terminal()  #crea una terminal
     a1 = Avion("BOEING", 1, 1500,
                "Primera clase")  #registra un nuevo avion
     a2 = Avion("AJ1800", 200, 100,
                "Clase turista")  #registra un nuevo avion
     a3 = Avion("AKKAD0", 200, 100,
                "Primera Clase")  #registra un nuevo avion
     a4 = Avion("MDP123", 150, 100,
                "Clase turista")  #registra un nuevo avion
     a5 = Avion("009OLO", 100, 100,
                "Clase turista")  #registra un nuevo avion
     aerolinea = Aerolinea("Aeromexico", t1)  #genera una neuva aerolinea
     aerolinea2 = Aerolinea("VivaAerobus", t2)  #genera una nueva aerolinea
     aerolinea3 = Aerolinea("MexicoVuela", t2)  #genera una nueva aerolinea
     aerolinea4 = Aerolinea("AeroNautica", t2)  #genera una nueva aerolinea
     aerolinea.añadir_destino(d1)  #añade un destino a la aerolinea
     aerolinea.añadir_destino(d2)  #añade un destino a la aerolinea
     aerolinea2.añadir_destino(d2)  #añade un destino a la aerolinea
     aerolinea3.añadir_destino(d1)  #añade un destino a la aerolinea
     aerolinea3.añadir_destino(d4)  #añade un destino a la aerolinea
     aerolinea3.añadir_destino(d3)  #añade un destino a la aerolinea
     aerolinea3.añadir_destino(d2)  #añade un destino a la aerolinea
     aerolinea4.añadir_destino(d2)  #añade un destino a la aerolinea
     aerolinea.añadir_tipo_avion(a1)  #añade un tipo de avion a la aerolinea
     aerolinea3.añadir_tipo_avion(
         a1)  #añade un tipo de avion a la aerolinea
     aerolinea3.añadir_tipo_avion(
         a2)  #añade un tipo de avion a la aerolinea
     aerolinea3.añadir_tipo_avion(
         a3)  #añade un tipo de avion a la aerolinea
     aerolinea3.añadir_tipo_avion(
         a4)  #añade un tipo de avion a la aerolinea
     aerolinea2.añadir_tipo_avion(
         a2)  #añade un tipo de avion a la aerolinea
     aerolinea.añadir_tipo_avion(a2)  #añade un tipo de avion a la aerolinea
     print(aerolinea.destinos)  #imprimie los destinos de la aerolinea
     print(aerolinea2.destinos)  #imprime los destinos de la aerolinea
     print(aerolinea3.destinos)  #imprime los destinos de la aerolinea
     boleto = Boleto(aerolinea, d1, h1, a1)  #genera un boleto
     print(boleto.ticket())  #imprime el boleto
     boleto2 = Boleto(aerolinea2, d2, h1, a1)  #genera un boleto
     boleto3 = Boleto(aerolinea2, d2, h2, a1)  #genera un boleto
     boleto4 = Boleto(aerolinea, d1, h1, a2)  #genera un boleto
     boleto5 = Boleto(aerolinea3, d4, h3, a4)  #genera un boleto
     print(boleto2.ticket())  #imprime el boleto
     print(boleto3.ticket())  #imprime el boleto
     print(boleto4.ticket())  #imprime el boleto
     print(boleto5.ticket())  #imprime el boleto
예제 #13
0
파일: dbapi.py 프로젝트: 3ll34ndr0/10cur4
def modifyActivityRegister(
		database,
		activity,
		initHour,
		endHour=None,
		quota='1',
		participants=None,
		description=None,
		vCalendar=None):
    """
	Modifico algun valor de la tabla
	Horarios, cantidad maxima de participantes (quota)
	TODO: Chequear la integridad (formato) de los datos antes de guardar.
	horarios: "{'Dia':'(HoraComienzo,HoraFin,participants,quota),(HoraComienzo2,HoraFin2,participants,quota2),...)'}"
	horarios incluye la cantidad maxima de participantes  y lista de inscriptos (telefonos)
	Dia, HoraComienzo, horaFin, quota: Are UTF-8 strings
	participants is a set, including telephoneNumber's participants
	Dia: lunes|martes|... en minusculas.
	Hora: HH:MM
    """
    # Primero tengo que obtener de la base de datos, lo que haya
    activityRegister = getActivityRegister(database, activity)
    if activityRegister[0] == activity:
        # Luego transformalo en un objeto clase Horario
        horarios = json.loads(activityRegister[1])
        h = horarios['horarios']
        for key in h.keys():
            objetoHorario = Horario(activity, key, h[key][0], h[key][1], h[key][2])
            #print("dentro el for")
            #print(h[key][2])
            #print(objetoHorario.horarios[key][2])
            # Recupero los valores para no pisarlos despues (solo el que modifica)
            if initHour == key:
                participantsReg = objetoHorario.horarios[key][2]
                #print("aca")
                #print objetoHorario.horarios
                #print(participantsReg)
                if participants is not None:
                    #print("New participants, but recovering old ones: {}".format(participantsReg))
                    ##print(participantsReg)
                    participantsReg.update(participants)
            if endHour     == None:
                endHour = objetoHorario.horarios[key][0]
            if quota       == '1':
                quota = objetoHorario.horarios[key][1]
        else:
            print("Appointment {key} is not going to be modified".format(key))
        #print("{}, {}, {}, {}".format(key, h[key][0],h[key][1],participantsReg))

        # Ya tengo el objeto, ahora puedo actualizarlo:
        objetoHorario.addAppointment(initHour,endHour,quota, participantsReg)
        horariosJSON  = json.dumps(objetoHorario, default=jdefault)
        #print(horariosJSON)
    else:
        return "Message: Not such activity defined"
    try:
        db = sqlite3.connect(database)
        cursor = db.cursor()
        # Aca va un update only horario column.
        cursor.execute(
        '''UPDATE activityCalendar SET horarios = ? WHERE act = ? ''', (horariosJSON, activity))
        message = "Message: {}, ".format(horariosJSON)
        if description is not None:
            cursor.execute(
            '''UPDATE activityCalendar SET description = ? WHERE act = ? ''', (description, activity))
            message += "{}, ".format(description)
        if vCalendar is not None:
            cursor.execute(
            '''UPDATE activityCalendar SET vCalendar = ? WHERE act = ? ''', (vCalendar, activity))
            message += "{}, ".format(vCalendar) 
        message += "added to {}".format(activity) 
        db.commit()
    except sqlite3.IntegrityError as e:
        db.rollback()
        raise e
    except sqlite3.OperationalError as e:
        db.rollback()
        raise e
    finally:
        cursor.close()
    return message
예제 #14
0
파일: dbapi.py 프로젝트: 3ll34ndr0/10cur4
def modifyActivityRegister(database,
                           activity,
                           initHour,
                           endHour=None,
                           quota='1',
                           participants=None,
                           description=None,
                           vCalendar=None):
    """
	Modifico algun valor de la tabla
	Horarios, cantidad maxima de participantes (quota)
	TODO: Chequear la integridad (formato) de los datos antes de guardar.
	horarios: "{'Dia':'(HoraComienzo,HoraFin,participants,quota),(HoraComienzo2,HoraFin2,participants,quota2),...)'}"
	horarios incluye la cantidad maxima de participantes  y lista de inscriptos (telefonos)
	Dia, HoraComienzo, horaFin, quota: Are UTF-8 strings
	participants is a set, including telephoneNumber's participants
	Dia: lunes|martes|... en minusculas.
	Hora: HH:MM
    """
    # Primero tengo que obtener de la base de datos, lo que haya
    activityRegister = getActivityRegister(database, activity)
    if activityRegister[0] == activity:
        # Luego transformalo en un objeto clase Horario
        horarios = json.loads(activityRegister[1])
        h = horarios['horarios']
        for key in h.keys():
            objetoHorario = Horario(activity, key, h[key][0], h[key][1],
                                    h[key][2])
            #print("dentro el for")
            #print(h[key][2])
            #print(objetoHorario.horarios[key][2])
            # Recupero los valores para no pisarlos despues (solo el que modifica)
            if initHour == key:
                participantsReg = objetoHorario.horarios[key][2]
                #print("aca")
                #print objetoHorario.horarios
                #print(participantsReg)
                if participants is not None:
                    #print("New participants, but recovering old ones: {}".format(participantsReg))
                    ##print(participantsReg)
                    participantsReg.update(participants)
            if endHour == None:
                endHour = objetoHorario.horarios[key][0]
            if quota == '1':
                quota = objetoHorario.horarios[key][1]
        else:
            print("Appointment {key} is not going to be modified".format(key))
        #print("{}, {}, {}, {}".format(key, h[key][0],h[key][1],participantsReg))

        # Ya tengo el objeto, ahora puedo actualizarlo:
        objetoHorario.addAppointment(initHour, endHour, quota, participantsReg)
        horariosJSON = json.dumps(objetoHorario, default=jdefault)
        #print(horariosJSON)
    else:
        return "Message: Not such activity defined"
    try:
        db = sqlite3.connect(database)
        cursor = db.cursor()
        # Aca va un update only horario column.
        cursor.execute(
            '''UPDATE activityCalendar SET horarios = ? WHERE act = ? ''',
            (horariosJSON, activity))
        message = "Message: {}, ".format(horariosJSON)
        if description is not None:
            cursor.execute(
                '''UPDATE activityCalendar SET description = ? WHERE act = ? ''',
                (description, activity))
            message += "{}, ".format(description)
        if vCalendar is not None:
            cursor.execute(
                '''UPDATE activityCalendar SET vCalendar = ? WHERE act = ? ''',
                (vCalendar, activity))
            message += "{}, ".format(vCalendar)
        message += "added to {}".format(activity)
        db.commit()
    except sqlite3.IntegrityError as e:
        db.rollback()
        raise e
    except sqlite3.OperationalError as e:
        db.rollback()
        raise e
    finally:
        cursor.close()
    return message
예제 #15
0
if __name__ == '__main__':

    # atribuições classe Funcionario
    funcionario1 = Socio()  # Utilizei herança da classe funcionário
    funcionario1.nome = "Matheus Silva Da Costa"
    funcionario1.ramal = 5631599

    # atribuições classes Sala1, Sala2, Sala3, Sala4
    sala1 = Sala1(status="Ocupada")
    sala2 = Sala2(status="Ocupada")
    sala3 = Sala3(status="Livre")
    sala4 = Sala4(status="Livre")

    # atribuições classe Horario
    horario = Horario()
    horario.horario = "12:00 as 13:00"
    horario.funcionario = funcionario1  # Object
    horario.sala1 = sala1  # Object
    horario.sala2 = sala2  # Object
    horario.sala3 = sala3  # Object
    horario.sala4 = sala4  # Object

    # atribuição classe Dia
    dia1 = Dia()
    dia1.dia = 1
    dia1.horario = horario  # Object

    # atribuição classe Mês
    mes1 = Mes()
    mes1.mes = "Janeiro"
예제 #16
0
파일: espacio.py 프로젝트: yo-alan/horarios
 def generarpoblacioninicial(self, ):
     """
     Genera individuos desde cero y
     los guarda en el atributo 'poblacion'.
     
     @Parametros:
     None.
     
     @Return:
     None.
     """
     
     from calendario import Calendario
     from horario import Horario
     
     cant_horas = 0
     individuos = []
     
     # Iteramos generando todas las combinaciones de horarios
     # posibles. Y por cada uno creamos un calendario.
     
     # Contamos la cantidad total de horas.
     for coordinador in self.coordinadores:
         cant_horas += coordinador.especialidad.carga_horaria_semanal
     
     # Cantidad de iteraciones por los dias.
     for dia in self.dias_habiles:
         
         # Cantidad de iteraciones por las horas.
         for hora in self.horas:
             
             # Iteracion por cada coordinador.
             for coordinador in self.coordinadores:
                 
                 # Se crea un Calendario.
                 calendario = Calendario.create()
                 # Se le asigna este espacio.
                 calendario.espacio = self
                 # A su vez el Calendario es agregado a la poblacion.
                 individuos.append(calendario)
                 
                 # Se crea un Horario.
                 horario = Horario()
                 # Se le asigna el Coordinador.
                 horario.coordinador = coordinador
                 # Se le asigna una hora desde.
                 horario.hora_desde = hora.hora_desde
                 # Se le asigna una hora hasta.
                 horario.hora_hasta = hora.hora_hasta
                 # Se le asigna un dia de la semana.
                 horario.dia_semana = dia.dia
                 # El Horario es agregado al Calendario.
                 calendario.agregar_horario(horario)
             
             # La cantidad total de horas no fue cubierta, quiere
             # decir que en el calendario deben haber horas libres.
             if len(self.dias_habiles) * len(self.horas) != cant_horas:
                 
                 # Cantidad de iteraciones por los dias.
                 for dia in self.dias_habiles:
                     
                     # Cantidad de iteraciones por las horas.
                     for hora in self.horas:
                         
                         # Se crea un Calendario.
                         calendario = Calendario.create()
                         # Se le asigna este espacio.
                         calendario.espacio = self
                         # A su vez el Calendario es agregado a la poblacion.
                         individuos.append(calendario)
                         
                         # Se crea un Horario.
                         horario = Horario()
                         # Se le asigna una hora desde.
                         horario.hora_desde = hora.hora_desde
                         # Se le asigna una hora hasta.
                         horario.hora_hasta = hora.hora_hasta
                         # Se le asigna un dia de la semana.
                         horario.dia_semana = dia.dia
                         # El Horario es agregado al Calendario.
                         calendario.agregar_horario(horario)
     
     # Rellenamos los calendarios generando Horarios aleatoriamente.
     
     coordinadores_asig_global = []
     
     for coordinador in self.coordinadores.all():
         
         carga_horaria = coordinador.especialidad.carga_horaria_semanal
         
         for i in range(carga_horaria):
             
             coordinadores_asig_global.append(copy.copy(coordinador))
     
     for individuo in individuos:
         
         # Se crea la lista de coordinadores a asignar.
         coordinadores_asig = copy.copy(coordinadores_asig_global)
         
         for coordinador in coordinadores_asig_global:
             
             if coordinador == individuo.horarios[0][0].coordinador:
                 coordinadores_asig.remove(coordinador)
                 break
         
         horas_libres = abs(len(self.dias_habiles) * len(self.horas) - cant_horas)
         
         for i in range(horas_libres):
             
             coordinadores_asig.append(None)
             
         # Iteramos por la cantidad de dias.
         for dia in self.dias_habiles:
             
             # Tambien por la cantidad de horas.
             for hora in self.horas:
                 
                 if len(coordinadores_asig) == 0:
                     break
                 
                 indice = randint(0, len(coordinadores_asig)-1)
                 
                 coordinador = coordinadores_asig[indice]
                 
                 # Se crea un Horario.
                 horario = Horario()
                 # Se le asigna el Coordinador.
                 horario.coordinador = coordinador
                 # Se le asigna una hora desde.
                 horario.hora_desde = hora.hora_desde
                 # Se le asigna una hora hasta.
                 horario.hora_hasta = hora.hora_hasta
                 # Se le asigna un dia de la semana.
                 horario.dia_semana = dia.dia
                 
                 # Comprobamos que el Horario generado
                 # no exista en el Calendario.
                 existe = False
                 for franja_horaria in individuo.horarios:
                     for horario_comp in franja_horaria:
                         if horario == horario_comp:
                             existe = True
                 
                 # Si ya existia continuamos generando.
                 if existe:
                     continue
                 
                 coordinadores_asig.remove(coordinador)
                 
                 # Lo agregamos a la lista de horarios del Calendario.
                 individuo.agregar_horario(horario)
         
         self.poblacion.append(individuo)