src/pyams_thesaurus/thesaurus.py
changeset 61 5e05ea2cea51
parent 56 866affb740b3
child 75 51fae4ef929a
equal deleted inserted replaced
60:55b9eb802e08 61:5e05ea2cea51
    26 from pyams_thesaurus.interfaces.thesaurus import IThesaurus, IThesaurusExtract, IThesaurusExtractRoles, \
    26 from pyams_thesaurus.interfaces.thesaurus import IThesaurus, IThesaurusExtract, IThesaurusExtractRoles, \
    27     IThesaurusRoles, IThesaurusExtracts, IThesaurusContextManager
    27     IThesaurusRoles, IThesaurusExtracts, IThesaurusContextManager
    28 from pyams_utils.interfaces.site import IOptionalUtility
    28 from pyams_utils.interfaces.site import IOptionalUtility
    29 from pyams_utils.interfaces.tree import ITree
    29 from pyams_utils.interfaces.tree import ITree
    30 from transaction.interfaces import ITransactionManager
    30 from transaction.interfaces import ITransactionManager
    31 from zope.annotation.interfaces import IAnnotations
       
    32 from zope.interface.interfaces import ComponentLookupError
    31 from zope.interface.interfaces import ComponentLookupError
    33 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent
    32 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent
    34 from zope.location.interfaces import ISublocations
    33 from zope.location.interfaces import ISublocations
    35 from zope.traversing.interfaces import ITraversable
    34 from zope.traversing.interfaces import ITraversable
    36 
    35 
    44 from pyams_catalog.nltk import NltkStemmedTextProcessor
    43 from pyams_catalog.nltk import NltkStemmedTextProcessor
    45 from pyams_catalog.query import CatalogResultSet, or_
    44 from pyams_catalog.query import CatalogResultSet, or_
    46 from pyams_catalog.utils import index_object
    45 from pyams_catalog.utils import index_object
    47 from pyams_security.security import ProtectedObject
    46 from pyams_security.security import ProtectedObject
    48 from pyams_security.property import RolePrincipalsFieldProperty
    47 from pyams_security.property import RolePrincipalsFieldProperty
    49 from pyams_utils.adapter import adapter_config, ContextAdapter
    48 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    50 from pyams_utils.registry import query_utility, get_utilities_for
    49 from pyams_utils.registry import query_utility, get_utilities_for
    51 from pyams_utils.request import check_request
    50 from pyams_utils.request import check_request
    52 from pyams_utils.traversing import get_parent
    51 from pyams_utils.traversing import get_parent
    53 from pyams_utils.unicode import translate_string
    52 from pyams_utils.unicode import translate_string
    54 from pyams_utils.vocabulary import vocabulary_config
    53 from pyams_utils.vocabulary import vocabulary_config
    55 from pyramid.events import subscriber
    54 from pyramid.events import subscriber
    56 from pyramid.threadlocal import get_current_registry
       
    57 from zope.componentvocabulary.vocabulary import UtilityVocabulary
    55 from zope.componentvocabulary.vocabulary import UtilityVocabulary
    58 from zope.container.btree import BTreeContainer
    56 from zope.container.btree import BTreeContainer
    59 from zope.container.contained import Contained
    57 from zope.container.contained import Contained
    60 from zope.interface import implementer
    58 from zope.interface import implementer
    61 from zope.lifecycleevent import ObjectCreatedEvent
       
    62 from zope.location import locate
    59 from zope.location import locate
    63 from zope.schema.fieldproperty import FieldProperty
    60 from zope.schema.fieldproperty import FieldProperty
    64 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
    61 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
    65 
    62 
    66 
    63 
   300 
   297 
   301 
   298 
   302 @adapter_config(context=IThesaurus, provides=IThesaurusExtracts)
   299 @adapter_config(context=IThesaurus, provides=IThesaurusExtracts)
   303 def thesaurus_extracts_factory(context):
   300 def thesaurus_extracts_factory(context):
   304     """Thesaurus extracts factory"""
   301     """Thesaurus extracts factory"""
   305     annotations = IAnnotations(context)
   302     return get_annotation_adapter(context, THESAURUS_EXTRACTS_KEY, ThesaurusExtractsContainer,
   306     extracts = annotations.get(THESAURUS_EXTRACTS_KEY)
   303                                   name='++extracts++')
   307     if extracts is None:
       
   308         extracts = annotations[THESAURUS_EXTRACTS_KEY] = ThesaurusExtractsContainer()
       
   309         get_current_registry().notify(ObjectCreatedEvent(extracts))
       
   310         locate(extracts, context, '++extracts++')
       
   311     return extracts
       
   312 
   304 
   313 
   305 
   314 @adapter_config(name='extracts', context=IThesaurus, provides=ITraversable)
   306 @adapter_config(name='extracts', context=IThesaurus, provides=ITraversable)
   315 class ThesaurusExtractsNamespace(ContextAdapter):
   307 class ThesaurusExtractsNamespace(ContextAdapter):
   316     """Thesaurus ++extracts++ namespace"""
   308     """Thesaurus ++extracts++ namespace"""