src/pyams_utils/site.py
changeset 186 c08b45bbed38
parent 169 5c6a816ffb86
child 199 83b50aa05bc7
equal deleted inserted replaced
185:b713404fd6e5 186:c08b45bbed38
    24 from zope.component.interfaces import IPossibleSite, ObjectEvent
    24 from zope.component.interfaces import IPossibleSite, ObjectEvent
    25 from zope.traversing.interfaces import ITraversable
    25 from zope.traversing.interfaces import ITraversable
    26 
    26 
    27 # import packages
    27 # import packages
    28 from persistent.dict import PersistentDict
    28 from persistent.dict import PersistentDict
    29 from pyams_utils.adapter import adapter_config, ContextAdapter
    29 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    30 from pyams_utils.registry import get_utilities_for, query_utility
    30 from pyams_utils.registry import get_utilities_for, query_utility
    31 from pyramid.exceptions import NotFound
    31 from pyramid.exceptions import NotFound
    32 from pyramid.path import DottedNameResolver
    32 from pyramid.path import DottedNameResolver
    33 from pyramid.security import Allow, Everyone, ALL_PERMISSIONS
    33 from pyramid.security import Allow, Everyone, ALL_PERMISSIONS
    34 from pyramid.threadlocal import get_current_registry
    34 from pyramid.threadlocal import get_current_registry
   128     """
   128     """
   129     application = site_factory(request)
   129     application = site_factory(request)
   130     if application is not None:
   130     if application is not None:
   131         try:
   131         try:
   132             hooks.setSite(application)
   132             hooks.setSite(application)
   133             annotations = IAnnotations(application)
   133             generations = get_annotation_adapter(application, SITE_GENERATIONS_KEY, PersistentDict,
   134             generations = annotations.get(SITE_GENERATIONS_KEY)
   134                                                  notify=False, locate=False)
   135             if generations is None:
       
   136                 generations = annotations[SITE_GENERATIONS_KEY] = PersistentDict()
       
   137             for name, utility in sorted(get_utilities_for(ISiteGenerations),
   135             for name, utility in sorted(get_utilities_for(ISiteGenerations),
   138                                         key=lambda x: x[1].order):
   136                                         key=lambda x: x[1].order):
   139                 if not name:
   137                 if not name:
   140                     name = '.'.join((utility.__module__, utility.__class__.__name__))
   138                     name = '.'.join((utility.__module__, utility.__class__.__name__))
   141                 current = generations.get(name)
   139                 current = generations.get(name)