Understanding Kotti’s startup phase

  1. When a Kotti application is started the kotti.main() function is called by the WSGI server and is passed a settings dictionary that contains all key / value pairs from the [app:kotti] section of the *.ini file.
  2. The settings dictionary is passed to kotti.base_configure(). This is where the main work happens:
    1. Every key in kotti.conf_defaults that is not in the settings dictionary (i.e. that is not in the .ini file) is copied to the settings dictionary, together with the default value for that key.
    2. Add-on initializations: all functions that are listed in the kotti.configurators parameter are resolved and called.
    3. pyramid.includes are removed from the settings dictionary for later processing, i.e. after kotti.base_includes.
    4. A class:pyramid.config.Configurator is instanciated with the remaining settings.
    5. The kotti.base_includes (containing various Kotti subsystems, such as kotti.events, kotti.views, etc.) are passed to config.include.
    6. The pyramid.includes that were removed from the settings dictionary in step 2.3 are processed.
    7. The kotti.zcml_includes are processed.
  3. The SQLAlchemy engine is created with the connection URL that is defined in the sqlalchemy.url parameter in the .ini file.
  4. The fully configured WSGI application is returned to the WSGI server and is ready to process requests.