Addons and additions to the Zope site concept.
Integration between the ZCA
site system, configured site
policies, and the persistent database.
In the Zope world, sites are objects that can express configuration by
holding onto an instance of IComponents known as its site manager.
Typically they are arranged in a tree, with the global site at the
root of the tree. Site managers inherit configuration from their
parents (bases, which may or may not be their
they are persistent and part of the traversal tree. One site is the
current site and the ZCA functions (e.g.,
IComponentArchitecture.queryUtility()) apply to that site.
Our application has one main persistent site, the application site, containing persistent utilities (such as the application object). This site, or a descendent of it, must always be the current site when executing application code.
In our application, we also have the concept of site policies,
something that is applied based on virtual hosting. A site policy is
IComponents, registered in the global site as a utility
named for the hostname to which it should apply (e.g.,
domain.example.com). Historically, these are not necessarily
persistent and part of the traversal tree. Now, we expect them to be
persistent, though they are still not part of the traversal tree.
Thus there are two things to accomplish: make the application site the current site, and also construct a site that descends from that site and contains any applicable policies that are globally configured.
nti.site.interfacesfor descriptions of the concepts this package uses.
nti.site.hostpolicyfor working with registered and persistent site configurations.
nti.site.sitefor the getting the correctly configured site.
nti.site.subscribersfor setting up the correct site during traversal.
nti.site.testingfor test helpers.