>I did your suggested modification to splat.cgi, and >this is the error I am getting now: Here is the splat.cgi I used to get the program running. Hope that helps regards Pedro Lima -- #!c:/python22/python.exe import sys, os sys.stderr.write("starting %s (pid %d)\n" % (sys.argv[0], os.getpid())) from stat import ST_MTIME from time import time from cPickle import load, dump from quixote import enable_ptl from quixote.publish import SessionPublisher from quixote.session import Session, SessionManager from splat.config import OptionParser, get_config from splat.preferences import Preferences class DirMapping: def __init__ (self, save_dir=None): self.set_save_dir(save_dir) self.cache = {} self.cache_time = {} def set_save_dir (self, save_dir): self.save_dir = save_dir if save_dir and not os.path.isdir(save_dir): os.mkdir(save_dir, 0700) def keys (self): return os.listdir(self.save_dir) def values (self): # This is pretty expensive! return [self[id] for id in self.keys()] def items (self): return [(id, self[id]) for id in self.keys()] def _gen_filename (self, session_id): return os.path.join(self.save_dir, session_id) def __getitem__ (self, session_id): filename = self._gen_filename(session_id) if (self.cache.has_key(session_id) and os.stat(filename)[ST_MTIME] <= self.cache_time[session_id]): return self.cache[session_id] if os.path.exists(filename): try: file = open(filename, "rb") try: print "loading session from %r" % file session = load(file) self.cache[session_id] = session self.cache_time[session_id] = time() return session finally: file.close() except IOError, err: raise KeyError(session_id, "error reading session from %s: %s" % (filename, err)) else: raise KeyError(session_id, "no such file %s" % filename) def get (self, session_id, default=None): try: return self[session_id] except KeyError: return default def has_key (self, session_id): return os.path.exists(self._gen_filename(session_id)) def __setitem__ (self, session_id, session): filename = self._gen_filename(session.id) file = open(filename, "wb") print "saving session to %s" % file dump(session, file, 1) file.close() self.cache[session_id] = session self.cache_time[session_id] = time() def __delitem__ (self, session_id): filename = self._gen_filename(session_id) if os.path.exists(filename): os.remove(filename) if self.cache.has_key(session_id): del self.cache[session_id] del self.cache_time[session_id] else: raise KeyError(session_id, "no such file: %s" % filename) # ---------------------------------------------------------------------- class DemoSession(Session): def __init__ (self, request, id): Session.__init__(self, request, id) self.prefs = Preferences() self.visible_bugs = [] self.widgets = {} def start_request (self, request): Session.start_request(self, request) def has_info (self): return 1 is_dirty = has_info # ---------------------------------------------------------------------- sys.stderr.write("imported everything OK\n") default_config_file = os.path.join(os.path.dirname(sys.argv[0]), "splat.conf") parser = OptionParser() parser.set_default("config_file", default_config_file) (options, args) = parser.parse_args() config = get_config(options) enable_ptl() sessions = DirMapping(save_dir="/tmp/quixote-session-demo") session_mgr = SessionManager(session_class=DemoSession,session_mapping=sessions) pub = SessionPublisher('splat.web', session_mgr=session_mgr) pub.setup_logs() sys.stderr.write("set everything up OK, transferring to Quixote's publisher\n") pub.publish_cgi() _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com