Source code for grokcore.site.interfaces

##############################################################################
#
# Copyright (c) 2006-2009 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################

from grokcore.component.interfaces import IGrokcoreComponentAPI
from zope.interface import Attribute
from zope.interface import Interface
from zope.interface import implementer
from zope.interface.interfaces import IObjectEvent


class IApplication(Interface):
    """Interface to mark the local site used as application root.
    """


class IApplicationAddedEvent(IObjectEvent):
    """A Grok Application has been added with success.

    This event can be used to trigger the creation of contents or other tasks
    that require the application to be fully there : utilities installed
    and indexes created in the catalog."""


[docs] @implementer(IApplicationAddedEvent) class ApplicationAddedEvent: """A Grok Application has been added. """ def __init__(self, app): assert IApplication.providedBy(app) self.object = app
class IUtilityInstaller(Interface): """This install an utility in a site. Let you have different 'installation' method if you want (one for Zope2 / Zope3). """ def __call__(site, utility, provides, name='', name_in_container=None, public=False, setup=None): """Setup an utility. """ class IBaseClasses(Interface): Site = Attribute("Mixin class for sites.") LocalUtility = Attribute("Base class for local utilities.") Application = Attribute("Base class for applications.") class IDirectives(Interface): def local_utility(factory, provides=None, name='', setup=None, public=False, name_in_container=None): """Register a local utility. factory - the factory that creates the local utility provides - the interface the utility should be looked up with name - the name of the utility setup - a callable that receives the utility as its single argument, it is called after the utility has been created and stored public - if False, the utility will be stored below ++etc++site if True, the utility will be stored directly in the site. The site should in this case be a container. name_in_container - the name to use for storing the utility """ def install_on(event): """Explicitly specify when a local utility will be installed. """ def provides(interface): """Explicitly specify with which interface a component will be looked up.""" class IGrokcoreSiteAPI(IGrokcoreComponentAPI, IBaseClasses, IDirectives): """grokcore.site's public API.""" IApplication = Attribute('The application model interface') IApplicationAddedEvent = Attribute( 'The application initialized event interface') ApplicationAddedEvent = Attribute( 'The application initialized event factory') def getSite(): """Get the current site.""" def getApplication(): """Return the nearest enclosing `grok.Application`."""