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)
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)
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)
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()
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
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
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)
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)
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()
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
def AgregarHorario(self, dia, hora): H = Horario() H.dia = dia H.hora = hora self.lista_horarios.append(H)
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
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
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
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"
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)