WebKit
Done
- Version 0.2 ALPHA
- 2000-05-11 ce
- Changed Hello example to more informative Welcome example. Changed ExamplePage to fix the list and order of examples.
- Removed 'transaction' parameter of Page.writeBody(). Not needed since awake() sets self._transaction.
- Docs: All kinds of stuff for 0.2.
- Fixed bug in HTTPRequest.sessionId() reported by Jay Love.
- 2000-05-10 ce
- Started playing with py2html.py for documentation purposes.
- API changes: Servlet.__init__() and ServletFactory.servletForTransaction() no longer take a path. Added HTTPRequest serverSidePath(), serverSideDir(), relativePath().
- Wrote a session example.
- Fixed more bugs with cookies.
- Revamped all the methods with "default=None" to be "default=Tombstone" (such as value(), cookie(), header(), etc.). You now get an exception if you ask for a value and don't provide a default value, as was the original intent.
- 2000-05-09 ce
- Fixed some bugs in Cookie.py that came out during Session work. Still needs shakeout.
- Worked on Sessions. Needs shakeout.
- Made ExceptionHandler a little more robust.
- Simplified Application.dispatchRequest().
- Added Session hasValue().
- Fixed ExamplePage and View in light of the recent chdir() removal.
- Added Servlet dir() and relativePath().
- 2000-05-08 ce
- Started on Application's chdir() removal. Renamed homeDir() to serverDir().
- Switched from a repr()/eval() scheme for communicating raw requests to the app server to a marshal scheme which is much faster. See WebKit/Research/TestTransports.py.
- Incorporated Jay Love's FastCGIAdaptor. Made a few tweaks described in file.
- Added ServletsDir setting to replace basePath() function.
- Worked on a default servlet to redirect files through the web server. Still working on it.
- 2000-05-07 ce
- Servlet __init__() now takes the path from whence it came. ServletFactory.createServletForTransaction() consequently requires this.
- Activity logging. The columns now hit a dictionary of objects instead of the application. Added HTTPResponse.size(). Got all the columns I wanted working.
- Changed Object to inherit KeyValueAccess instead of just Application.
- 2000-05-03 ce
- Commented out some of AppServer's unimplemented settings in its default config.
- Incorporated CSV in _dumpCSV but have a question about how to append to a file. It doesn't look like CSV will escape quotes. See CSVQuestions.text
- Fixed a bug in HTTPRequest.__init__() when initializing cookies.
- Changed all respond() methods to no longer include 'response' as an argument. Everything can be gotten from the transaction.
- Renamed Context to Transaction, which is a more accurate name.
- Created classes ServletFactory, PythonServletFactory and PSPServletFactory and reworked Application.createServletInContext() accordingly.
- Picked up Tim O'Malley's Cookie.py 2.25 with the new Python license.
- 2000-05-02 ce
- Created an exception handler in WebKit.cgi so that when the adaptor has problems, the exception information goes to stderr and as simple HTML to stdout.
- Created a Cookie class for use in HTTPResponse. Cleaned up cookie code and methods in HTTPResponse.
- HTTPRequest: Cookies are now simple string values just like fields. Also, the 'default' parameter for field() and cookie() now works.
- Moves the logs into Logs/ and the configs into Configs/. This makes for less directory clutter.
- 2000-05-01 ce
- Got my hands on CSV and created MiscUtils/ and Distributions/. Have not incorprated this yet. (It's for the error logs).
- Responses are no longer delivered through stdout, but through a string returned by contents(). That means that print statements show up in the console and can be used for debugging.
- Implemented _dumpErrors.
- Implemented _dumpCSV which provides the "View Activity Page".
- Created Config page.
- Created Admin page (_admin). Servlets that start with _ are considered to reside with the app server.
- Got rid of .value requirement for fields. fields() now returns a dictionary.
- Basically finished exception handling. This includes logging the error, displaying a public error message, saving a private error message and possibly e-mailing that private error message.
- 2000-04-30 ce
- Worked on exception handling.
- 2000-04-27 ce
- HTTPReponse: Killed the context, session and environ args for __init__. Init self._cookies to Cookie() instead of {}. deliver() now prints the cookies. reset() implemented.
- HTTPRequest: Killed "Headers" section of methods; requests don't have headers. Killed input() and append(); not currently needed/appropriate.
- Implemented writeActivityLog(). Haven't worked out what accessors are needed to useful configure the columns that get written.
- Made Application inherit KeyValueAccess.
- Created Configurable class which is base for AppServer and Application. Added config stuff for Application for the first time.
- Session ids.
- 2000-04-26 ce
- Created View example and added link for viewing code at the bottom of example pages.
- Spruced up ExamplePage.
- Bug: There is a funky, sporadic newline bug as exhibited by the Colors example. Fix: The CGI Adaptor was "print"ing the chunks of output it received rather than "write"ing them. Hence, the extra newline.
- Some documentation cleanup.
- Cache servlet instances rather than just their classes. Can be overridden by implementing canBeReused() to return 0.
- The app server now writes its host name and port to address.text which is automatically picked up by the CGI adaptor.
- Removed WebKitCGIAdaptor.py which was a "non-resident" kind of scheme. New version is CGIAdapator.py which passes the request to a stay-resident application server.
- Implemented the "Port" setting.
- Created class Page. A convenient subclass of HTTPServlet.
- Added field(), hasField() and fields() to HTTPRequest.
- Created Colors example.
- If a Servlet's file is updated, the Servlet gets reloaded by the Application. This substantially reduces the need to restart the server. However, this does not handle changes to the Application or changes to the Servlet's ancestor classes.
- 2000-04-25 ce
- The directory is now changed to the directory of the servlet the first time it's script is executed and whenever the class is used.
- Worked on examples.
- Some class re-organzation. Component and HTTPComponent became Servlet and HTTPServlet. New class Component was created.
- Added support for config setting 'Multitasking' which can be threading, forking, or sequencing. Forking is slower than the other two. Threading servers multiple users better. Threading is the default.
- AppServer: Add support for config files. Created configuration methods such as config(), setting(), printConfig().
- Spruced up the start up message.
- Created root class Object for the entire kit.
- Version 0.1 4/19/2000