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""" |