def __init__(self): self.currentMenu = [None, None] self.page = 1 self.per_page = 10 self.CUI = CUI("Reader model menu") self.readerController = ReaderController() self.CUI.addField('Add Reader', lambda: self.__addReaders()) self.CUI.addField('Generate rows', lambda: self.__generateRows()) self.CUI.addField('Readers', lambda: self.__getReaders())
def __init__(self): self.currentMenu = [None, None] self.page = 1 self.per_page = 10 self.CUI = CUI("Book model menu") self.bookController = BookController() self.CUI.addField('Add Book', lambda: self.__addBooks()) self.CUI.addField('Generate rows', lambda: self.__generateRows()) self.CUI.addField('Books', lambda: self.__getBooks())
def __init__(self): self.currentMenu = [None, None] self.page = 1 self.per_page = 10 self.CUI = CUI("Exemplar model menu") self.exemplarController = ExemplarController() self.CUI.addField('Add Exemplar', lambda: self.__addExemplars()) self.CUI.addField('Generate rows', lambda: self.__generateRows()) self.CUI.addField('Exemplars', lambda: self.__getExemplars())
def __init__(self): self.currentMenu = None self.page = 1 self.per_page = 10 self.reader_id = None self.book_id = None self.exemplar_id = None self.CUI = CUI("Search menu") self.searchController = SearchController() self.CUI.addField('Search all books of the reader', lambda: self.__getBooksByReader()) self.CUI.addField('Search readers of the book', lambda: self.__getReadersByBook()) self.CUI.addField( 'Search all exemplars which id less than input value:', lambda: self.__getSomeExemplars())
def __getReadersByBook(self): searchMenu = CUI('Readers of the book') self.currentMenu = searchMenu try: book_id = int(input('Enter book id: ')) if not (isinstance(book_id, int) and book_id > 0): raise Exception('Invalid input') startTime = time.time() allRecords = self.searchController.getReadersByBook(book_id) endTime = time.time() searchMenu.setError('\nElapsed time: ' + str(endTime - startTime)[:9] + 's' '\nRows num: ' + str(len(allRecords))) searchMenu.addField('<Book id> | Reader name | Reader surname') for record in allRecords: searchMenu.addField(f"<{record[0]}> {record[1]} {record[2]}") except Exception as err: searchMenu.setError(str(err)) searchMenu.run('Return to prev menu')
def __getBooksByReader(self): searchMenu = CUI('Books which read by reader') self.currentMenu = searchMenu try: reader_id = int(input('Enter book id: ')) if not (isinstance(reader_id, int) and reader_id > 0): raise Exception('Invalid input') startTime = time.time() allRecords = self.searchController.getBooksByReader(reader_id) endTime = time.time() searchMenu.setError('\nElapsed time: ' + str(endTime - startTime)[:9] + 's' '\nRows num: ' + str(len(allRecords))) if self.page < math.ceil(len(allRecords) / self.per_page): searchMenu.addField( 'NEXT', lambda: self.__changePageParams( self.page + 1, self.per_page)) if self.page > 1: searchMenu.addField( 'PREV', lambda: self.__changePageParams( self.page - 1, self.per_page)) searchMenu.addField('<ID> | Book name | Publishing | Year') for record in allRecords: searchMenu.addField( f"<{record[0]}> {record[1]} {record[2]} {record[3]}") except Exception as err: searchMenu.setError(str(err)) searchMenu.addField('Return to prev menu', lambda: self.__exitMenu()) searchMenu.run(False)
def __getSomeExemplars(self): searchMenu = CUI('Exemplars which id less than input value') self.currentMenu = searchMenu try: exemplar_id = int(input('Input value of id: ')) if not (isinstance(exemplar_id, int) and exemplar_id > 0): raise Exception('Invalid input') startTime = time.time() allRecords = self.searchController.getSomeExemplars(exemplar_id) endTime = time.time() searchMenu.setError('\nElapsed time: ' + str(endTime - startTime)[:9] + 's' '\nRows num: ' + str(len(allRecords))) searchMenu.addField('<Exemplar id> | Book id | Reader id ') for record in allRecords: searchMenu.addField(f"<{record[0]}> {record[1]} {record[2]} ") except Exception as err: searchMenu.setError(str(err)) searchMenu.run('Return to prev menu')
#!/usr/bin/python import socket import sys from chessboard import Chessboard from cui import CUI chessboard = Chessboard('xinuc.org', 7387) cui = CUI() while 1: coord = chessboard.getRaw() if (len(coord)==10): print chessboard.rawBoard chessboard.parseCoord(coord) cui.printBoard(chessboard.board)
class ReaderView: def __init__(self): self.currentMenu = [None, None] self.page = 1 self.per_page = 10 self.CUI = CUI("Reader model menu") self.readerController = ReaderController() self.CUI.addField('Add Reader', lambda: self.__addReaders()) self.CUI.addField('Generate rows', lambda: self.__generateRows()) self.CUI.addField('Readers', lambda: self.__getReaders()) def run(self): self.CUI.run() def __generateRows(self): try: rowsNum = int(input('Enter rows num: ')) if not (isinstance(rowsNum, int) and rowsNum > 0): raise Exception('Invalid input') self.CUI.setError(' Please wait! Rows are generating... ') time = self.readerController.generateRows(rowsNum) self.CUI.setError(' Rows generated! Elapsed time: ' + time) except Exception as error: self.CUI.setError(str(error)) def __addReaders(self): try: result = self.readerController.add() if isinstance(result, bool) and not result: raise Exception('Inccorect values') else: self.CUI.setError('New Reader id: ' + str(result)) except Exception as err: self.CUI.setError(str(err)) def __changePageParams(self, page: int, per_page: int): self.page = page self.per_page = per_page self.currentMenu[0].stop() self.__getReaders() def __getReaders(self): readersMenu = CUI('Readers') self.currentMenu[0] = readersMenu try: if self.page < math.ceil(self.readerController.getCount() / self.per_page): readersMenu.addField('NEXT', lambda: self.__changePageParams(self.page + 1, self.per_page)) if self.page > 1: readersMenu.addField('PREV', lambda: self.__changePageParams(self.page - 1, self.per_page)) readers = self.readerController.getAll(self.page, self.per_page) for reader in readers: readersMenu.addField(f"<{reader.reader_id}>{reader.name}", lambda reader_id=reader.reader_id: self.__getReader(reader_id)) except Exception as err: readersMenu.setError(str(err)) readersMenu.run('Return to main menu') def __updateReader(self, id: int): if self.readerController.update(id): self.currentMenu[1].stop() self.__getReader(id) else: self.currentMenu[1].setError('Incorrect update values') def __deleteReader(self, id: int): self.readerController.delete(id) self.currentMenu[1].stop() self.__supportCUIFunc() def __supportCUIFunc(self): self.currentMenu[1].stop() self.__changePageParams(self.page, self.per_page) def __getReader(self, id: int): readerMenu = CUI('Reader menu') self.currentMenu[1] = readerMenu try: reader: Reader = self.readerController.getById(id) values = reader.getValues().split(',') keys = reader.getKeys().split(',') for i in range(len(keys)): if i == 0: continue readerMenu.addField(keys[i] + ' : ' + values[i]) readerMenu.addField('DELETE', lambda: self.__deleteReader(reader.reader_id)) readerMenu.addField('UPDATE', lambda: self.__updateReader(reader.reader_id)) readerMenu.addField('Return to prev menu', lambda: self.__supportCUIFunc()) except Exception as err: readerMenu.setError(str(err)) readerMenu.run(False)
def __getReaders(self): readersMenu = CUI('Readers') self.currentMenu[0] = readersMenu try: if self.page < math.ceil(self.readerController.getCount() / self.per_page): readersMenu.addField('NEXT', lambda: self.__changePageParams(self.page + 1, self.per_page)) if self.page > 1: readersMenu.addField('PREV', lambda: self.__changePageParams(self.page - 1, self.per_page)) readers = self.readerController.getAll(self.page, self.per_page) for reader in readers: readersMenu.addField(f"<{reader.reader_id}>{reader.name}", lambda reader_id=reader.reader_id: self.__getReader(reader_id)) except Exception as err: readersMenu.setError(str(err)) readersMenu.run('Return to main menu')
def __getBook(self, id: int): bookMenu = CUI('Book menu') self.currentMenu[1] = bookMenu try: book: Book = self.bookController.getById(id) values = book.getValues().split(',') keys = book.getKeys().split(',') for i in range(len(keys)): bookMenu.addField(keys[i] + ' : ' + values[i]) bookMenu.addField('DELETE', lambda: self.__deleteBook(book.book_id)) bookMenu.addField('UPDATE', lambda: self.__updateBook(book.book_id)) bookMenu.addField('Return to prev menu', lambda: self.__supportCUIFunc()) except Exception as err: bookMenu.setError(str(err)) bookMenu.run(False)
def __getBooks(self): booksMenu = CUI('Books') self.currentMenu[0] = booksMenu try: if self.page < math.ceil( self.bookController.getCount() / self.per_page): booksMenu.addField( 'NEXT', lambda: self.__changePageParams( self.page + 1, self.per_page)) if self.page > 1: booksMenu.addField( 'PREV', lambda: self.__changePageParams( self.page - 1, self.per_page)) books = self.bookController.getAll(self.page, self.per_page) for book in books: booksMenu.addField( f"<{book.book_id}>{book.name}", lambda book_id=book.book_id: self.__getBook(book_id)) except Exception as err: booksMenu.setError(str(err)) booksMenu.run('Return to main menu')
def __getExemplar(self, id: int): exemplarMenu = CUI('Exemplar menu') self.currentMenu[1] = exemplarMenu try: exemplar: Exemplar = self.exemplarController.getById(id) values = exemplar.getValues().split(',') keys = exemplar.getKeys().split(',') for i in range(len(keys)): exemplarMenu.addField(keys[i] + ' : ' + values[i]) exemplarMenu.addField( 'DELETE', lambda: self.__deleteExemplar(exemplar.exemplar_id)) exemplarMenu.addField( 'UPDATE', lambda: self.__updateExemplar(exemplar.exemplar_id)) exemplarMenu.addField('Return to prev menu', lambda: self.__supportCUIFunc()) except Exception as err: exemplarMenu.setError(str(err)) exemplarMenu.run(False)
class SearchView: def __init__(self): self.currentMenu = None self.page = 1 self.per_page = 10 self.reader_id = None self.book_id = None self.exemplar_id = None self.CUI = CUI("Search menu") self.searchController = SearchController() self.CUI.addField('Search all books of the reader', lambda: self.__getBooksByReader()) self.CUI.addField('Search readers of the book', lambda: self.__getReadersByBook()) self.CUI.addField( 'Search all exemplars which id less than input value:', lambda: self.__getSomeExemplars()) def run(self): self.CUI.run() def __changePageParams(self, page: int, per_page: int): self.page = page self.per_page = per_page self.currentMenu.stop() self.__getBooksByReader() def __exitMenu(self): self.reader_id = None self.book_id = None self.exemplar_id = None self.page = 1 self.per_page = 10 self.currentMenu.stop() def __getBooksByReader(self): searchMenu = CUI('Books which read by reader') self.currentMenu = searchMenu try: reader_id = int(input('Enter book id: ')) if not (isinstance(reader_id, int) and reader_id > 0): raise Exception('Invalid input') startTime = time.time() allRecords = self.searchController.getBooksByReader(reader_id) endTime = time.time() searchMenu.setError('\nElapsed time: ' + str(endTime - startTime)[:9] + 's' '\nRows num: ' + str(len(allRecords))) if self.page < math.ceil(len(allRecords) / self.per_page): searchMenu.addField( 'NEXT', lambda: self.__changePageParams( self.page + 1, self.per_page)) if self.page > 1: searchMenu.addField( 'PREV', lambda: self.__changePageParams( self.page - 1, self.per_page)) searchMenu.addField('<ID> | Book name | Publishing | Year') for record in allRecords: searchMenu.addField( f"<{record[0]}> {record[1]} {record[2]} {record[3]}") except Exception as err: searchMenu.setError(str(err)) searchMenu.addField('Return to prev menu', lambda: self.__exitMenu()) searchMenu.run(False) def __getReadersByBook(self): searchMenu = CUI('Readers of the book') self.currentMenu = searchMenu try: book_id = int(input('Enter book id: ')) if not (isinstance(book_id, int) and book_id > 0): raise Exception('Invalid input') startTime = time.time() allRecords = self.searchController.getReadersByBook(book_id) endTime = time.time() searchMenu.setError('\nElapsed time: ' + str(endTime - startTime)[:9] + 's' '\nRows num: ' + str(len(allRecords))) searchMenu.addField('<Book id> | Reader name | Reader surname') for record in allRecords: searchMenu.addField(f"<{record[0]}> {record[1]} {record[2]}") except Exception as err: searchMenu.setError(str(err)) searchMenu.run('Return to prev menu') def __getSomeExemplars(self): searchMenu = CUI('Exemplars which id less than input value') self.currentMenu = searchMenu try: exemplar_id = int(input('Input value of id: ')) if not (isinstance(exemplar_id, int) and exemplar_id > 0): raise Exception('Invalid input') startTime = time.time() allRecords = self.searchController.getSomeExemplars(exemplar_id) endTime = time.time() searchMenu.setError('\nElapsed time: ' + str(endTime - startTime)[:9] + 's' '\nRows num: ' + str(len(allRecords))) searchMenu.addField('<Exemplar id> | Book id | Reader id ') for record in allRecords: searchMenu.addField(f"<{record[0]}> {record[1]} {record[2]} ") except Exception as err: searchMenu.setError(str(err)) searchMenu.run('Return to prev menu')
def __getReader(self, id: int): readerMenu = CUI('Reader menu') self.currentMenu[1] = readerMenu try: reader: Reader = self.readerController.getById(id) values = reader.getValues().split(',') keys = reader.getKeys().split(',') for i in range(len(keys)): if i == 0: continue readerMenu.addField(keys[i] + ' : ' + values[i]) readerMenu.addField('DELETE', lambda: self.__deleteReader(reader.reader_id)) readerMenu.addField('UPDATE', lambda: self.__updateReader(reader.reader_id)) readerMenu.addField('Return to prev menu', lambda: self.__supportCUIFunc()) except Exception as err: readerMenu.setError(str(err)) readerMenu.run(False)
import sys from cui import CUI from views.bookView import BookView from views.exemplarView import ExemplarView from views.readerView import ReaderView from views.searchView import SearchView if __name__ == '__main__': main = CUI() main.addField('Books', lambda: BookView().run()) main.addField('Exemplar', lambda: ExemplarView().run()) main.addField('Reader', lambda: ReaderView().run()) main.addField('Search', lambda: SearchView().run()) # main.addField('Search ', lambda: SearchView().run()) main.run() #from consolemenu import * #from consolemenu.items import * # con = psycopg2.connect( # database="library", # user="******", # password="******") # cur = con.cursor() # cur.execute("insert into public.\"Books\"(name, author,year,publishing,place) values('north','Tor',1999,'Time','Dnipro')") # cur.execute("select book_id, name, author, year, publishing, place from public.\"Books\"") # rows = cur.fetchall() #for r in rows: # print(f"book_id: {r[0]}, name: {r[1]}, author: {r[2]}, year: {r[3]}, publishing: {r[4]} , place: {r[5]} " ) # con.commit() # cur.close() # con.close()
def __getExemplars(self): exemplarsMenu = CUI('Exemplar') self.currentMenu[0] = exemplarsMenu try: if self.page < math.ceil( self.exemplarController.getCount() / self.per_page): exemplarsMenu.addField( 'NEXT', lambda: self.__changePageParams( self.page + 1, self.per_page)) if self.page > 1: exemplarsMenu.addField( 'PREV', lambda: self.__changePageParams( self.page - 1, self.per_page)) exemplars = self.exemplarController.getAll(self.page, self.per_page) for exemplar in exemplars: exemplarsMenu.addField(f"<{exemplar.exemplar_id}>", lambda exemplar_id=exemplar.exemplar_id: self.__getExemplar(exemplar_id)) except Exception as err: exemplarsMenu.setError(str(err)) exemplarsMenu.run('Return to main menu')