Thomas J. Schirripa
tommys at eden.rutgers.edu
Tue Jul 18 11:39:02 EDT 2006
Before stating my problem, let me say that I am running apache version 2.0.52, mod_python 3.2.8, python 2.3, all on Redhat Enterprise Linux WS release 4. I am making some basic web utilities that require that I create sessions. Essentially, I want to use session ids created by mod_python to create a session folder where I can temporarily dump files and manipulate stuff so I can generate some output for the client. Since I would be using this feature a lot, I thought it would be a good idea to make a subclass of BaseSession that added this functionality of making a folder with the session name. I made a file located somewhere else on my machine called SessDirectory.py, and it defines the class SessionDirectory. The file looks like this: from Session import BaseSession import os class SessionDirectory(BaseSession): def __init__(self, req, path=None, sid=None, secret=None, lock=1, timeout=0): BaseSession.__init__(self, req, sid, secret, lock, timeout) if path == None: self.absPath = os.path.join(os.getcwd(), sid) else: self.absPath = os.path.join(path, sid) os.mkdir(self.absPath, mode=0755) It can take an absolute path to create the session directory, or it can take no path, in which case it creates the session directory in the current directory. When I try to instantiate the SessionDirectory object, the following exception is raised: AttributeError: 'SessionDirectory' object has no attribute 'do_load' I did some fishing around and looked at the source code of the session module. Apparently, BaseSession has a method called "load()" that makes a call to "do_load()". BaseSession does not define "do_load()", HOWEVER, it seems that the built in sublcasses of BaseSession (ie- FileSession, DbmSession, etc) all define a "do_load()" method. My background is really in Java, and to me, it seems like BaseSession is an abstract class, but it has no signature for "do_load()" and I believe the exception would have been NotImplemented or something like that if there was a required implementation missing. Also, why does BaseSession inherit from "dict" and not "UserDict". I wanted to see if "dict" had a "do_load()" method, but if it did, then the instantiation of SessionDirectory should have called the "do_load()" from dict. Can anyone tell me what's going on? Thanks, Tom
|