Patches to library for adding books.

.cf are ignored now too.
This commit is contained in:
Michael Gregson 2009-03-11 01:33:25 -04:00
parent a5451d8e4a
commit a609eb0798
3 changed files with 63 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
/build-stamp /build-stamp
/build /build
*.pyc *.pyc
*.cf

View File

@ -5,12 +5,24 @@ from ceo.urwid.widgets import *
from ceo.urwid.window import * from ceo.urwid.window import *
from sqlobject.sqlbuilder import * from sqlobject.sqlbuilder import *
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pymazon import PyMazon
from ceo import terms from ceo import terms
import ceo.library as lib import ceo.library as lib
CONFIG_FILE = "/etc/csc/library.cf"
cfg = {}
def configure():
"""
Load configuration
"""
cfg_fields = [ "aws_account_key" ]
temp_cfg = conf.read(CONFIG_FILE)
conf.check_string_fields(CONFIG_FILE, cfg_fields, temp_cfg)
cfg.update(temp_cfg)
def library(data): def library(data):
""" """
@ -35,6 +47,12 @@ def search_books(data):
]) ])
push_window(menu, "Book Search") push_window(menu, "Book Search")
def add_book(data):
"""
Add book to library. Also stab Sapphyre.
"""
push_wizard("Add Book", [BookAddPage])
def overdue_books(data): def overdue_books(data):
""" """
Display a list of all books that are overdue. Display a list of all books that are overdue.
@ -83,6 +101,45 @@ def return_book(data):
""" """
push_wizard("Checkout", [CheckinPage, ConfirmPage]) push_wizard("Checkout", [CheckinPage, ConfirmPage])
class BookAddPage(WizardPanel):
"""
Thingy for going on screen to add books.
"""
def init_widgets(self):
"""
Make some widgets.
"""
self.isbn = SingleEdit("ISBN: ")
self.widgets = [
urwid.Text("Adding New Book"),
urwid.Divider(),
self.isbn
]
def check(self):
"""
Do black magic.
"""
isbn = self.isbn.get_edit_text()
try:
pymazon = PyMazon(cfg["aws_account_key"])
book = pymazon.lookup(isbn)
currents = lib.Book.select(lib.Book.q.isbn==isbn)
if len(currents) == 0:
lib.Book(isbn=isbn, title=book.title,
year=book.year, publisher=book.publisher)
else:
sys.stderr.write("Fuck you.\n")
set_status("Book already exists, fucker.")
except PyMazonError, e:
sys.stderr.write("Book not added: " + e.message + "\n")
set_status("Amazon thinks this is not a book. Take it up with them.")
class BookSearchPage(WizardPanel): class BookSearchPage(WizardPanel):
""" """
The page used when searching for books. The page used when searching for books.

5
etc/library.cf.example Normal file
View File

@ -0,0 +1,5 @@
# /etc/csc/library.cf: Library Config
library_db_path = /users/office/library.db
library_connect_string = "sqlite:///home/mgregson/csc/pyceo/test.db"
aws_account_key = "1TNCT5S0RNDV13CJJCG2"