>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