"""shopping cart runner.""" import os, sys, re [sys.path.insert(0, path) for path in ['../../lib', '../../doc/lib', './lib']] import myghty.http.HTTPServerHandler as HTTPServerHandler # determine port number try: port = int(sys.argv[1]) except: port = 8000 # create local cache directory to store generated files + sessions if not os.access('./cache', os.F_OK): os.mkdir('./cache') # now set up standalone server httpd = HTTPServerHandler.HTTPServer( # port num port = port, handlers = [ # serve all URIs that do not start with /docs/ with an HTTPHandler. {r'(?!/docs/)' : HTTPServerHandler.HSHandler( data_dir = './cache', # resolve URIs in the 'shoppingcontroller' module first. # here, we do it directly by path. But it can also be # broken down into regular expressions for each component # via the 'module_components' parameter. module_root = ['shoppingcontroller'], # else, resolve URIs to one of three component roots. component_root = [ {'store_comp':'./components'}, {'store_templ':'./templates'}, {'store_htdocs':'./htdocs'}, ], # interpreter attributes, custom config settings used by the # shopping cart controller. attributes = { 'store_uri' : '/', 'store_document_uri' : '/docs/', 'store_path' : '/', }, ) }, # docroots, used to determine r.filename, and # also will be served directly if Interpreter rules did not match. {r'/source/(.*)' : './'}, {r'/docs/(.*)' : './htdocs'}, ] ) print "HTTPServer listening on port %d" % httpd.port httpd.serve_forever()