This is the life cycle of a single PyBlosxom request. It involves the following "entities":
pyblosxom.cgi - A script found in the web/ directory. This is the CGI script that handles PyBlosxom requests.
config.py - The configuration file that defines the behavior and properties of your blog.
PyBlosxom.pyblosxom - The pyblosxom module holds the default PyBlosxom behavior functions. It also defines the Request class and the PyBlosxom class.
Pyblosxom.pyblosxom.Request - The Request object holds
the state of the PyBlosxom request at any given time throughout the lifecycle
of the request. The Request is passed to most callbacks in the args dict
as request
.
Pyblosxom.pyblosxom.PyBlosxom - The PyBlosxom object holds a list of registered plugins, what callbacks they're registered to, and the methods that handle the the actual request.
The PyBlosxom request lifecycle starts with the web-server executing pyblosxom.cgi.
pyblosxom.cgi loads config.py
pyblosxom.cgi instantiates a Request object
pyblosxom.cgi instantiates a PyBlosxom object passing it the Request object
pyblosxom.cgi calls run() on the PyBlosxom instance
PyBlosxom instance, run method: calls initialize
PyBlosxom instance, initialize method: imports the plugins
PyBlosxom instance, initialize method: calls the entry parser callback to get a map of all the entry types we handle
PyBlosxom instance, run method: calls the start callback to allow plugins to do any initialization they need to do
PyBlosxom instance, run method: calls the handle callback allowing plugins to fully handle the request.
If a plugin handles the request, the plugin should return a 1 signifying it has done so. At that point, PyBlosxom will stop trying to handle the request. FINISHED
If no plugin handles the request, then PyBlosxom will handle the request using the blosxom_handler.
PyBlosxom instance, run method: calls the end callback to allow plugins to do any cleanup they need to do