def devolverLibro(): usuario = Usuario() print(f"\t Codigo\t Nombre\t Correo\t Documento") for obj in usuario.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}\t {obj.documento}") idUsuario = int( input("Escriba el id del usuario que realiza la reserva: ")) 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}" ) idLibro = int(input("Ingrese el id del libro a reservar: ")) libro = Libro.find(idLibro) libro.estado_libro_id = 1 libro.save() biblioteca = Biblioteca() print(f"\t Codigo\t Nombre\t Dirección\t Documento") for obj in biblioteca.all(): print( f"\t {obj.id}\t {obj.nombre}\t {obj.direccion}\t {obj.documento}") idBiblioteca = int( input("Ingrese el id de la biblioteca donde se reservara: ")) prestamo = Prestamo() prestamo.usuario_id = idUsuario prestamo.libros_id = idLibro prestamo.prestado_on = str(date.today()) prestamo.bibliotecas_id = idBiblioteca prestamo.save()
def Alquilar(self): self.__log.info("Alquilar un libro") estadolibro = EstadoLibro() print(f"\t ID\t Descripcion") for obj in estadolibro.all(): print(f"\t {obj.id}\t {obj.descripcion}") if obj.descripcion == 1: libroporalquilar = Prestamo() cliente = User() print(f"\t ID\t Nombre\t CORREO\t DOCUMENTO\t ESTADO") for obj in cliente.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}\t {obj.documento}\t {obj.estado_user_id}") print("Escriba el id del cliente") cliente = input() libro = Libro() print(f"\t ID\t Nombre\t ISBN\t Autor\t Editorial\t Estado") for obj in libro.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") libro = input() DatabaseManager.table('libro').where('nombre', f'{obj.nombre}').update({'obj.estado_libro_id': 3}) biblioteca = Biblioteca() print(f"\t ID\t Nombre\t DIRECCION") for obj in biblioteca.all(): print(f"\t {obj.id}\t {obj.nombre}\t {obj.direccion}") print("Escriba el id de la biblioteca") biblioteca = input() libroporalquilar.users_id = cliente libroporalquilar.libros_id = libro libroporalquilar.bibliotecas_id = biblioteca libroporalquilar.save() objMenus = init.Inicio() objMenus.MenuInicioMenu() elif obj.descripcion == 2: print("Lo sentimos el libro que busca esta reservado") objMenus = init.Inicio() objMenus.MenuInicioMenu() elif obj.descripcion == 2: print("Lo sentimos el libro que busca no se encuentra disponible") objMenus = init.Inicio() objMenus.MenuInicioMenu()
def registroPrestamos(self): self.__log.info("Ingresando al Módulo de Prestamos") stopMenu = True while stopMenu: opcionesPrestamoLibros = { "\t- Lista de Prestamos": 1, "\t- Registrar Prestamos": 2, "\t- Devolucion de Libros": 3 } menuPrestamoLibros = Menu("Módulo de Prestamos", opcionesPrestamoLibros) resmenuPrestamoLibros = menuPrestamoLibros.mostrarMenu() if resmenuPrestamoLibros == 1: self.__log.info("Entrando a la Lista de Prestamos") PrestamoN = Prestamo() print( str("Codigo").ljust(5) + "\t " + str("Fecha Prestamo").ljust(10) + "\t " + str("Usuario").ljust(10) + "\t" + str("Biblioteca").ljust(25) + "\t " + str("Libro").ljust(7) + "\t " + str("Estado").ljust(7)) contador = 0 for obj in PrestamoN.all(): ObjUserTemp = User.find(obj.user_id) ObjLibrTemp = Libro.find(obj.libros_id) ObjBiblioTemp = Biblioteca.find(obj.bibliotecas_id) ObjEstaLibTempp = EstadoLibro.find( ObjLibrTemp.estado_libro_id) contador += 1 print( str(obj.id).ljust(5) + "\t " + str(obj.prestamo_on).ljust(10) + "\t " + str(ObjUserTemp.nombre).ljust(10) + "\t" + str(ObjBiblioTemp.nombre).ljust(25) + "\t " + str(ObjLibrTemp.nombre).ljust(7) + "\t " + str(ObjEstaLibTempp.descripcion).ljust(7)) if contador > 0: print("Lista Completa") else: print("No hay registros") stopMenu = False elif resmenuRegistroLibros == 2: self.__log.info("Registrar Prestamos") nuevo = Prestamo() UserN = User() print(f"\t Codigo\t\t\t Nombre\t\t\t Estado") for obj in UserN.all(): print( f"\t {obj.id}\t\t\t {obj.nombre}\t\t\t {obj.estado_user_id}" ) print("Escriba el id del usuario: ") usuario_id = input() LibroN = Libro() print(f"\t Codigo\t Libro") for obj in LibroN.all(): print(f"\t {obj.id}\t {obj.nombre}") print("Escriba el id del libro: ") libroId = input() BibliotecaN = Biblioteca() print(f"\t Codigo\t Biblioteca") for obj in BibliotecaN.all(): print(f"\t {obj.id}\t {obj.nombre}") print("Escriba el id de la Biblioteca: ") bibliotecaId = input() nuevo.user_id = usuario_id nuevo.libros_Id = libroId nuevo.prestamo_on = datetime.now() nuevo.bibliotecas_id = bibliotecaId nuevo.save() nuevoD = Libro.find(nuevo.libros_Id) nuevoD.estado_libro_id = 3 nuevoD.save() print("Registro completo") stopMenu = False elif resmenuRegistroLibros == 3: self.__log.info("Devolución de Libros") librosTemporal = [] libroNN = Libro.where('estado_libro_id', '=', '3').get() for libt in libroNN.all(): idlibTemp = libt.id PrestamoN = Prestamo.where('libros_id', '=', f"{idlibTemp}").get() for presIn in PrestamoN.all(): temporalDato = { "id": str(presIn.id), "user_id": str(presIn.user_id), "libros_id": str(presIn.libros_id), "prestamo_on": str(presIn.prestamo_on), "bibliotecas_id": str(presIn.bibliotecas_id) } librosTemporal.append(temporalDato) contaDD = 0 print(f"\t Codigo\t\t " + str("Libros").ljust(15) + "\t\t Fecha\t\t Bibliotecas") for obj in librosTemporal: contaDD += 1 LibTempN = Libro.find(obj["libros_id"]) BibliTempN = Biblioteca.find(obj["bibliotecas_id"]) ididD = str(obj["id"]) prest = str(obj["prestamo_on"]) print(f"\t{ididD}\t\t " + str(LibTempN.nombre).ljust(15) + "\t\t" + prest + "\t\t" + BibliTempN.nombre) if contaDD > 0: print("Escriba el id del Préstamo") Prestamo_NID = input() nuevoPresD = Prestamo.find(Prestamo_NID) nuevoD = Libro.find(nuevoPresD.libros_id) nuevoD.estado_libro_id = 1 nuevoD.save() print(f"Devolucion correcta") else: print("No hay registros") stopMenu = False elif resmenuRegistroLibros == 9: stopMenu = False self.__log.info("Saliendo")
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
class LibroController: def __init__(self): self.libro = Libro() self.usuario = Usuario() self.prestamo = Prestamo() self.usuario_controller = UsuarioController() self.salir = False def menu(self): try: while True: print(''' ================== Libros ================== ''') lista_menu = ["Listar", "Buscar", "Crear", "Salir"] respuesta = Menu(lista_menu).show() if respuesta == 1: self.all_libros() elif respuesta == 2: self.search_libro() elif respuesta == 3: self.insert_libro() else: self.salir = True break except Exception as e: print(f'{str(e)}') def all_libros(self): try: print(''' ========================== Listar Libros ========================== ''') libros = self.libro.get_libros('id_libro') print( print_table(libros, ['ID', 'Codigo', 'Titulo', 'Editorial', 'Stock'])) input('\nPresiona una tecla para continuar...') except Exception as e: print(f'{str(e)}') def search_libro(self): print(''' ======================== Buscar Libro ======================== ''') try: cod_libro = input_data("Ingrese el CODIGO del libro >> ") libro = self.libro.get_libro({'codigo': cod_libro}) print( print_table(libro, ['ID', 'Codigo', 'Titulo', 'Editorial', 'Stock'])) if libro: if question( '¿Deseas dar mantenimiento, alquilar o devolver el libro?' ): opciones = [ 'Editar', 'Eliminar', 'Alquilar', 'Registrar Devolucion', 'Salir' ] respuesta = Menu(opciones).show() if respuesta == 1: self.update_libro(cod_libro) elif respuesta == 2: self.delete_libro(cod_libro) elif respuesta == 3: self.alquilar_libro(cod_libro) elif respuesta == 4: self.devolucion_libro(cod_libro) except Exception as e: print(f'{str(e)}') input('\nPresiona una tecla para continuar...') def devolucion_libro(self, cod_libro): #Obtiene Libro libro = self.libro.get_libro({'codigo': cod_libro}) self.usuario_controller.all_usuarios() while True: codigo = input_data( 'Ingrese el Codigo del Usuario que Alquilo el libro >> ') #Obtiene User user = self.usuario.get_usuario({'codigo': codigo}) if user: prestamos = self.prestamo.get_prestamo({ 'id_usuario': user[0], 'id_libro': libro[0], 'devuelto': False }) print(''' ====================================== Lista de Prestamos del Usuario ====================================== ''') print( print_table(prestamos, [ 'ID Prestamo', 'ID Libro', 'ID Usuario', 'Fecha Prestamo', 'Fecha Devolucion', 'Devuelto' ])) input('\nPresiona una tecla para continuar...') while True: id_prestamo = input_data( 'Ingrese el Id del Prestamo que desea registrar la devolucion >> ', 'int') prest = self.prestamo.get_prestamo( {'id_prestamo': id_prestamo}) if prest: now = datetime.now() fecha_devolucion = str(now.year) + '-' + str( now.month) + '-' + str(now.day) + ' ' + str( now.hour) + ':' + str(now.minute) + ':' + str( now.second) self.prestamo.update_prestamo( {'id_prestamo': id_prestamo}, { 'fecha_devolucion': fecha_devolucion, 'devuelto': True }) self.update_stock_of_devolucion_libro_by_codlibro( cod_libro) print(f''' ========================================================================== Libro {libro[2]} Devuelto por {user[4]} {user[5]} {user[6]} con Exito ========================================================================== ''') prestamos_2 = self.prestamo.get_prestamo({ 'id_usuario': user[0], 'id_libro': libro[0], }) print( print_table(prestamos_2, [ 'ID Prestamo', 'ID Libro', 'ID Usuario', 'Fecha Prestamo', 'Fecha Devolucion', 'Devuelto' ])) break break def alquilar_libro(self, cod_libro): if (self.valida_disponibilidad_by_codlibro(cod_libro)): print(f'\n Libro Disponible para Alquiler \n') #Obtiene Libro libro = self.libro.get_libro({'codigo': cod_libro}) self.usuario_controller.all_usuarios() while True: codigo = input_data( 'Ingrese el Codigo de uno de los Usuario que Alquilara del libro >> ' ) #Obtiene User user = self.usuario.get_usuario({'codigo': codigo}) if user: now = datetime.now() fecha_prestamo = str(now.year) + '-' + str( now.month) + '-' + str(now.day) + ' ' + str( now.hour) + ':' + str(now.minute) + ':' + str( now.second) self.prestamo.insert_prestamo({ 'id_usuario': user[0], 'id_libro': libro[0], 'fecha_prestamo': fecha_prestamo, 'devuelto': False }) self.update_stock_of_alquiler_libro_by_codlibro(cod_libro) print(f''' ========================================================================== Libro {libro[2]} alquilado a {user[4]} {user[5]} {user[6]} con Exito ========================================================================== ''') break else: print(''' ================================ Libro sin Stock ================================ ''') def insert_libro(self): titulo = input_data('Ingrese el titulo del libro >> ') editorial = input_data('Ingrese la editorial del libro >> ') stock = input_data('Ingrese el Stock del libro >> ', 'int') codigo = genera_codigo_by_texto(titulo) self.libro.insert_libro({ 'codigo': codigo, 'titulo': titulo, 'editorial': editorial, 'stock': stock }) print(''' ================================ Nuevo libro agregado ================================ ''') self.all_libros() def update_libro(self, cod_libro): titulo = input_data('Ingrese el Nuevo titulo del libro >> ') editorial = input_data('Ingrese la Nueva editorial del libro >> ') stock = input_data('Ingrese el nuevo Stock del libro >> ', 'int') self.libro.update_libro({'codigo': cod_libro}, { 'titulo': titulo, 'editorial': editorial, 'stock': stock }) print(''' ============================ Libro Actualizado ============================ ''') def delete_libro(self, cod_libro): self.libro.delete_libro({'codigo': cod_libro}) print(''' ========================= Libro Eliminado ========================= ''') def update_stock_by_codlibro(self, cod_libro, stock): self.libro.update_libro({'codigo': cod_libro}, {'stock': stock}) return True def obtiene_stock_by_codlibro(self, cod_libro): libro = self.libro.get_libro({'codigo': cod_libro}) if libro: return libro[4] return 0 def valida_disponibilidad_by_codlibro(self, cod_libro): stock = int(self.obtiene_stock_by_codlibro(cod_libro)) if stock > 0: return True return False def update_stock_of_alquiler_libro_by_codlibro(self, cod_libro): if self.valida_disponibilidad_by_codlibro(cod_libro): stock = int(self.obtiene_stock_by_codlibro(cod_libro)) self.update_stock_by_codlibro(cod_libro, stock - 1) return True return False def update_stock_of_devolucion_libro_by_codlibro(self, cod_libro): stock = int(self.obtiene_stock_by_codlibro(cod_libro)) self.update_stock_by_codlibro(cod_libro, stock + 1) return True
def __init__(self): self.libro = Libro() self.usuario = Usuario() self.prestamo = Prestamo() self.usuario_controller = UsuarioController() self.salir = False
def execute_modulo(self, ans): clear() if (ans == '1'): pass # print("Ingrese la información solicitada") # id_doc=input("Documento del usuario: ") # records=models.user.User.where('documento','=',id_doc).get() # for record in records: # print(record.id) elif (ans == '2'): print('Ingrese la informacion solicitada') id_doc_urs = input(color.BOLD + "Id documento del usuario: " + color.END) userconx = models.user.Users() run = True while run: try: "user = db.table('users').where('name', 'John').pluck('name')" record_urs = userconx.where('documento', id_doc_urs).pluck('documento') print(record_urs) id_user = record_urs.id break except Exception as error: print(error) print(color.BOLD + 'Opcion incorrecta' + color.END) clear() libroconx = models.libro.Libro records_libro = libroconx.all() record_list = [] for record in records_libro: record_dict = { 'Id libro': record.id, 'Titulo': record.nombre, 'ISBN': record.isbn } record_list.append(record_dict) utils.contenedor.contenedor(record_list) while run: try: print("") id_libro = input('Id libro: ') libroconx.where('id', int(id_libro)).first() break except: print('Opcion incorrecta') clear() bibconx = models.biblioteca.Biblioteca records_bib = bibconx.all() bib_list = [] for record in records_bib: record_dict = { 'Id biblioteca': record.id, 'Nombre de la biblioteca': record.nombre, 'Dirección': record.direccion } bib_list.append(record_dict) utils.contenedor.contenedor(bib_list) run = True while run: try: id_biblioteca = input(color.BOLD + "Id biblioteca: " + color.END) bibconx.where('id', int(id_biblioteca)).first() break except: print('Opcion incorrecta') clear() print("Seguro que deseas agregar la siguiente información: ") ans = ("Respuesta(Y/N): ") if (ans == 'Y'): print("") prtconx = Prestamo() prtconx.user_id = id_user prtconx.libros_id = id_libro prtconx.prestado_on = date.today() prtconx.bibliotecas_id = id_biblioteca prtconx.save() print("Se registro el prestamo") elif (ans == '3'): pass elif (ans == '4'): pass
def registroPrestamos(self): self.__log.info("Ingresando al menu de Prestamos") opcionesPrestamo = { "\t- Registrar Prestamo": 1, "\t- Registrar Devolucion": 2 } menuPrestamo = Menu("Prestamo de Libros", opcionesPrestamo) resmenuPrestamo = menuPrestamo.mostrarMenu() stopMenu = True while stopMenu: if resmenuPrestamo == 1: self.__log.info("Entrando al prestamo de libros") usuario = User() numDocumento = input("Ingrese su numero de documento: ") try: listaUser = [] for obj in usuario.all(): a = [ obj.id, obj.nombre, obj.documento, obj.estado_user_id ] listaUser.append(a) aaa = False i = 0 while aaa == False: if listaUser[i][2] == numDocumento: aaa = True user_id = listaUser[i][0] name = listaUser[i][1] resultado = listaUser[i][3] estadoUser = EstadoUser() listaEstadoUser = [] for obj in estadoUser.all(): a = [obj.id, obj.descripcion] listaEstadoUser.append(a) bbb = False j = 0 while bbb == False: if listaEstadoUser[j][0] == resultado: est_User = listaEstadoUser[j][1] if est_User == "Inactivo" or est_User == "Pendiente Aprobacion": print("Su estado es: ", est_User, "no puede retirar libros") stopMenu = False elif est_User == "Activo": print("Bienvenido ", name, "su estado de usuario es: ", est_User) libros = Libro() nombreLibro = input( "Ingrese el nombre del libro: ") try: guiaLibros = [] for obj in libros.all(): a = [ obj.id, obj.nombre, obj.estado_libro_id ] guiaLibros.append(a) ccc = False i = 0 while ccc == False: if guiaLibros[i][ 1] == nombreLibro: libro_id = guiaLibros[i][0] resultado1 = guiaLibros[i][ 2] ccc = True estadoLibro = EstadoLibro() estadoLibros = [] for obj in estadoLibro.all( ): a = [ obj.id, obj.descripcion ] estadoLibros.append(a) bbb = False j = 0 while bbb == False: if estadoLibros[j][ 0] == resultado1: est_Libros = estadoLibros[ j][1] if est_Libros == "Disponible": print( "El libro, se encuentra ", est_Libros) est_Libros = "Prestado" prestamo = Prestamo( ) prestamo.user_id = user_id prestamo.libros_id = libro_id prestamo.prestado_on = datetime.now( ) prestamo.bibliotecas_id = 1 prestamo.save() stopMenu = False print( "El registro del prestamo, se realizo con exito" ) elif est_Libros == "Reservado" or est_Libros == "Prestado": print( "El libro se encuentra: ", est_Libros) stopMenu = False else: print( "digito mal" ) stopMenu = False bbb = True else: j = j + 1 else: i = i + 1 except: print("El libro no existe") stopMenu = False else: print("Digito mal") stopMenu = False bbb = True else: j = j + 1 else: i = i + 1 except: print("ALGO FALLO EN EL PROGRAMA") stopMenu = False elif resmenuPrestamo == 2: libros = Libro() isbnLibro = input("Ingrese el ISBN del libro a devolver: ") try: listaLibros = [] for obj in libros.all(): a = [obj.id, obj.nombre, obj.isbn] listaLibros.append(a) aaa = False i = 0 while aaa == False: if listaLibros[i][2] == isbnLibro: idLibro = listaLibros[i][0] prestamo = Prestamo() listaPrestamos = [] for obj in libros.all(): a = [ obj.id, obj.user_id, obj.libros_id, obj.prestado_on, obj.bibliotecas_id ] listaPrestamos.append(a) bbb = False j = 0 while bbb == False: if listaPrestamos[i][2] == idLibro: prestamo.user_id = listaPrestamos[i][1] prestamo.libros_id = listaPrestamos[i][2] prestamo.prestado_on = datetime.now() prestamo.bibliotecas_id = listaPrestamos[ i][4] prestamo.save() stopMenu = False bbb = True else: j = j + 1 aaa = True else: i = i + 1 except: print( "El libro no existe o no está registrado en la biblioteca" ) stopMenu = False elif resmenuPrestamo == 9: self._log.info("Saliendo") stopMenu = False