class ShowUsersPage(npyscreen.ActionForm):#, npyscreen.FormWithMenus): def create(self): self.__class__.CANCEL_BUTTON_TEXT = "Exit" self.__class__.OK_BUTTON_TEXT = "Refresh" self.__class__.CANCEL_BUTTON_BR_OFFSET = (2, 15) self.add_handlers({ ord("s") : self.on_search, ord("S") : self.on_search, "^A" : self.add_user, }) self.add(npyscreen.TitleText, name= "CTR + A or a - add; e - edit; d - delete; i - info; b - show books;CTR + S - search; m - send mail", editable = False) self.db = DataBaseAccess() self.search = self.add(npyscreen.TitleText, name = "Search: ", labelColor = "STANDOUT") self.search.add_handlers({ curses.KEY_ENTER : self.on_search, "^S" : self.on_search, }) self.grid = self.add(npyscreen.GridColTitles, rely = RELY + 3, slow_scroll = True, always_show_cursor = False, select_whole_line = True, col_titles = ['PESEL', 'Name', 'Surname']) self.grid.default_column_number = 3 self.grid.add_handlers({ ord("e") : self.edit_cell, ord("E") : self.edit_cell, ord("a") : self.add_user, ord("A") : self.add_user, ord("d") : self.del_user, ord("D") : self.del_user, ord("i") : self.info_user, ord("I") : self.info_user, ord("b") : self.books_user, ord("B") : self.books_user, ord("s") : self.grid.h_exit_up, ord("S") : self.grid.h_exit_up, "^S" : self.on_search, }) #self.grid.columns = 1 #self.grid.rows = 10 # Add menus #self.menu = self.add_menu(name = "Main menu", shortcut = "^M") #self.menu.addItemsFromList([ # ("Add user", self.add_user) #]) self.getData() def on_cancel(self): self.parentApp.switchForm("AdminMainPage") def add_user(self, input): self.parentApp.switchForm("AddUserPage") def on_del(self, name, surname): return npyscreen.notify_yes_no(message = ("Are you sure you want to delete %s %s?" % (name, surname))) #npyscreen def del_user(self, input): if self.on_del(self.vals[self.grid.edit_cell[0]][5], self.vals[self.grid.edit_cell[0]][6]): self.db.delUser(self.vals[self.grid.edit_cell[0]][0]) self.getData() def edit_cell(self, input): cell_edit = self.grid.edit_cell self.parentApp.getForm("EditUserPage").pesel.value = self.vals[cell_edit[0]][0] self.parentApp.getForm("EditUserPage").login.value = self.vals[cell_edit[0]][1] self.parentApp.getForm("EditUserPage").passwd.value = self.vals[cell_edit[0]][2] self.parentApp.getForm("EditUserPage").passwd2.value = self.vals[cell_edit[0]][2] self.parentApp.getForm("EditUserPage").name.value = self.vals[cell_edit[0]][5] self.parentApp.getForm("EditUserPage").surname.value = self.vals[cell_edit[0]][6] adm = False if self.vals[cell_edit[0]][3] == 'True' or self.vals[cell_edit[0]][3] == 1: adm = True self.parentApp.getForm("EditUserPage").admin.value = adm self.parentApp.getForm("EditUserPage").mail.value = self.vals[cell_edit[0]][4] #f = open("EDIT.txt", "a") #f.write(str(self.parentApp.getForm("AddUserPage").val) + '\n') self.parentApp.switchForm("EditUserPage") def info_user(self, input): cell_edit = self.grid.edit_cell self.parentApp.getForm("InfoUserPage").pesel.value = self.vals[cell_edit[0]][0] self.parentApp.getForm("InfoUserPage").login.value = self.vals[cell_edit[0]][1] #self.parentApp.getForm("InfoUserPage").passwd.value = self.vals[cell_edit[0]][2] #self.parentApp.getForm("InfoUserPage").passwd2.value = self.vals[cell_edit[0]][2] self.parentApp.getForm("InfoUserPage").name.value = self.vals[cell_edit[0]][5] self.parentApp.getForm("InfoUserPage").surname.value = self.vals[cell_edit[0]][6] adm = False if self.vals[cell_edit[0]][3] == 'True' or self.vals[cell_edit[0]][3] == 1: adm = True self.parentApp.getForm("InfoUserPage").admin.value = adm self.parentApp.getForm("InfoUserPage").mail.value = self.vals[cell_edit[0]][4] self.parentApp.switchForm("InfoUserPage") def books_user(self, input): Data.ID = self.vals[self.grid.edit_cell[0]][0] self.parentApp.switchForm("ShowUsersBooksPage") def parseData(self, vals): data = [] for i in vals: a = [i[0], i[5], i[6]] data.append(a) return data def getData(self): # I have to have self.vals because I use all info about user :/ self.vals = self.db.getAllUsers() self.grid.values = self.parseData(self.vals) def on_search(self, input): self.vals = self.db.userSearch(self.search.value) self.grid.values = self.parseData(self.vals) self.grid.update()
class BorrowBookPage(npyscreen.ActionForm, npyscreen.SplitForm): def create(self): self.add(npyscreen.TitleText, name="ctr + h - pomoc", editable=False) #self.add(npyscreen.TitleText, name = "ctr + s - wyszukaj, s - przejdz do szukania", editable = False) self.__class__.OK_BUTTON_TEXT = "Exit" self.__class__.CANCEL_BUTTON_TEXT = "Confirm" d = Data() self.cost = d.COST # some common stuff self.db = DataBaseAccess() self.RELY = self.get_half_way() # first part self.searchUser = self.search = self.add(npyscreen.TitleText, name="Search: ", labelColor="STANDOUT") self.gridUser = self.add(npyscreen.GridColTitles, rely=6, slow_scroll=True, always_show_cursor=True, max_height=self.get_half_way() - 6, select_whole_line=True, col_titles=['PESEL', 'Name', 'Surname']) self.gridUser.default_column_number = 3 # second part self.searchBook = self.add(npyscreen.TitleText, rely=self.RELY + 1, name="Search: ", labelColor="STANDOUT") self.gridBook = self.add( npyscreen.GridColTitles, rely=self.RELY + 3, slow_scroll=True, always_show_cursor=True, select_whole_line=True, exit_left=False, col_titles=['Signature', 'Title', 'Author', "Year"]) self.gridBook.default_column_number = 4 # handlers self.add_handlers({ "^B": self.borrow_book, "^R": self.recive_book, "^Z": self.on_back, "^H": self.show_help, }) self.gridUser.add_handlers({ ord("s"): self.gridUser.h_exit_up, ord("S"): self.gridUser.h_exit_up, ord("b"): self.on_enterUserBorrow, ord("B"): self.on_enterUserBorrow, ord("r"): self.on_enterUserRecive, ord("R"): self.on_enterUserRecive, "^S": self.on_searchUser, }) self.gridBook.add_handlers({ ord("s"): self.gridBook.h_exit_up, ord("S"): self.gridBook.h_exit_up, ord("b"): self.borrow_book, ord("B"): self.borrow_book, ord("r"): self.recive_book, ord("R"): self.recive_book, "^S": self.on_searchBook, "^B": self.borrow_book, }) self.searchUser.add_handlers({ curses.KEY_ENTER: self.on_searchUser, "^S": self.on_searchUser, "^H": self.show_help, }) self.searchBook.add_handlers({ curses.KEY_ENTER: self.on_searchBook, "^S": self.on_searchBook, "^H": self.show_help, }) self.setDefaultData() self.gridBook.editable = False # init values def setDefaultData(self): self.gridBook.values = self.db.getBooksSearch("") self.gridUser.values = self.parseData(self.db.getAllUsers()) self.gridBook.editable = False def setInitPos(self): self.gridBook.edit_cell = [0, 0] self.gridUser.update() self.gridUser.edit_cell = [0, 0] self.gridUser.update() # I know that it is stupid... self.gridBook.h_exit_up("") self.searchBook.h_exit_up("") self.set_editing(self.gridUser) self.display() self.gridUser.h_exit_up("") def parseData(self, vals): data = [] for i in vals: a = [i[0], i[5], i[6]] data.append(a) return data def on_cancel(self): self.setDefaultData() self.setInitPos() self.searchUser.value = "" self.searchBook.value = "" def on_ok(self): self.parentApp.switchForm("AdminMainPage") def get_half_way(self): return 19 def on_searchUser(self, input): self.gridUser.values = self.parseData( self.db.userSearch(self.searchUser.value)) self.gridUser.update() #self.searchUser.h_exit_down("") #self.searchUser.update() #self.set_editing(self.gridUser) #self.display() #self.searchUser.editale = True #self.gridUser.h_exit_down("") #self.searchUser.h_exit_down("") #self.gridUser.h_exit_down("") def on_searchBook(self, input): self.cell = self.gridUser.values[0] self.gridBook.values = self.db.getUserBooksSearch( self.searchBook.value, self.cell[0]) self.gridBook.update() def on_enterUserRecive(self, input): self.cell = self.gridUser.values[self.gridUser.edit_cell[0]] self.gridUser.values = [self.cell] self.gridBook.values = self.db.getUsersBooksToDisplay(self.cell[0]) self.gridUser.update() self.gridBook.update() self.gridUser.h_exit_down("") self.gridBook.editable = True def on_enterUserBorrow(self, input): # wybiera uzytkownika i potem przechodzi do ksiaze self.cell = self.gridUser.values[self.gridUser.edit_cell[0]] self.gridUser.h_exit_down("") self.gridBook.values = self.db.get_free_books() self.gridBook.editable = True def borrow_book(self, input): self.book = self.gridBook.values[self.gridBook.edit_cell[0]] if not self.db.borrowBook(self.cell[0], self.book[0], str(datetime.date.today())): npyscreen.notify_confirm(message="Cannot borrow book!", title="Error!") return self.setDefaultData() self.setInitPos() npyscreen.notify_confirm(message="Success!", title="Message") def recive_book(self, input): ISBN = self.gridBook.values[self.gridBook.edit_cell[0]][0] data = self.db.returnBook(self.gridUser.values[0][0], ISBN) data = datetime.datetime.strptime(data[0][0].replace("-", ""), "%Y%m%d").date() td = datetime.date.today() - data open("DATA.txt", "a").write(str(td.days)) if (td.days - 31) > 0: npyscreen.notify_confirm(message="Musisz zaplacic %f" % ((float(td.days) - 31.0) * self.cost), title="Timeout") else: npyscreen.notify_confirm(message="Success", title="Success") self.setDefaultData() self.setInitPos() def on_back(self, input): self.on_cancel() def show_help(self, input): npyscreen.notify_confirm( title="Help", message= "r - wybierz uzytkownika do oddania, \nb - wybierz uzytkownika do wypozyczenia, \nctr + r - oddaj, \nctr + b - wypozycz\nctr + s - szukaj\ns - przejdz do szukania" )