def delete(self, editorial_id): errores = [] errores.append("Se elimino la editorial correctamente") editorial = Editorial.eliminar(editorial_id) editoriales = Editorial.all() return render_template('editoriales/index.html', editoriales=editoriales, errores=errores)
def new(self): errores = [] if request.method == 'GET': return render_template('editoriales/new.html') elif request.method == 'POST': if Editorial.existe_editorial_con_nombre(request.form["nombre"]): errores.append( "Ya existe una editorial con el nombre especificado.") return render_template('editoriales/new.html', errores=errores) else: Editorial.crear(request.form["nombre"]) return self.index()
def modificarEditorial(): 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}") idToUpdate = int(input("Ingrese el id de la editorial a editar: ")) editorial = Editorial.find(idToUpdate) editorial.nombre = input("Escriba el nuevo nombre de la editorial: ") editorial.correo = input("Escriba el nuevo correo de la editorial: ") editorial.dirección = input("Escriba la nueva dirección de la editorial: ") editorial.save()
def insertarEditorial(): 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}") editorial.nombre = input("Escriba el nombre de la editorial: ") editorial.correo = input("Escriba el correo de la editorial: ") editorial.dirección = input("Escriba la dirección de la editorial: ") editorial.save()
def catalogo_todos(self, libros): autores = Author.all() generos = Genero.all() editoriales = Editorial.all() return render_template('libros/catalogo.html', libros=libros, autores=autores, generos=generos, editoriales=editoriales)
def new(self, errores=[], old={}): editoriales = Editorial.all() generos = Genero.all() autores = Author.all_active() return render_template('libros/agregar.html', editoriales=editoriales, generos=generos, autores=autores, errores=errores, old=old)
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()
def edit(self): errores = [] if request.method == 'GET': editorial = Editorial.encontrar_por_id( request.args.get("editorial_id")) return render_template('editoriales/edit.html', editorial=editorial) elif request.method == 'POST': if Editorial.existe_editorial_con_nombre(request.form["nombre"]): editorial = Editorial.encontrar_por_id( request.args.get("editorial_id")) errores.append( "Ya existe una editorial con el nombre especificado.") return render_template('editoriales/edit.html', editorial=editorial, errores=errores) else: Editorial.edit(request.form["nombre"], request.form["id"]) return self.index()
def edit(self, libro_id, errores=[]): libro = Libro.id(libro_id) editoriales = Editorial.all() generos = Genero.all() autores = Author.all_active() return render_template('libros/editar.html', libro=libro, editoriales=editoriales, generos=generos, autores=autores, errores=errores)
def onSave(self): nombre = self.ui.edit_nombre.text() pais = self.ui.edit_pais.text() editorial = Editorial(nombre, pais) if self.editorial is None: editorial.save() else: editorial._key = self.editorial['nombre'] editorial.update() self.done(0)
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 eliminarEditorial(): 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}") idToDelete = int(input("Ingrese el id de la editorial a eliminar: ")) editorial = Editorial.find(idToDelete) editorial.delete()
def libro(self, libro_id): try: int(libro_id) except: abort(404) libro = Libro.id(libro_id) autor = Author.id(libro["autor"]) genero = Genero.encontrar_por_id(libro["genero"]) editorial = Editorial.id(libro["editorial"]) reseñas = Reseña.reseñas_de_un_libro_con_id(libro_id) capitulos = Capitulo.libro(libro_id) perfil_tiene_reseña = False perfil_leyo_el_libro = False cantidad = Libro.obtenerCantidadDeReseñasDeUnLibro( libro_id)[0]['cantidad'] total = Libro.obtenerCalificacionTotalDeUnLibro(libro_id)[0]['total'] promedio = 0 if (cantidad != 0): promedio = round((total / cantidad), 2) if "perfil_id" in session and not session["admin"]: perfil_id = session["perfil_id"] leido = Libro.leido(libro_id, perfil_id) leyendo = Libro.leyendo(libro_id, perfil_id) favorito = Libro.favorito(libro_id, perfil_id) if Libro.el_perfil_dio_una_reseña_al_libro(session['perfil_id'], libro_id): perfil_tiene_reseña = True if Libro.el_perfil_leyo_el_libro(session['perfil_id'], libro_id): perfil_leyo_el_libro = True else: leido = None favorito = None leyendo = None return render_template('libros/show.html', libro=libro, autor=autor, genero=genero, editorial=editorial, capitulos=capitulos, leido=leido, favorito=favorito, leyendo=leyendo, reseñas=reseñas, perfil_tiene_reseña=perfil_tiene_reseña, perfil_leyo_el_libro=perfil_leyo_el_libro, promedio=promedio)
def index(self, perfil_id=None): if perfil_id != None: try: int(perfil_id) session["perfil_id"] = perfil_id except: pass libros = Libro.all() editoriales = Editorial.all() generos = Genero.all() autores = Author.all() cant = 0 mostrar = [] for libro in libros: if cant < 6: mostrar.append(libro) cant = cant + 1 return render_template('index.html', libros=mostrar, editoriales=editoriales, generos=generos, autores=autores)
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 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 RegistroEditorial(self): menuRegisEdit = True __log = log("Ingresando al Registro de las editoriales") self.__log.info("Ingresando al Registro de las editoriales") opcionesRegisEditorial = { "Registrar Editorial": 1, "Listar Editoriales": 2, "Eliminar Editoriales": 3 } MenuRegisEditorial = Menu("Menu Modulo Libros", opcionesRegisEditorial) regisEditoriales = MenuRegisEditorial.mostrarMenu() menuRegisEdit = True while menuRegisEdit: if (regisEditoriales == 1): nuevaEditorial = Editorial() nombreEditorial = input("escriba el nombre de la editorial \n") nuevaEditorial.nombre = nombreEditorial nuevaEditorial.save() menuRegisEdit = False elif (regisEditoriales == 2): editorial = Editorial() print(f"\t ID\t NOMBRE") for obj in editorial.all(): print(f"\t {obj.id}\t {obj.nombre}") input("Regresar???") program.utils.Menu("Menu Modulo Editoriales", regisEditoriales) elif (regisEditoriales == 3): editorial = Editorial() print(f"\t ID\t NOMBRE") for obj in editorial.all(): print(f"\t {obj.id}\t {obj.nombre}") print( "Escriba el id de la editorial que se desea eliminar: \n") id = input() DatabaseManager.table('editorial').get() DatabaseManager.table('editorial').where('id', '=', f'{id}').delete() elif (regisEditoriales == 9): __log = log("Saliendo") break
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 index(self): editoriales = Editorial.all() return render_template('editoriales/index.html', editoriales=editoriales)
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()