def onAutorChange(self, item): autor = Autor(nombre=self.autores[item.row()]['nombre'], codigo=self.autores[item.row()]['codigo']) if autor.nombre != item.text(): autor.nombre = item.text() autor.update() self.onAutorMostrar()
def RegistroAutor(self): self.__log.info("Ingresando al Registro de los autores") opcionesRegisAutor = { "\t- Agregar Autor": 1, "\t- Listar Autores": 2, "\t- Eliminar Autor": 3 } MenuRegisAutor = Menu("Menu Modulo Autor", opcionesRegisAutor) regisAutor = MenuRegisAutor.mostrarMenu() resMenuRegisAutor = True if (resMenuRegisAutor == 1): nuevoAutor = Autor() nombreAutor = input("escriba el nombre del autor \n") correoAutor = input("escriba el correo del autor \n") nuevoAutor.nombre = nombreAutor nuevoAutor.correo = correoAutor nuevoAutor.save() resMenuRegisAutor = False if (resMenuRegisAutor == 2): autor = Autor() print(f"\t ID\t NOMBRE\t CORREO") for obj in autor.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}") input("Regresar???") program.utils.Menu("Menu Modulo Autor", regisAutor) if (resMenuRegisAutor == 3): pass
def registroLibros(self): self.__log.info("Ingresando al Registro de los ") opcionesRegistrolos = { "\t- Registrar Libros ": 1, "\t- Listar Libros ": 2 } menuRegistrolos = Menu("Registro de Libros ", opcionesRegistrolos) resmenuRegistrolos = menuRegistrolos.mostrarMenu() stopMenu = True while stopMenu: if resmenuRegistrolos == 1: self.__log.info("Entrando al registro de Libros ") nuevoLibro = Libro() nombreLibro = input("escriba el nombre del Libro \n") isbnLibro = input("escriba en ISBN del libro \n") autores = Autor() print(f"\t Codigo\t Nombre\t Tipo") for obj in autores.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.tipo}") print("Escriba el id del Autor de la siguiente lista") autor_idLibro = input() estados = EstadoLibro() print(f"\t Codigo\t Estado") for obj in estados.all(): print(f"\t {obj.id}\t {obj.descripcion}") print( "Escriba el id del Estado del Libro de la siguiente lista") estadoLibro = input() nuevoLibro.nombre = nombreLibro nuevoLibro.isbn = isbnLibro nuevoLibro.autor_id = autor_idLibro nuevoLibro.estado_libro_id = estadoLibro nuevoLibro.save() stopMenu = False elif resmenuRegistrolos == 2: self.__log.info("Entrando a consultar los ") listarLibro = Libro() print(f"\t Codigo\t Nombre\t ISBN\t Autor\t Estado de Libro") for obj in listarLibro.all(): print( f"\t {obj.id}\t {obj.nombre}\t {obj.isbn}\t {obj.autor_id}\t {obj.estado_libro_id}" ) sleep(5) stopMenu = False elif resmenuRegistrolos == 9: self._log.info("Saliendo")
def registroLibros(self): self.__log.info("Ingresando al Registro de Libros") opcionesRegistroLibros = {"\t- Registrar Libros":1,"\t- Listar Libros":2} menuRegistroLibros = Menu("Registro de Libros",opcionesRegistroLibros) resmenuRegistroLibros = menuRegistroLibros.mostrarMenu() stopMenu = True while stopMenu: if (resmenuRegistroLibros == 1): self.__log.info("Entrando al registro de libros") nuevoLibro = Libros() nombreLibro = input("escriba el nombre del Libro \n") isbnLibro = input("escriba en ISBN del libro \n") autores = Autor() print(f"\t Codigo\t Nombre\t Tipo") for obj in autores.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.tipo}") print("Escriba el id del Autor de la siguiente lista") print("*Importante : Si no lo ve ingrese NA*") autor_idLibro = input() if (autor_idLibro == 'NA'): nuevoAutor = Autor() nombrenuevoAutor = input('Ingrese el nombre del Autor: ') correonuevoAutor = input('Ingrese el correo del Autor: ') tiponuevoAutor = input('Ingrese si (01) si es Autor o (02) si es Editorial: ') nuevoAutor.nombre = nombrenuevoAutor nuevoAutor.correo = correonuevoAutor nuevoAutor.tipo = tiponuevoAutor nuevoAutor.save() print('Inicializando menu de regsitro nuevamente') Registros.registroLibros() else: estados = Estado_libro() print(f"\t Codigo\t Estado") for obj in estados.all(): print(f"\t {obj.id}\t {obj.descripcion}") print("Escriba el id del Estado del Libro de la siguiente lista") estadoLibro = input() nuevoLibro.nombre = nombreLibro nuevoLibro.isbn = isbnLibro nuevoLibro.autor_id = autor_idLibro nuevoLibro.estado_libro_id = estadoLibro nuevoLibro.save() stopMenu = False elif resmenuRegistroLibros == 9: self._log.info("Saliendo")
def modificarAutor(): autor = Autor() print(f"\t Codigo\t Nombre\t Correo") for obj in autor.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}") idToUpdate = int(input("Ingrese el id del autor a editar: ")) autor = Autor.find(idToUpdate) autor.nombre = input("Escriba el nuevo nombre del autor: ") autor.correo = input("Escriba el nuevo correo del autor: ") autor.save()
def insertarAutor(): autor = Autor() print(f"\t Codigo\t Nombre\t Correo") for obj in autor.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}") autor.nombre = input("Escriba el nombre del autor: ") autor.correo = input("Escriba el correo del autor: ") autor.save()
def onAutorEliminar(self): for item in self.ui.table_autor.selectedIndexes(): try: nombre = self.autores[item.row()]['nombre'] Autor(codigo=self.autores[item.row()]['codigo']).delete() except ForeignKeyViolation: QMessageBox.warning( self, "Atención", f'El autor "{nombre}" no puede eliminarse') self.onAutorMostrar()
def insertarLibro(): libro = Libro() print(f"\t Codigo\t Nombre\t ISBN\t Autor\t Editorial\tEstado") for obj in libro.all(): print( f"\t {obj.id}\t {obj.nombre}\t {obj.isbn}\t {obj.autor_id}\t {obj.editorial_id}\t {obj.estado_libro_id}" ) libro.nombre = input("Escriba el nombre del libro: ") libro.isbn = input("Ingrese el codigón ISBN del libro: ") autores = Autor() print(f"\t Codigo\t Nombre\t Tipo") for obj in autores.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}") libro.autor_id = int(input("Ingrese el id del autor del libro: ")) editorial = Editorial() print(f"\t Codigo\t Nombre\t Correo\t Dirección") for obj in editorial.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}\t {obj.dirección}") libro.editorial_id = int( input("Ingrese el id de la editorial del libro: ")) libro.estado_libro_id = 1 libro.save()
def eliminarAutor(): autor = Autor() print(f"\t Codigo\t Nombre\t Correo") for obj in autor.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}") idToDelete = int(input("Ingrese el id del autor a eliminar: ")) autor = Autor.find(idToDelete) autor.delete()
def __init__(self, libro=None): super(LibroWindow, self).__init__() self.ui = Ui_Dialog() self.ui.setupUi(self) self.libro = libro self.editoriales = Editorial().getAll() self.generos = Genero().getAll() self.autores = Autor().getAll() self.ui.push_cancelar.clicked.connect(self.onClose) self.ui.push_guardar.clicked.connect(self.onSave) for editorial in self.editoriales: self.ui.combo_editorial.addItem(editorial['nombre']) for genero in self.generos: self.ui.combo_genero.addItem(genero['tipo']) for autor in self.autores: self.ui.combo_autor.addItem(autor['nombre']) if libro is not None: self.ui.spin_codigo.setValue(libro['codigo']) self.ui.edit_titulo.setText(libro['titulo']) self.ui.edit_isbn.setText(libro['isbn']) self.ui.spin_precio.setValue(libro['precio']) self.ui.edit_idioma.setText(libro['idioma']) self.ui.date_publicacion.setDate(libro['publicacion']) index = self.ui.combo_autor.findText(libro['autor']) self.ui.combo_autor.setCurrentIndex(index) index = self.ui.combo_editorial.findText(libro['editorial']) self.ui.combo_editorial.setCurrentIndex(index) index = self.ui.combo_genero.findText(libro['genero']) self.ui.combo_genero.setCurrentIndex(index) self.ui.edit_encuadernacion.setText(libro['encuadernacion'])
def registroPrestamos(self): self.__log.info("Ingresando al Registro de los ") opcionesRegistrolos = { "\t- Registrar Prestamos ": 1, "\t- Registrar devolucion de prestamo ": 2 } menuRegistrolos = Menu("Registro de Prestamos ", opcionesRegistrolos) resmenuRegistrolos = menuRegistrolos.mostrarMenu() stopMenu = True while stopMenu: if resmenuRegistrolos == 1: self.__log.info("Entrando al registro de Prestamos ") nuevoPrestamo = Prestamo() codigoLibro = input("escriba el codigo del Libro \n") codigoUsuario = input("escriba el codigo del usuario \n") fechaPrestamo = datetime.today().strftime('%Y-%m-%d') bibliotecaId = 1 flagUpdate = False nuevoPrestamo.user_id = codigoUsuario nuevoPrestamo.libros_id = codigoLibro nuevoPrestamo.prestado_on = fechaPrestamo nuevoPrestamo.bibliotecas_id = bibliotecaId listaLibros = Libro.where('id', '=', f'{codigoLibro}').get() for row in listaLibros: libro = row if libro.estado_libro_id == 1: listaAutor = Autor.where('id', '=', f'{libro.autor_id}').get() for row in listaAutor: autor = row print( "\tCodigo Usuario\t\tLibro\t\tISBN\t\tAutor\t\tBiblioteca" ) print( f"\t{str(codigoUsuario)}\t\t{str(libro.nombre)}\t\t{str(libro.isbn)}\t\t{str(autor.nombre)}\t\t{str(bibliotecaId)}" ) registro = input( "Desea registrar el prestamo Si(1)/No(0)?: ") if str(registro) == '1': if nuevoPrestamo.save(): print("Registro de prestamo satisfactorio") sleep(5) flagUpdate = Libro.where( 'id', '=', f'{codigoLibro}').update(estado_libro_id=3) if flagUpdate: print("Actualización de libro satisfactorio") sleep(5) else: print("No se pudo actualizar el libro") else: print( "No se puede prestar el libro.\nLibro ha sido prestado." ) sleep(5) stopMenu = False elif resmenuRegistrolos == 2: self.__log.info("Entrando a la devolución de libro Prestado ") codigoUsuario = input("escriba el codigo del usuario \n") fechaDevolucion = '9999-12-31' #Constante para identificar devolucion flagUpdate = False listaDev = Prestamo.where('user_id', '=', f'{codigoUsuario}').get() if listaDev: print( "\tID Prestamo\tLibro\t\tISBN\t\tAutor\t\tBiblioteca") for rowDev in listaDev: if str(rowDev.prestado_on ) != fechaDevolucion: #No mostrar devoluciones listaLibros = Libro.where( 'id', '=', f'{rowDev.libros_id}').get() for rowLibro in listaLibros: libro = rowLibro listaAutor = Autor.where( 'id', '=', f'{libro.autor_id}').get() for rowAutor in listaAutor: autor = rowAutor print( f"\t{str(rowDev.id)}\t\t{str(libro.nombre)}\t\t{str(libro.isbn)}\t\t{str(autor.nombre)}\t\t{str(rowDev.bibliotecas_id)}" ) idDev = input("Escriba el Id de Prestamo: ") if idDev: flagUpdate = Prestamo.where( 'id', '=', f'{idDev}').update(prestado_on=fechaDevolucion) if flagUpdate: print("Actualización de Devolución satisfactoria") sleep(5) flagUpdate = Libro.where( 'id', '=', f'{rowDev.libros_id}').update( estado_libro_id=1) if flagUpdate: print("Actualización de libro satisfactorio") sleep(5) else: print("No se pudo actualizar el libro") else: print("No se pudo actualizar Devolución") stopMenu = False elif resmenuRegistrolos == 9: self._log.info("Saliendo") stopMenu = False
nova_profissao.id_profissao_autor = db.last_sequence_number( 'profissao_autor') profissao_banco = nova_profissao else: profissao_banco = profissao_banco[0] # print(profissao) # print('a') a_list = soup.find_all("a", rel='twipsy') for a in a_list: autor = a.get_text() autor_banco = db.session.query(Autor).filter(Autor.autor == autor) if (autor_banco.count() == 0): novo_autor = Autor() novo_autor.autor = autor db.session.add(novo_autor) db.session.commit() novo_autor.id_autor = db.last_sequence_number('autor') autor_banco = novo_autor else: autor_banco = autor_banco[0] profissoes_autores_banco = db.session.query( ProfissoesAutores).filter( ProfissoesAutores.id_autor == autor_banco.id_autor and ProfissoesAutores.id_profissao_autor == profissao_banco.id_profissao_autor) if (profissoes_autores_banco.count() == 0): novo_profissoes_autores_banco = ProfissoesAutores()
def onAutorGuardar(self): nombre = self.ui.edit_autor_guardar.text() autor = Autor(nombre) autor.save() self.ui.edit_autor_guardar.clear() self.onAutorMostrar()
def RegistroLibros(self): self.__log.info("Ingresando al Registro de Libros") opcionesRegisLibros = { "\t- Registrar Libro": 1, "\t- Listar Libros": 2, "\t- Eliminar Libros": 3 } MenuRegisLibros = Menu("Menu Modulo Libros", opcionesRegisLibros) regisLibros = MenuRegisLibros.mostrarMenu() menuRegisLib = True while menuRegisLib: if (regisLibros == 1): nuevoLibro = Libro() nombreLibro = input("escriba el nombre del Libro \n") isbnLibro = input("escriba el ISBN del libro \n") autores = Autor() print(f"\t ID\t Nombre\t Correo") for obj in autores.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}") print("Escriba el id del Autor") autor_idLibro = input() editoriales = Editorial() print(f"\t ID\t Nombre") for obj in editoriales.all(): print(f"\t {obj.id}\t {obj.nombre}") print("Escriba el id de la editorial") editorialLibro = input() nuevoLibro.nombre = nombreLibro nuevoLibro.isbn = isbnLibro nuevoLibro.autor_id = autor_idLibro nuevoLibro.estado_libro_id = editorialLibro nuevoLibro.save() menuRegisLib = False elif (regisLibros == 2): libros = Libro() print(f"ID\t NOMBRE\t ISBN\t AUTOR\t EDITORIAL\t ESTADO") for obj in libros.all(): print( f"\t {obj.id}\t {obj.nombre}\t {obj.ISBN}\t {obj.autors_id}\t {obj.editorial_id}\t {obj.estado_libro_id}" ) print("Escriba el id de la editorial") editorialLibro = input() input("Regresar???") menuRegisLib = False program.utils.Menu("Menu Modulo Libros", regisLibros) elif (regisLibros == 3): libros = Libro() print(f"ID\t NOMBRE\t ISBN\t AUTOR\t EDITORIAL\t ESTADO") for obj in libros.all(): print( f"\t {obj.id}\t {obj.nombre}\t {obj.isbn}\t {obj.autors_id}\t {obj.editorial_id}\t {obj.estado_libro_id}" ) print("Escriba el id del libro que se desea eliminar: \n") id = input() DatabaseManager.table('libros').get() DatabaseManager.table('libros').where('id', '=', f'{id}').delete() menuRegisLib = False elif (regisLibros == 9): __log = log("Saliendo") break
def registroLibros(self): self.__log.info("Ingresando al Registro de Libros") while True: opcionesRegistroLibros = { "\t- Registrar Libros": 1, "\t- Listar Libros": 2 } menuRegistroLibros = Menu("Registro de Libros", opcionesRegistroLibros) resmenuRegistroLibros = menuRegistroLibros.mostrarMenu() if resmenuRegistroLibros == 1: self.__log.info("Entrando al registro de libros") nuevoLibro = Libro() nombreLibro = input("escriba el nombre del Libro \n") isbnLibro = input("escriba en ISBN del libro \n") autores = Autor() print(f"\t Codigo\t Nombre\t Tipo") for obj in autores.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.tipo}") print("Escriba el id del Autor de la siguiente lista") autor_idLibro = input() estados = EstadoLibro() print(f"\t Codigo\t Estado") for obj in estados.all(): print(f"\t {obj.id}\t {obj.descripcion}") print( "Escriba el id del Estado del Libro de la siguiente lista") estadoLibro = input() nuevoLibro.nombre = nombreLibro nuevoLibro.isbn = isbnLibro nuevoLibro.autor_id = autor_idLibro nuevoLibro.estado_libro_id = estadoLibro nuevoLibro.save() input("Continuar?") elif resmenuRegistroLibros == 2: self.__log.info("Ingresando a listar libros") libros = Libro() print(f"\t Codigo\t Nombre\t\t ISBN\t Autor\t Estado") for obj in libros.all(): y = obj.estado_libro_id if (y == 1): estado = "Disponible" elif (y == 2): estado = "Reservado" elif (y == 3): estado = "Prestado" print( f"\t {obj.id}\t {obj.nombre}\t\t {obj.isbn}\t {obj.autor_id}\t {estado}" ) input("Continuar?") elif resmenuRegistroLibros == 9: self.__log.info("Saliendo") break
class MainWindow(QMainWindow): showMessageBox = Signal(str) exitThread = Signal() def __init__(self): super(MainWindow, self).__init__() # modelos self.editorial = Editorial() self.genero = Genero() self.autor = Autor() self.libro = Libro() self.sucursal = Sucursal() self.supervisor = Supervisor() self.empleado = Empleado() self.venta = Compra() self.existencia = LibroSucursal() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.exit = False self.showMessageBox.connect(self.onNotify) self.exitThread.connect(self.customExit) self.canExit = False self.worker = Worker(self, 'existencias') self.thread = QThread() self.worker.moveToThread(self.thread) self.thread.started.connect(self.worker._listener) self.thread.start() # connections self.ui.push_editorial_nuevo.clicked.connect(self.onEditorialNuevo) self.ui.push_editorial_mostrar.clicked.connect(self.onEditorialMostrar) self.ui.push_editorial_eliminar.clicked.connect( self.onEditorialEliminar) self.ui.push_editorial_buscar.clicked.connect(self.onEditorialBuscar) self.ui.push_genero_mostrar.clicked.connect(self.onGeneroMostrar) self.ui.push_genero_guardar.clicked.connect(self.onGeneroGuardar) self.ui.push_genero_eliminar.clicked.connect(self.onGeneroEliminar) self.ui.push_genero_buscar.clicked.connect(self.onGeneroBuscar) self.ui.push_autor_mostrar.clicked.connect(self.onAutorMostrar) self.ui.push_autor_guardar.clicked.connect(self.onAutorGuardar) self.ui.push_autor_eliminar.clicked.connect(self.onAutorEliminar) self.ui.push_autor_buscar.clicked.connect(self.onAutorBuscar) self.ui.push_libro_nuevo.clicked.connect(self.onLibroNuevo) self.ui.push_libro_mostrar.clicked.connect(self.onLibroMostrar) self.ui.push_libro_eliminar.clicked.connect(self.onLibroEliminar) self.ui.push_libro_buscar.clicked.connect(self.onLibroBuscar) self.ui.push_sucursal_nuevo.clicked.connect(self.onSucursalNuevo) self.ui.push_sucursal_mostrar.clicked.connect(self.onSucursalMostrar) self.ui.push_sucursal_eliminar.clicked.connect(self.onSucursalEliminar) self.ui.push_sucursal_buscar.clicked.connect(self.onSucursalBuscar) self.ui.push_sucursal_inactiva.clicked.connect(self.onSucursalInactiva) self.ui.push_empleado_nuevo.clicked.connect(self.onEmpleadoNuevo) self.ui.push_empleado_mostrar.clicked.connect(self.onEmpleadoMostrar) self.ui.push_empleado_eliminar.clicked.connect(self.onEmpleadoEliminar) self.ui.push_empleado_buscar.clicked.connect(self.onEmpleadoBuscar) self.ui.push_supervisor_mostrar.clicked.connect( self.onSupervisorMostrar) self.ui.push_empleado_inactivos.clicked.connect( self.onEmpleadoInactivo) self.ui.push_venta_nuevo.clicked.connect(self.onVentaNuevo) self.ui.push_venta_mostrar.clicked.connect(self.onVentaMostrar) self.ui.push_venta_eliminar.clicked.connect(self.onVentaEliminar) self.ui.push_venta_buscar.clicked.connect(self.onVentaBuscar) self.ui.push_existencia_nuevo.clicked.connect(self.onExistenciaNuevo) self.ui.push_existencia_mostrar.clicked.connect( self.onExistenciaMostrar) self.ui.push_existencia_buscar.clicked.connect(self.onExistenciaBuscar) # double clicks self.ui.table_libro.doubleClicked.connect(self.onLibroEdit) self.ui.table_editorial.doubleClicked.connect(self.onEditorialEdit) self.ui.table_existencia.doubleClicked.connect(self.onExistenciaEdit) self.ui.table_empleado.doubleClicked.connect(self.onEmpleadoEdit) self.ui.table_sucursal.doubleClicked.connect(self.onSucursalEdit) self.ui.table_venta.doubleClicked.connect(self.onVentaEdit) # no edit self.ui.table_editorial.setEditTriggers( QAbstractItemView.NoEditTriggers) self.ui.table_libro.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.table_existencia.setEditTriggers( QAbstractItemView.NoEditTriggers) self.ui.table_empleado.setEditTriggers( QAbstractItemView.NoEditTriggers) self.ui.table_venta.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.table_sucursal.setEditTriggers( QAbstractItemView.NoEditTriggers) # edit self.ui.table_autor.itemChanged.connect(self.onAutorChange) self.ui.table_genero.itemChanged.connect(self.onGeneroChange) self.onEditorialMostrar() self.onLibroMostrar() self.onExistenciaMostrar() self.onAutorMostrar() self.onEmpleadoMostrar() self.onGeneroMostrar() self.onVentaMostrar() self.onSucursalMostrar() # Nuevo @Slot() def onEditorialNuevo(self): editorial = EditorialWindow() editorial.exec_() self.onEditorialMostrar() @Slot() def onLibroNuevo(self): libro = LibroWindow() libro.exec_() self.onLibroMostrar() @Slot() def onSucursalNuevo(self): sucursal = SucursalWindow() sucursal.exec_() self.onSucursalMostrar() @Slot() def onSupervisorNuevo(self): supervisor = SupervisorWindow() supervisor.exec_() self.onSupervisorMostrar() @Slot() def onEmpleadoNuevo(self): empleado = EmpleadoWindow() empleado.exec_() self.onEmpleadoMostrar() @Slot() def onVentaNuevo(self): venta = VentaWindow() venta.exec_() self.onVentaMostrar() @Slot() def onExistenciaNuevo(self): venta = ExistenciaWindow() venta.exec_() self.onExistenciaMostrar() @Slot() def onGeneroGuardar(self): tipo = self.ui.edit_genero_nuevo.text() cat = Genero(tipo) cat.save() self.ui.edit_genero_nuevo.clear() self.onGeneroMostrar() @Slot() def onAutorGuardar(self): nombre = self.ui.edit_autor_guardar.text() autor = Autor(nombre) autor.save() self.ui.edit_autor_guardar.clear() self.onAutorMostrar() # mostrar @Slot() def onEditorialMostrar(self): self.editoriales = self.editorial.getAll() self.setEditoriales() def setEditoriales(self): headers = ['Nombre', 'Pais'] self.ui.table_editorial.setRowCount(len(self.editoriales)) self.ui.table_editorial.setColumnCount(len(headers)) self.ui.table_editorial.setHorizontalHeaderLabels(headers) for row, editorial in enumerate(self.editoriales): self.ui.table_editorial.setItem( row, 0, QTableWidgetItem(editorial['nombre'])) self.ui.table_editorial.setItem( row, 1, QTableWidgetItem(editorial['paisorigen'])) @Slot() def onGeneroMostrar(self): allGenero = self.genero.getAll() self.generos = allGenero self.setGeneros() def setGeneros(self): headers = ['Tipo'] self.ui.table_genero.setRowCount(len(self.generos)) self.ui.table_genero.setColumnCount(len(headers)) self.ui.table_genero.setHorizontalHeaderLabels(headers) for row, categoria in enumerate(self.generos): self.ui.table_genero.setItem(row, 0, QTableWidgetItem(categoria['tipo'])) @Slot() def onAutorMostrar(self): all = self.autor.getAll() self.autores = all self.setAutores() def setAutores(self): headers = ['Nombre'] self.ui.table_autor.setRowCount(len(self.autores)) self.ui.table_autor.setColumnCount(len(headers)) self.ui.table_autor.setHorizontalHeaderLabels(headers) for row, categoria in enumerate(self.autores): self.ui.table_autor.setItem(row, 0, QTableWidgetItem(categoria['nombre'])) @Slot() def onLibroMostrar(self): self.libros = self.libro.getAll() self.setLibros() def setLibros(self): headers = [ 'Codigo', 'Titulo', 'Precio', 'ISBN', 'Idioma', 'Encuadernacion', 'Publicación', 'Editorial', 'Autor', 'Genero' ] self.ui.table_libro.setRowCount(len(self.libros)) self.ui.table_libro.setColumnCount(len(headers)) self.ui.table_libro.setHorizontalHeaderLabels(headers) for row, libro in enumerate(self.libros): self.ui.table_libro.setItem(row, 0, QTableWidgetItem(str(libro['codigo']))) self.ui.table_libro.setItem(row, 1, QTableWidgetItem(libro['titulo'])) self.ui.table_libro.setItem(row, 2, QTableWidgetItem(str(libro['precio']))) self.ui.table_libro.setItem(row, 3, QTableWidgetItem(libro['isbn'])) self.ui.table_libro.setItem(row, 4, QTableWidgetItem(libro['idioma'])) self.ui.table_libro.setItem( row, 5, QTableWidgetItem(libro['encuadernacion'])) self.ui.table_libro.setItem( row, 6, QTableWidgetItem(str(libro['publicacion']))) self.ui.table_libro.setItem(row, 7, QTableWidgetItem(libro['editorial'])) self.ui.table_libro.setItem(row, 8, QTableWidgetItem(libro['autor'])) self.ui.table_libro.setItem(row, 9, QTableWidgetItem(libro['genero'])) @Slot() def onSucursalMostrar(self): all = self.sucursal.getAll() self.sucursales = all self.setSucursales() @Slot() def onSucursalInactiva(self): all = self.sucursal.getInactivos() self.sucursales = all self.setSucursales() def setSucursales(self): headers = ['Nombre', 'Direccion', 'Telefono'] self.ui.table_sucursal.setRowCount(len(self.sucursales)) self.ui.table_sucursal.setColumnCount(len(headers)) self.ui.table_sucursal.setHorizontalHeaderLabels(headers) for row, sucursal in enumerate(self.sucursales): self.ui.table_sucursal.setItem( row, 0, QTableWidgetItem(sucursal['nombre'])) self.ui.table_sucursal.setItem( row, 1, QTableWidgetItem(sucursal['direccion'])) self.ui.table_sucursal.setItem( row, 2, QTableWidgetItem(str(sucursal['telefono']))) @Slot() def onSupervisorMostrar(self): all = self.supervisor.getAll() self.empleados = all self.setEmpleados() @Slot() def onEmpleadoMostrar(self): all = self.empleado.getAll() self.empleados = all self.setEmpleados() @Slot() def onEmpleadoInactivo(self): all = self.empleado.getInactivos() self.empleados = all self.setEmpleados() def setEmpleados(self): headers = [ 'Código', 'Nombre', 'Telefono', 'Tipo', 'Supervisor', 'Direccion', 'Sucursal', 'Activo' ] self.ui.table_empleado.setRowCount(len(self.empleados)) self.ui.table_empleado.setColumnCount(len(headers)) self.ui.table_empleado.setHorizontalHeaderLabels(headers) for row, empleado in enumerate(self.empleados): self.ui.table_empleado.setItem( row, 0, QTableWidgetItem(str(empleado['codigo']))) self.ui.table_empleado.setItem( row, 1, QTableWidgetItem(empleado['nombre'])) self.ui.table_empleado.setItem( row, 2, QTableWidgetItem(empleado['telefono'])) self.ui.table_empleado.setItem(row, 3, QTableWidgetItem(empleado['tipo'])) self.ui.table_empleado.setItem( row, 4, QTableWidgetItem(empleado['supervisor'])) self.ui.table_empleado.setItem( row, 5, QTableWidgetItem(empleado['direccion'])) self.ui.table_empleado.setItem( row, 6, QTableWidgetItem(empleado['sucursal'])) self.ui.table_empleado.setItem( row, 7, QTableWidgetItem(str(empleado['activo']))) @Slot() def onVentaMostrar(self): all = self.venta.getAll() self.ventas = all self.setVentas() def setVentas(self): headers = ['Folio', 'Empleado', 'Fecha', 'Total'] self.ui.table_venta.setRowCount(len(self.ventas)) self.ui.table_venta.setColumnCount(len(headers)) self.ui.table_venta.setHorizontalHeaderLabels(headers) for row, venta in enumerate(self.ventas): self.ui.table_venta.setItem(row, 0, QTableWidgetItem(str(venta['folio']))) self.ui.table_venta.setItem(row, 1, QTableWidgetItem(venta['empleado'])) self.ui.table_venta.setItem( row, 2, QTableWidgetItem(venta['fecha'].strftime('%d/%m/%Y'))) self.ui.table_venta.setItem(row, 3, QTableWidgetItem(str(venta['total']))) @Slot() def onExistenciaMostrar(self): all = self.existencia.getAll() self.existencias = all self.setExistencias() def setExistencias(self): headers = ['Libro', 'Sucursal', 'Existencia'] self.ui.table_existencia.setRowCount(len(self.existencias)) self.ui.table_existencia.setColumnCount(len(headers)) self.ui.table_existencia.setHorizontalHeaderLabels(headers) for row, existencia in enumerate(self.existencias): self.ui.table_existencia.setItem( row, 0, QTableWidgetItem(existencia['libro'])) self.ui.table_existencia.setItem( row, 1, QTableWidgetItem(existencia['sucursal'])) self.ui.table_existencia.setItem( row, 2, QTableWidgetItem(str(existencia['existencia']))) # Edit functions @Slot() def onLibroEdit(self, item): window = LibroWindow(self.libros[item.row()]) window.exec_() self.onLibroMostrar() @Slot() def onVentaEdit(self, item): window = VentaDetallesWindow(self.ventas[item.row()]) window.exec_() @Slot() def onEditorialEdit(self, item): window = EditorialWindow(self.editoriales[item.row()]) window.exec_() self.onEditorialMostrar() @Slot() def onExistenciaEdit(self, item): window = ExistenciaWindow(self.existencias[item.row()]) window.exec_() self.onExistenciaMostrar() @Slot() def onAutorChange(self, item): autor = Autor(nombre=self.autores[item.row()]['nombre'], codigo=self.autores[item.row()]['codigo']) if autor.nombre != item.text(): autor.nombre = item.text() autor.update() self.onAutorMostrar() @Slot() def onEmpleadoEdit(self, item): window = EmpleadoWindow(self.empleados[item.row()]) window.exec_() self.onEmpleadoMostrar() @Slot() def onSucursalEdit(self, item): window = SucursalWindow(self.sucursales[item.row()]) window.exec_() self.onSucursalMostrar() @Slot() def onGeneroChange(self, item): genero = Genero(self.generos[item.row()]['tipo']) if genero.tipo != item.text(): genero.tipo = item.text() genero.update() self.onGeneroMostrar() # eliminar @Slot() def onSucursalEliminar(self): for item in self.ui.table_sucursal.selectedIndexes(): nombre = self.sucursales[item.row()]['nombre'] Sucursal(nombre=nombre).delete() self.onSucursalMostrar() @Slot() def onLibroEliminar(self): for item in self.ui.table_libro.selectedIndexes(): try: codigo = self.libros[item.row()]['codigo'] Libro(codigo=codigo).delete() except ForeignKeyViolation: QMessageBox.warning( self, "Atención", f'El libro con codigo "{codigo}" no puede eliminarse') self.onAutorMostrar() @Slot() def onAutorEliminar(self): for item in self.ui.table_autor.selectedIndexes(): try: nombre = self.autores[item.row()]['nombre'] Autor(codigo=self.autores[item.row()]['codigo']).delete() except ForeignKeyViolation: QMessageBox.warning( self, "Atención", f'El autor "{nombre}" no puede eliminarse') self.onAutorMostrar() @Slot() def onGeneroEliminar(self): for item in self.ui.table_genero.selectedIndexes(): try: tipo = self.generos[item.row()]['tipo'] Genero(tipo=tipo).delete() except ForeignKeyViolation: QMessageBox.warning(self, "Atención", f'El genero "{tipo}" no puede eliminarse') self.onGeneroMostrar() @Slot() def onEditorialEliminar(self): for item in self.ui.table_editorial.selectedIndexes(): try: nombre = self.editoriales[item.row()]['nombre'] Editorial(nombre=nombre).delete() except ForeignKeyViolation: QMessageBox.warning( self, "Atención", f'La editorial "{nombre}" no puede eliminarse') self.onEditorialMostrar() @Slot() def onVentaEliminar(self): for item in self.ui.table_venta.selectedIndexes(): compra = Compra() compra.folio = self.ventas[item.row()]['folio'] compra.delete() self.onVentaMostrar() @Slot() def onEmpleadoEliminar(self): for item in self.ui.table_empleado.selectedIndexes(): empleado = Empleado() empleado._key = self.empleados[item.row()]['codigo'] try: empleado.delete() self.onEmpleadoMostrar() except ForeignKeyViolation: QMessageBox.warning( self, "Atención", f'El empleado "{empleado._key}" no puede eliminarse') self.onEmpleadoMostrar() # Buscar @Slot() def onVentaBuscar(self): self.ventas = self.venta.search( self.ui.date_venta_buscar.date().toPython()) self.setVentas() @Slot() def onExistenciaBuscar(self): self.existencias = self.existencia.search( self.ui.edit_existencia_buscar.text()) self.setExistencias() @Slot() def onGeneroBuscar(self): self.generos = self.genero.search(self.ui.edit_genero_buscar.text()) self.setGeneros() @Slot() def onAutorBuscar(self): self.autores = self.autor.search(self.ui.edit_autor_buscar.text()) self.setAutores() @Slot() def onEditorialBuscar(self): self.editoriales = self.editorial.search( self.ui.edit_editorial_buscar.text()) self.setEditoriales() @Slot() def onLibroBuscar(self): self.libros = self.libro.search(self.ui.edit_libro_buscar.text()) self.setLibros() @Slot() def onSucursalBuscar(self): self.sucursales = self.sucursal.search( self.ui.edit_sucursal_buscar.text()) self.setSucursales() @Slot() def onEmpleadoBuscar(self): self.empleados = self.empleado.search( self.ui.edit_empleado_buscar.text()) self.setEmpleados() #notify @Slot(str) def onNotify(self, data): QMessageBox.warning(self, "Atención", data) @Slot() def customExit(self): self.canExit = True self.close() def closeEvent(self, event): self.exit = True if self.canExit == True: self.thread.terminate() event.accept() else: event.ignore()
def __init__(self): super(MainWindow, self).__init__() # modelos self.editorial = Editorial() self.genero = Genero() self.autor = Autor() self.libro = Libro() self.sucursal = Sucursal() self.supervisor = Supervisor() self.empleado = Empleado() self.venta = Compra() self.existencia = LibroSucursal() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.exit = False self.showMessageBox.connect(self.onNotify) self.exitThread.connect(self.customExit) self.canExit = False self.worker = Worker(self, 'existencias') self.thread = QThread() self.worker.moveToThread(self.thread) self.thread.started.connect(self.worker._listener) self.thread.start() # connections self.ui.push_editorial_nuevo.clicked.connect(self.onEditorialNuevo) self.ui.push_editorial_mostrar.clicked.connect(self.onEditorialMostrar) self.ui.push_editorial_eliminar.clicked.connect( self.onEditorialEliminar) self.ui.push_editorial_buscar.clicked.connect(self.onEditorialBuscar) self.ui.push_genero_mostrar.clicked.connect(self.onGeneroMostrar) self.ui.push_genero_guardar.clicked.connect(self.onGeneroGuardar) self.ui.push_genero_eliminar.clicked.connect(self.onGeneroEliminar) self.ui.push_genero_buscar.clicked.connect(self.onGeneroBuscar) self.ui.push_autor_mostrar.clicked.connect(self.onAutorMostrar) self.ui.push_autor_guardar.clicked.connect(self.onAutorGuardar) self.ui.push_autor_eliminar.clicked.connect(self.onAutorEliminar) self.ui.push_autor_buscar.clicked.connect(self.onAutorBuscar) self.ui.push_libro_nuevo.clicked.connect(self.onLibroNuevo) self.ui.push_libro_mostrar.clicked.connect(self.onLibroMostrar) self.ui.push_libro_eliminar.clicked.connect(self.onLibroEliminar) self.ui.push_libro_buscar.clicked.connect(self.onLibroBuscar) self.ui.push_sucursal_nuevo.clicked.connect(self.onSucursalNuevo) self.ui.push_sucursal_mostrar.clicked.connect(self.onSucursalMostrar) self.ui.push_sucursal_eliminar.clicked.connect(self.onSucursalEliminar) self.ui.push_sucursal_buscar.clicked.connect(self.onSucursalBuscar) self.ui.push_sucursal_inactiva.clicked.connect(self.onSucursalInactiva) self.ui.push_empleado_nuevo.clicked.connect(self.onEmpleadoNuevo) self.ui.push_empleado_mostrar.clicked.connect(self.onEmpleadoMostrar) self.ui.push_empleado_eliminar.clicked.connect(self.onEmpleadoEliminar) self.ui.push_empleado_buscar.clicked.connect(self.onEmpleadoBuscar) self.ui.push_supervisor_mostrar.clicked.connect( self.onSupervisorMostrar) self.ui.push_empleado_inactivos.clicked.connect( self.onEmpleadoInactivo) self.ui.push_venta_nuevo.clicked.connect(self.onVentaNuevo) self.ui.push_venta_mostrar.clicked.connect(self.onVentaMostrar) self.ui.push_venta_eliminar.clicked.connect(self.onVentaEliminar) self.ui.push_venta_buscar.clicked.connect(self.onVentaBuscar) self.ui.push_existencia_nuevo.clicked.connect(self.onExistenciaNuevo) self.ui.push_existencia_mostrar.clicked.connect( self.onExistenciaMostrar) self.ui.push_existencia_buscar.clicked.connect(self.onExistenciaBuscar) # double clicks self.ui.table_libro.doubleClicked.connect(self.onLibroEdit) self.ui.table_editorial.doubleClicked.connect(self.onEditorialEdit) self.ui.table_existencia.doubleClicked.connect(self.onExistenciaEdit) self.ui.table_empleado.doubleClicked.connect(self.onEmpleadoEdit) self.ui.table_sucursal.doubleClicked.connect(self.onSucursalEdit) self.ui.table_venta.doubleClicked.connect(self.onVentaEdit) # no edit self.ui.table_editorial.setEditTriggers( QAbstractItemView.NoEditTriggers) self.ui.table_libro.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.table_existencia.setEditTriggers( QAbstractItemView.NoEditTriggers) self.ui.table_empleado.setEditTriggers( QAbstractItemView.NoEditTriggers) self.ui.table_venta.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.table_sucursal.setEditTriggers( QAbstractItemView.NoEditTriggers) # edit self.ui.table_autor.itemChanged.connect(self.onAutorChange) self.ui.table_genero.itemChanged.connect(self.onGeneroChange) self.onEditorialMostrar() self.onLibroMostrar() self.onExistenciaMostrar() self.onAutorMostrar() self.onEmpleadoMostrar() self.onGeneroMostrar() self.onVentaMostrar() self.onSucursalMostrar()
def registroLibros(self): self.__log.info("Ingresando al Registro de Libros") opcionesRegistro = { "\t- Registrar Libros": 1, "\t- Listar Libros": 2, "\t- Registrar Lector": 3, "\t- Listar Lectores": 4 } menuRegistro = Menu("Registro de Libros", opcionesRegistro) resmenuRegistro = menuRegistro.mostrarMenu() stopMenu = True while stopMenu: if resmenuRegistro == 1: self.__log.info("Entrando al registro de libros") print("Registrar Libros") nuevoLibro = Libro() nombreLibro = input("escriba el nombre del Libro \n") isbnLibro = input("escriba en ISBN del libro \n") autores = Autor() print(f"\t Codigo\t Nombre\t Tipo") for obj in autores.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.tipo}") print("Escriba el id del Autor de la siguiente lista") autor_idLibro = input() estados = EstadoLibro() print(f"\t Codigo\t Estado") for obj in estados.all(): print(f"\t {obj.id}\t {obj.descripcion}") print( "Escriba el id del Estado del Libro de la siguiente lista") estadoLibro = input() nuevoLibro.nombre = nombreLibro nuevoLibro.isbn = isbnLibro nuevoLibro.autor_id = autor_idLibro nuevoLibro.estado_libro_id = estadoLibro nuevoLibro.save() stopMenu = False if resmenuRegistro == 2: self.__log.info("Entrando a listar libros") print("Listar libros") libros = Libro() print(f"\t Codigo\t Nombre\t ISBN") for obj in libros.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.isbn}") stopMenu = False if resmenuRegistro == 3: self.__log.info("Entrando al registro de lectores") print("Registrar Lectores") nuevoUser = User() nombreUser = input("escriba el nombre del nuevo Usuario \n") correoUser = input("escriba el correo \n") tipodocumento = TipoDocumento() print(f"\t id\t Descripcion") for obj in tipodocumento.all(): print(f"\t {obj.id}\t {obj.descripcion}") print( "Escriba el id del tipo de documento de la anterior lista") documento_idTipodocumento = input() documentoUser = input("escriba el numero del documento \n") estadoUser = EstadoUser() print(f"\t id\t descripcion") for obj in estadoUser.all(): print(f"\t {obj.id}\t {obj.descripcion}") print( "Escriba el id del Estado del Usuario de la anterior lista" ) estado_User = input() nuevoUser.nombre = nombreUser nuevoUser.correo = correoUser nuevoUser.tipo_documento_id = documento_idTipodocumento nuevoUser.documento = documentoUser nuevoUser.estado_user_id = estado_User nuevoUser.save() stopMenu = False if resmenuRegistro == 4: self.__log.info("Entrando a listar lector") print("Listar lectores") Usuarios = User() print(f"\t Codigo\t Nombre\t correo") for obj in Usuarios.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}") stopMenu = False elif resmenuRegistro == 9: self._log.info("Saliendo")
def registroLibros(self): self.__log.info("Ingresando al Módulo de Registro") opcionesRegistroLibros = { "\t- Registrar Libros": 1, "\t- Listar Libros": 2, "\t- Registrar Usuarios": 3, "\t- Listar Usuarios": 4, "\t- Registrar Biblioteca": 5, "\t- Listar Biblioteca": 6 } menuRegistroLibros = Menu("Módulo de Registro", opcionesRegistroLibros) resmenuRegistroLibros = menuRegistroLibros.mostrarMenu() stopMenu = True while stopMenu: if resmenuRegistroLibros == 1: self.__log.info("Entrando al Registro de Libros") nuevoLibro = Libro() nombreLibro = input("Escriba el nombre del libro: \n") isbnLibro = input("Escriba el ISBN del libro: \n") autores = Autor() print(f"\t Codigo\t Nombre\t Tipo") for obj in autores.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.tipo}") print("Escriba el id del Autor de la siguiente lista:") autor_idLibro = input() estados = EstadoLibro() print(f"\t Codigo\t Estado") for obj in estados.all(): print(f"\t {obj.id}\t {obj.descripcion}") print( "Escriba el id del Estado del Libro de la siguiente lista:" ) estadoLibro = input() nuevoLibro.nombre = nombreLibro nuevoLibro.isbn = isbnLibro nuevoLibro.autor_id = autor_idLibro nuevoLibro.estado_libro_id = estadoLibro nuevoLibro.save() print("Registro Completo") stopMenu = False elif resmenuRegistroLibros == 2: self.__log.info("Entrando a la Lista de libros") libros = Libro() print("\t " + str("Codigo").ljust(10) + "\t\t\t " + str("Libro").ljust(10) + "\t\t\t " + str("ISBN").ljust(10) + "\t\t\t " + str("Autor").ljust(10)) contador = 0 for obj in libros.all(): contador += 1 print("\t" + str(obj.id).ljust(10) + "\t\t\t " + str(obj.nombre).ljust(10) + "\t\t\t " + str(obj.isbn).ljust(10) + "\t\t\t " + str(obj.autor_id).ljust(10)) if contador > 0: print("Lista completa") else: print("No hay registros") stopMenu = False elif resmenuRegistroLibros == 3: self.__log.info("Entrando al Registro de Usuario") nuevo = User() nombre = input("Nombre Completo: ") correo = input("Correo: ") tipoDoc = TipoDocumento() print(f"\t Codigo\t TipoDocumento") for obj in tipoDoc.all(): print(f"\t {obj.id}\t {obj.descripcion}") tipoDoc_Id = input("Ingrese el Tipo de Documento: ") tipoDoc_Desc = input("Ingrese el número: ") estados = EstadoUser() print(f"\t Codigo\t Estado") for obj in estados.all(): print(f"\t {obj.id}\t {obj.descripcion}") estado_Id = input("Estado: ") nuevo.nombre = nombre nuevo.correo = correo nuevo.tipo_documento_id = tipoDoc_Id nuevo.documento = tipoDoc_Desc nuevo.estado_user_id = estado_Id nuevo.save() print("Registro completo") stopMenu = False elif resmenuRegistroLibros == 4: self.__log.info("Entrando a la Lista de Usuarios") Usuario = User() print("\t " + str("Codigo").ljust(10) + "\t\t\t " + str("Usuario").ljust(10) + "\t\t\t " + str("Correo").ljust(10)) contador = 0 for obj in Usuario.all(): contador += 1 print("\t" + str(obj.id).ljust(10) + "\t\t\t " + str(obj.nombre).ljust(10) + "\t\t\t " + str(obj.correo).ljust(10)) if contador > 0: print("Lista Completa") else: print("No hay nadie registrado") stopMenu = False elif resmenuRegistroLibros == 5: self.__log.info("Entrando al Registro de Bibliotecas") nuevo = Biblioteca() nombre = input("Escriba el nombre: ") direccion = input("Escriba la direccion: ") nuevo.nombre = nombre nuevo.direccion = direccion nuevo.save() print("Registro Completo") stopMenu = False elif resmenuRegistroLibros == 6: self.__log.info("Entrando a la Lista de Bibliotecas") BibliotecaN = Biblioteca() print("\t " + str("Codigo").ljust(10) + "\t\t\t " + str("Biblioteca").ljust(10) + "\t\t\t " + str("Direccion").ljust(10)) contador = 0 for obj in BibliotecaN.all(): contador += 1 print("\t" + str(obj.id).ljust(10) + "\t\t\t " + str(obj.nombre).ljust(10) + "\t\t\t " + str(obj.direccion).ljust(10)) if contador > 0: print("Lista Completa") else: print("No hay registros") stopMenu = False elif resmenuRegistroLibros == 9: self._log.info("Saliendo")