Esempio n. 1
0
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()
Esempio n. 2
0
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"
        )