From 89c66c818870faaa90039acaa72b2688cbec2042 Mon Sep 17 00:00:00 2001 From: Felix Bauckholt Date: Sat, 30 Jan 2016 21:03:45 -0500 Subject: [PATCH] Made it possible to view uncategorized books Also "specialized" lists of books (categorized, on shelf, checked out, uncategorized) don't revert to the main book list when refreshing. --- librarian | 19 +++++++++++++++---- library/database.py | 14 +++++++++++++- library/interface/browser.py | 15 ++++++++++++++- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/librarian b/librarian index 7758d45..5335954 100755 --- a/librarian +++ b/librarian @@ -119,13 +119,23 @@ def trashMenu(): b.eventLoop() b.clear() +def uncategorizedMenu(): + w=curses.newwin(3,5) + b = browser.bookBrowser(w,hb) + (r,c) = w.getmaxyx() + (my,mx)=stdscr.getmaxyx() + w.mvwin((my-r)//2 -2, (mx-c)//2) + b.refreshBooksUncategorized() + b.eventLoop() + b.clear() + def checkedout_menu(): w=curses.newwin(3,5) b = browser.bookBrowser(w,hb) (r,c) = w.getmaxyx() (my,mx)=stdscr.getmaxyx() w.mvwin((my-r)//2 -2, (mx-c)//2) - b.load_data(db.get_checkedout_books()) + b.refreshBooksCheckedout() b.columnDefs = [("id",0,3), ("uwid",0,8), ("date",0,10), @@ -140,19 +150,19 @@ def onshelf_menu(): (r,c) = w.getmaxyx() (my,mx)=stdscr.getmaxyx() w.mvwin((my-r)//2 -2, (mx-c)//2) - b.load_data(db.get_onshelf_books()) + b.refreshBooksOnshelf() b.eventLoop() b.clear() def co_menu(): w=curses.newwin(1,1) (my,mx)=stdscr.getmaxyx() - co.checkout_procedure(w,hb,my//2,mx//2,mx) + co.checkout_procedure(w,hb,my//2,mx//2,mx) def return_menu(): w=curses.newwin(1,1) (my,mx)=stdscr.getmaxyx() - co.return_procedure(w,hb,my//2,mx//2,mx) + co.return_procedure(w,hb,my//2,mx//2,mx) def catMenu(): (my,mx)=stdscr.getmaxyx() @@ -172,6 +182,7 @@ if __name__ == "__main__": ("Add Book", addForm), ("Categories", catMenu), ("View Trash", trashMenu), + ("View Uncategorized Books", uncategorizedMenu), ("",exit), ("Check Out a Book", co_menu), ("Return a Book", return_menu), diff --git a/library/database.py b/library/database.py index b2e1d9b..a188390 100644 --- a/library/database.py +++ b/library/database.py @@ -91,7 +91,7 @@ def addBook(book): if v!="": cols.append(_colify(k)) vals.append(_stringify(v)) - + query = ("INSERT INTO "+_book_table+" ("+", ".join(cols)+") VALUES ("+ ", ".join(vals)+");") c.execute(query) @@ -148,6 +148,18 @@ def getRemovedBooks(): c.close() return books +def getUncategorizedBooks(): + conn = sqlite3.connect(_catalogue_db_file) + c = conn.cursor() + query = ("SELECT "+",".join(map(_colify,columns))+" FROM "+_book_table+ + " WHERE id NOT IN (SELECT id FROM "+_book_category_table+")"+ + " AND deleted=0;") + c.execute(query) + books = [_query_to_book(b) for b in c] + c.close() + return books + + def get_book(bookid): conn = sqlite3.connect(_catalogue_db_file) c = conn.cursor() diff --git a/library/interface/browser.py b/library/interface/browser.py index 2e521b4..7a610a8 100644 --- a/library/interface/browser.py +++ b/library/interface/browser.py @@ -375,7 +375,20 @@ class bookBrowser(browserWindow): self.load_data(db.get_books()) def refreshBooksInCategory(self,cat): - self.load_data(db.getBooksByCategory(cat)) + self.refreshBooks = lambda : self.load_data(db.getBooksByCategory(cat)) + self.refreshBooks() + + def refreshBooksUncategorized(self): + self.refreshBooks = lambda : self.load_data(db.getUncategorizedBooks()) + self.refreshBooks() + + def refreshBooksCheckedout(self): + self.refreshBooks = lambda : self.load_data(db.get_checkedout_books()) + self.refreshBooks() + + def refreshBooksOnshelf(self): + self.refreshBooks = lambda : self.load_data(db.get_onshelf_books()) + self.refreshBooks() def handleInput(self,ch): browserWindow.handleInput(self,ch)