def get_nombre_docente_entry(self): '''guarda la nombre del docente''' if not self.__nombre_docente_entry: self.__nombre_docente_entry = tk.Entry(master=self, width=20) #self.__nombre_docente_entry.focus() self.__nombre_docente_entry.grid(row=4, column=2) #recupero el codigo del docente cedula = self.get_cedula_docente_entry().get() #busco al docente en la base de datos docente = ControladorDocente().buscar_codigo(cedula) #inserto en nombre del docente al campo de entrada self.__nombre_docente_entry.insert(0,docente.get_nombre()) return self.__nombre_docente_entry
def consultar_docente(self): obligatorio = True cedula = util.leer_cadena(msg('docente.ingrese.cedula'), obligatorio) try: if not util.es_numerico(cedula): raise Exception("La cedula debe ser numerica!") docente = ControladorDocente().buscar_codigo(cedula) return docente except Exception as e: print(e)
def verificar_docente(self): #recupero la cedula ingresada cedula = self.get_cedula_docente_entry().get() try: #verifico que la cedula este cargada if not cedula: raise Exception ("Debe ingresar una valor para la cedula") #busco al docente en la base de datos docente = ControladorDocente().buscar_codigo(cedula) #recupero el nombre del docente self.get_nombre_docente_entry() #recupero las asignaturas del docente self.get_asignatura_cbx() return True except Exception as e: messagebox.showinfo("Opaa", e)
class ModuloDocente(Modulo): __controlador = ControladorDocente() def __init__(self): Modulo.__init__(self, msg('abm.docente.menu.titulo')) self.__menu_dict = None def listar(self): docentes = self.get_controlador().get_lista_objetos() print(msg('abm.docente.titulo.lista')) for doc in docentes: print(doc.__str__()) self.pausa() def registrar(self): print(msg('abm.docente.titulo.registrar')) obligatorio = True cedula = util.leer_cadena(msg('docente.ingrese.cedula'), obligatorio) nombre = str( util.leer_cadena(msg('docente.ingrese.nombre'), obligatorio)) apellido = str( util.leer_cadena(msg('docente.ingrese.apellido'), obligatorio)) fecha_nacimiento = str( util.leer_cadena(msg('docente.ingrese.fecha_nacimiento'), obligatorio)) asignatura = str( util.leer_cadena(msg('docente.ingrese.asignatura'), obligatorio)) telefono = str( util.leer_cadena(msg('docente.ingrese.telefono'), obligatorio)) departamento = str( util.leer_cadena(msg('docente.ingrese.departamento'), obligatorio)) docente = Docente(asignatura, departamento, telefono, cedula, nombre, apellido, fecha_nacimiento) try: self.get_controlador().crear(docente) print(msg("registro.creado")) except Exception as e: print(e) self.pausa() def borrar(self): print(msg('abm.docente.titulo.borrar')) obligatorio = True cedula = util.leer_cadena(msg('docente.ingrese.cedula'), obligatorio) try: docente = self.get_controlador().buscar_codigo(cedula) if not docente: print(msg('docente.cedula.no.existe'), ":", cedula) else: self.get_controlador().borrar(docente) print(msg('docente.borrado')) except Exception as e: print(e) self.pausa() def consultar_docente(self): obligatorio = True cedula = util.leer_cadena(msg('docente.ingrese.cedula'), obligatorio) try: if not util.es_numerico(cedula): raise Exception("La cedula debe ser numerica!") docente = ControladorDocente().buscar_codigo(cedula) return docente except Exception as e: print(e) def ir_menu_principal(self): self.set_terminar_ejecucion(True) def get_controlador(self): return self.__controlador def get_menu_dict(self): #crear en caso de que aun no se haya creado if not self.__menu_dict: menu_listar = Menu(msg('abm.docente.listar'), self.listar) menu_registrar = Menu(msg('abm.docente.registrar'), self.registrar) #menu_borrar = Menu(msg('abm.docente.borrar'), self.borrar) menu_principal = Menu(msg('abm.ir.menu.principal'), self.ir_menu_principal) menus = {1: menu_listar, 2: menu_registrar, 3: menu_principal} self.__menu_dict = menus return self.__menu_dict
def buscar_por_cedula(cedula): '''funcion que buscar a un docente por cedula''' return [docente for docente in ControladorDocente().buscar_codigo(cedula) if cedula == docente.get_cedula()]
class FormsReserva(tk.PanedWindow): __laboratorio_lbl = None __laboratorio_cbx = None __laboratorio_dicc = None __codigo_lbl = None __codigo_entry = None __cedula_docente_lbl = None __cedula_docente_entry = None __nombre_docente_entry = None __crear_btn = None __fecha_lbl = None __fecha_entry = None __hora_inicio_lbl = None __hora_inicio_entry = None __hora_fin_lbl = None __hora_fin_entry = None __asignatura_cbx = None __verificar_btn = None '''defino los controladores necesarios a ser utilizados''' __controlador_ficha = ControladorFicha() __controlador_laboratorio = ControladorLaboratorio() __controlador_docente = ControladorDocente() def __init__(self, panel_master): tk.PanedWindow.__init__(self, master=panel_master) self.__panel_master = panel_master self.inicializar() self.pack() def inicializar(self): self.__panel_master.geometry('800x600') self.__panel_master.title("ABM Reservas") self.get_laboratorio_lbl() self.get_laboratorio_cbx() self.get_codigo_lbl() self.get_codigo_entry() self.get_cedula_docente_lbl() self.get_cedula_docente_entry() self.get_fecha_lbl() self.get_fecha_entry() self.get_hora_inicio_lbl() self.get_hora_inicio_entry() self.get_hora_fin_lbl() self.get_hora_fin_entry() self.get_crear_btn() self.get_verificar_btn() def get_laboratorio_lbl(self): '''etiqueta para desplegar los nombres de laboratorios''' if not self.__laboratorio_lbl: self.__laboratorio_lbl = tk.Label(master=self, text="LABORATORIO", width=20) self.__laboratorio_lbl.grid(row=2, column=0) return self.__laboratorio_lbl def get_laboratorio_cbx(self): '''Combobox que recupera los objetos del tipo laboratorio para poder mostrar sus nombres''' if not self.__laboratorio_cbx: self.__box_value = StringVar() self.__laboratorio_cbx = ttk.Combobox(master=self,textvariable=self.__box_value, width=20, state='readonly') #obtener la lista de laboratorios actual laboratorios = self.__controlador_laboratorio.get_lista_objetos() lista = [] self.__laboratorio_dicc = {} for lab in laboratorios: lista.append(lab.get_nombre()) self.__laboratorio_dicc[lab.get_nombre()] = lab self.__laboratorio_cbx["value"] = lista self.__laboratorio_cbx.focus() self.__laboratorio_cbx.grid(row=2, column=1) return self.__laboratorio_cbx def get_codigo_lbl(self): '''etiqueta para el codigo de una ficha''' if not self.__codigo_lbl: self.__codigo_lbl = tk.Label(master=self, text="CODIGO FICHA :", width=20) self.__codigo_lbl.grid(row=3, column=0) return self.__codigo_lbl def get_codigo_entry(self): '''campo que muestra en codigo de la ficha que sera autogenerado''' if not self.__codigo_entry: self.__codigo_entry = tk.Entry(master=self, width=20) self.__codigo_entry.focus() self.__codigo_entry.grid(row=3, column=1) return self.__codigo_entry def get_cedula_docente_lbl(self): '''etiqueta para la cedula del docente''' if not self.__cedula_docente_lbl: self.__cedula_docente_lbl = tk.Label(master=self, text="CEDULA_DOCENTE :", width=20) self.__cedula_docente_lbl.grid(row=4, column=0) return self.__cedula_docente_lbl def get_cedula_docente_entry(self): '''guarda la cedula del docente''' if not self.__cedula_docente_entry: self.__cedula_docente_entry = tk.Entry(master=self, width=20) self.__cedula_docente_entry.focus() self.__cedula_docente_entry.grid(row=4, column=1) return self.__cedula_docente_entry def get_nombre_docente_entry(self): '''guarda la nombre del docente''' if not self.__nombre_docente_entry: self.__nombre_docente_entry = tk.Entry(master=self, width=20) #self.__nombre_docente_entry.focus() self.__nombre_docente_entry.grid(row=4, column=2) #recupero el codigo del docente cedula = self.get_cedula_docente_entry().get() #busco al docente en la base de datos docente = ControladorDocente().buscar_codigo(cedula) #inserto en nombre del docente al campo de entrada self.__nombre_docente_entry.insert(0,docente.get_nombre()) return self.__nombre_docente_entry def get_asignatura_cbx(self): if not self.__asignatura_cbx: self.__box_value = StringVar() self.__asignatura_cbx = ttk.Combobox(master=self,textvariable=self.__box_value, width=20, state='readonly') #obtener la lista de asignatura actual docente = self.__controlador_docente.get_lista_objetos() lista = [] dicc = {} for doc in docente: lista.append(doc.get_asignatura()) dicc[doc.get_asignatura()] = doc self.__asignatura_cbx["value"] = lista self.__asignatura_cbx.focus() self.__asignatura_cbx.grid(row=4, column=3) return self.__asignatura_cbx def get_fecha_lbl(self): '''etiqueta para la fecha a reservar''' if not self.__fecha_lbl: self.__fecha_lbl = tk.Label(master=self, text="FECHA PRESTAMO :", width=20) self.__fecha_lbl.grid(row=5, column=0) return self.__fecha_lbl def get_fecha_entry(self): '''guarda la fecha reservada por el docente''' if not self.__fecha_entry: self.__fecha_entry = tk.Entry(master=self, width=20) self.__fecha_entry.focus() self.__fecha_entry.grid(row=5, column=1) return self.__fecha_entry def get_hora_inicio_lbl(self): '''etiqueta para la hora de inicio''' if not self.__hora_inicio_lbl: self.__hora_inicio_lbl = tk.Label(master=self, text="HORA_INICIO :", width=20) self.__hora_inicio_lbl.grid(row=6, column=0) return self.__hora_inicio_lbl def get_hora_inicio_entry(self): '''guarda la hora inicio reservada''' if not self.__hora_inicio_entry: self.__hora_inicio_entry = tk.Entry(master=self, width=20) self.__hora_inicio_entry.focus() self.__hora_inicio_entry.grid(row=6, column=1) return self.__hora_inicio_entry def get_hora_fin_lbl(self): '''etiqueta para la hora de fin''' if not self.__hora_fin_lbl: self.__hora_fin_lbl = tk.Label(master=self, text="HORA_FIN :", width=20) self.__hora_fin_lbl.grid(row=7, column=0) return self.__hora_fin_lbl def get_hora_fin_entry(self): '''guarda la hora fin reservada''' if not self.__hora_fin_entry: self.__hora_fin_entry = tk.Entry(master=self, width=20) self.__hora_fin_entry.focus() self.__hora_fin_entry.grid(row=7, column=1) return self.__hora_fin_entry def get_crear_btn(self): '''Boton utilizado para la creacion de un reserva''' if not self.__crear_btn: self.__crear_btn = tk.Button(master=self, text="CREAR", bg='orange3', command=self.crear_reserva) self.__crear_btn.grid(row=8, column=1) return self.__crear_btn def get_verificar_btn(self): '''Boton utilizado para la verificacion de datos del docente''' if not self.__verificar_btn: self.__verificar_btn = tk.Button(master=self, text="VERIFICAR CEDULA", bg='orange3', command=self.verificar_docente) self.__verificar_btn.grid(row=8, column=2) return self.__verificar_btn '''Reservar laboratorio, consiste en que un docente debe poder seleccionar un laboratorio y poder realizar dicha reserva de la siguiente manera''' def crear_reserva(self): #recupero los datos ingresados por el usuario, de manera a poder crear la ficha nombre_lab = self.get_laboratorio_cbx().get() codigo = self.get_codigo_entry().get() cedula = self.get_cedula_docente_entry().get() fecha = self.get_fecha_entry().get() hora_inicio = self.get_hora_inicio_entry().get() hora_fin = self.get_hora_fin_entry().get() try: if not self.verificar_docente(): raise Exception("Debe ingresar una cedula de docente valido!!") else: #creo la ficha para la reserva ficha = Ficha(codigo, cedula, hora_inicio, hora_fin, fecha) self.__controlador_ficha.crear(ficha) #recuperar el laboratorio a asignar la reserva laboratorio = self.__laboratorio_dicc[nombre_lab] laboratorio.reserva(ficha) messagebox.showinfo("Reserva", "Prestamo exitoso!!") except Exception as e: messagebox.showinfo("Exception", e) '''Verifica la existencia de un docente en la base de datos''' def verificar_docente(self): #recupero la cedula ingresada cedula = self.get_cedula_docente_entry().get() try: #verifico que la cedula este cargada if not cedula: raise Exception ("Debe ingresar una valor para la cedula") #busco al docente en la base de datos docente = ControladorDocente().buscar_codigo(cedula) #recupero el nombre del docente self.get_nombre_docente_entry() #recupero las asignaturas del docente self.get_asignatura_cbx() return True except Exception as e: messagebox.showinfo("Opaa", e) '''funcion utilizada para partes del programa que no estan en desarrollo''' def accion(self): messagebox.showinfo("Info", "No implementado")
class FormsDocente(tk.PanedWindow): '''Clase que permite realizar el formulario para introducir un docente desde el teclado''' __cedula_etiqueta = None __cedula_entry = None __nombre_etiqueta = None __nombre_entry = None __apellido_etiqueta = None __apellido_entry = None __fecha_nacimiento_etiqueta = None __fecha_nacimiento_entry = None __asignatura_etiqueta = None __asignatura_entry = None __departamento_etiqueta = None __departamento_entry = None __telefono_etiqueta = None __telefono_entry = None __guardar_boton = None __controlador = ControladorDocente() def __init__(self, panel_master): tk.PanedWindow.__init__(self, master=panel_master) self.__panel_master = panel_master self.inicializar() self.pack() def inicializar(self): self.__panel_master.geometry('800x600') self.__panel_master.title("ABM DOcentes") self.get_cedula_etiqueta() self.get_cedula_entry() self.get_nombre_etiqueta() self.get_nombre_entry() self.get_apellido_etiqueta() self.get_apellido_entry() self.get_fecha_nacimiento_etiqueta() self.get_fecha_nacimiento_entry() self.get_asignatura_etiqueta() self.get_asignatura_entry() self.get_departamento_etiqueta() self.get_departamento_entry() self.get_telefono_etiqueta() self.get_telefono_entry() self.get_guardar_boton() def get_controlador(self): return self.__controlador def get_cedula_etiqueta(self): '''creo la etiqueta para la vista''' if not self.__cedula_etiqueta: self.__cedula_etiqueta = tk.Label(master=self, text="Cedula: ", width=20) self.__cedula_etiqueta.grid(row=1, column=0) return self.__cedula_etiqueta def get_cedula_entry(self): '''creo la caja de texto para cargar datos''' if not self.__cedula_entry: self.__cedula_entry = tk.Entry(master=self, width=20) self.__cedula_entry.focus() self.__cedula_entry.grid(row=1, column=1) return self.__cedula_entry def get_nombre_etiqueta(self): '''creo la etiqueta para la vista''' if not self.__nombre_etiqueta: self.__nombre_etiqueta = tk.Label(master=self, text="Nombre: ", width=20) self.__nombre_etiqueta.grid(row=2, column=0) return self.__nombre_etiqueta def get_nombre_entry(self): '''creo la caja de texto para cargar datos''' if not self.__nombre_entry: self.__nombre_entry = tk.Entry(master=self, width=20) self.__nombre_entry.grid(row=2, column=1) return self.__nombre_entry def get_apellido_etiqueta(self): '''creo la etiqueta para la vista''' if not self.__apellido_etiqueta: self.__apellido_etiqueta = tk.Label(master=self, text="Apellido: ", width=20) self.__apellido_etiqueta.grid(row=3, column=0) return self.__apellido_etiqueta def get_apellido_entry(self): '''creo la caja de texto para cargar datos''' if not self.__apellido_entry: self.__apellido_entry = tk.Entry(master=self, width=20) self.__apellido_entry.grid(row=3, column=1) return self.__apellido_entry def get_fecha_nacimiento_etiqueta(self): '''creo la etiqueta para la vista''' if not self.__fecha_nacimiento_etiqueta: self.__fecha_nacimiento_etiqueta = tk.Label( master=self, text="Fecha Nacimiento: ", width=20) self.__fecha_nacimiento_etiqueta.grid(row=4, column=0) return self.__fecha_nacimiento_etiqueta def get_fecha_nacimiento_entry(self): '''creo la caja de texto para cargar datos''' if not self.__fecha_nacimiento_entry: self.__fecha_nacimiento_entry = tk.Entry(master=self, width=20) self.__fecha_nacimiento_entry.grid(row=4, column=1) return self.__fecha_nacimiento_entry def get_asignatura_etiqueta(self): '''creo la etiqueta para la vista''' if not self.__asignatura_etiqueta: self.__asignatura_etiqueta = tk.Label(master=self, text="Asignatura: ", width=20) self.__asignatura_etiqueta.grid(row=5, column=0) return self.__asignatura_etiqueta def get_asignatura_entry(self): '''creo la caja de texto para cargar datos''' if not self.__asignatura_entry: self.__asignatura_entry = tk.Entry(master=self, width=20) self.__asignatura_entry.grid(row=5, column=1) return self.__asignatura_entry def get_departamento_etiqueta(self): '''creo la etiqueta para la vista''' if not self.__departamento_etiqueta: self.__departamento_etiqueta = tk.Label(master=self, text="DEpartamento: ", width=20) self.__departamento_etiqueta.grid(row=6, column=0) return self.__departamento_etiqueta def get_departamento_entry(self): '''creo la caja de texto para cargar datos''' if not self.__departamento_entry: self.__departamento_entry = tk.Entry(master=self, width=20) self.__departamento_entry.grid(row=6, column=1) return self.__departamento_entry def get_telefono_etiqueta(self): '''creo la etiqueta para la vista''' if not self.__telefono_etiqueta: self.__telefono_etiqueta = tk.Label(master=self, text="Telefono: ", width=20) self.__telefono_etiqueta.grid(row=7, column=0) return self.__telefono_etiqueta def get_telefono_entry(self): '''creo la caja de texto para cargar datos''' if not self.__telefono_entry: self.__telefono_entry = tk.Entry(master=self, width=20) self.__telefono_entry.grid(row=7, column=1) return self.__telefono_entry def get_guardar_boton(self): if not self.__guardar_boton: self.__guardar_boton = tk.Button(master=self, text="Guardar", command=self.guardar_docente) self.__guardar_boton.grid(row=8, column=1) return self.__guardar_boton def guardar_docente(self): cedula = self.get_cedula_entry().get() nombre = self.get_nombre_entry().get() apellido = self.get_apellido_entry().get() fecha_nacimiento = self.get_fecha_nacimiento_entry().get() asignatura = self.get_asignatura_entry().get() departamento = self.get_departamento_entry().get() telefono = self.get_telefono_entry().get() try: #creo el objeto del tipo docente docente = Docente(asignatura, departamento, telefono, cedula, nombre, apellido, fecha_nacimiento) #lo creo por medio del controlador self.get_controlador().crear(docente) messagebox.showinfo("Registro Docente", "Se creo el Docente con exito") except Exception as e: messagebox.showinfo("Error", e)