Beispiel #1
0
def main():

    # load the system state
    db = yaml.load(open("inventory.yaml").read())
    inventory_import(db['inventory'])
    #pprint.pprint(obj)

    # (System) Creates inventory
    inv = Inventory()

    # (System) Creates admin
    admin = Admin("Joe")

    # (System) Creates kiosk .. and adds it to the inventory
    kiosk = Kiosk('aacpl')
    Kiosk.add_kiosk(kiosk)

    # (Admin) Creates a title .. and adds it to the inventory
    title1 = Title(1234, "title1", "author1")
    Title.add_title(title1)

    # (Admin) Creates a book .. and associates it with a title and bearer
    Book.add_book(Book(4321, title1, admin))

    # *Admin sends book to kiosk for insertion*

    # (Employee) Inserts book into kiosk (via qr_code)
    kiosk.insert_book(4321)
    print "\nKiosk Title Availability: (Employee just inserted a book)"
    pprint.pprint(kiosk.available_books_by_title)
    pprint.pprint(kiosk.reserved_books_by_title)

    # (User) Searches for book
    userweb1 = UserWebService("user1")
    results = userweb1.search("title1")
    print "\nSearch Results: (User just searched for a title.)"
    pprint.pprint(results)

    # (User) Reserves A Book
    title_choice = results.items()[0][0]
    kiosk_choice = results.items()[0][1].keys()[0]
    userweb1.reserve_title(title_choice, kiosk_choice)
    print "\nKiosks Title Availability: (User just reserved a title)"
    pprint.pprint(kiosk.available_books_by_title)
    pprint.pprint(kiosk.reserved_books_by_title)

    # Another user tries for the same title, but must request
    userweb2 = UserWebService("user2")
    results = userweb2.search("title1")
    print "\nSearch Results: (User Searched For Unavailable Title)"
    pprint.pprint(results)

    # 2nd User Requests Title
    title_choice = results.items()[0][0]
    kiosk_choice = results.items()[0][1].keys()[0]
    userweb2.request_title(title_choice, kiosk_choice)
    print "\nKiosk Requests: (User just requested unavailable title.)"
    pprint.pprint(kiosk.requests)

    # First user picks up a book.
    kiosk.eject_reserved_book("user1", 4321)
    print "\nBook Bearer: ", Book.find_book(4321).bearer_uuid
    print "Kiosks Title Availability: (User just picked up a book)"
    pprint.pprint(kiosk.available_books_by_title)
    pprint.pprint(kiosk.reserved_books_by_title)

    # User returns book
    kiosk.insert_book(4321)
    print "\nBook Bearer: ", Book.find_book(4321).bearer_uuid
    print "Kiosks Title Availability: (User just returned a book)"
    pprint.pprint(kiosk.available_books_by_title)
    pprint.pprint(kiosk.reserved_books_by_title)

    # Second user picks up a book.
    kiosk.eject_reserved_book("user2", 4321)
    print "\nBook Bearer: ", Book.find_book(4321).bearer_uuid
    print "Kiosks Title Availability: (User just picked up a book)"
    pprint.pprint(kiosk.available_books_by_title)
    pprint.pprint(kiosk.reserved_books_by_title)

    # Second user returns book
    kiosk.insert_book(4321)
    print "\nBook Bearer: ", Book.find_book(4321).bearer_uuid
    print "Kiosks Title Availability: (User just returned a book)"
    pprint.pprint(kiosk.available_books_by_title)
    pprint.pprint(kiosk.reserved_books_by_title)