#!/usr/local/bin/python # Fig. 23.16: viewCart.py # Generate XML representing cart, convert # to required format using browser-specific XSLT # style sheet and display results. import sys import Session from xml.xslt import Processor from xml.dom.DOMImplementation import implementation # load Session try: session = Session.Session() except Session.SessionError, message: # invalid/no session ID Session.redirect( "error.py?message=%s" % message ) sys.exit() cart = session.data[ "cart" ] total = 0 # total for all ordered items # generate XML representing cart object document = implementation.createDocument( None, None, None ) cartNode = document.createElement( "cart" ) document.appendChild( cartNode ) # add XML representation for each cart item for cartItem in cart.values(): # get book data, calculate subtotal and total book = cartItem.item
session = None # Session not yet created # attempt to create Session three times for i in range( 3 ): # create new Session try: session = Session.Session( 1 ) # ID already exists except Session.IDError: time.sleep( 0.1 ) # wait 0.1 seconds -- try again # missing content type except Session.SessionError, message: Session.redirect( "error.py?message=%s" % message ) sys.exit() else: break # Session created successfully # if successful, save Session and re-direct to allBooks.py if session: nextPage = "allBooks.py?ID=%s" % session.data[ "ID" ] session.saveSession() Session.redirect( nextPage ) else: Session.redirect( "error.py?message=Unable+to+create+Session" ) ########################################################################## # (C) Copyright 2002 by Deitel & Associates, Inc. and Prentice Hall. #
# Fig. 23.12: displayBook.py # Retrieve one book's XML representation, convert # to required format using browser-specific XSLT # stylesheet and display results. import cgi import sys import Session from xml.xslt import Processor from xml.dom.DOMImplementation import implementation form = cgi.FieldStorage() # ISBN has not been specified if not form.has_key( "isbn" ): Session.redirect( "error.py?message=No+ISBN+given" ) sys.exit() # load Session try: session = Session.Session() except Session.SessionError, message: # invalid/no session ID Session.redirect( "error.py?message=%s" % message ) sys.exit() titles = session.data[ "titles" ] # get titles session.data[ "bookToAdd" ] = None # book has not been found # locate Book object for selected book for book in titles: