10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 |
|
16 # import standard library |
|
17 import re |
15 import re |
18 |
16 |
19 # import interfaces |
17 from hypatia.catalog import Catalog |
|
18 from hypatia.query import Contains, Eq |
|
19 from hypatia.text.lexicon import Lexicon |
|
20 from hypatia.text.parsetree import QueryError |
|
21 from persistent import Persistent |
|
22 from pyramid.events import subscriber |
|
23 from transaction.interfaces import ITransactionManager |
|
24 from zope.componentvocabulary.vocabulary import UtilityVocabulary |
|
25 from zope.container.btree import BTreeContainer |
|
26 from zope.container.contained import Contained |
|
27 from zope.interface import implementer |
|
28 from zope.interface.interfaces import ComponentLookupError |
|
29 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent |
|
30 from zope.location import locate |
|
31 from zope.location.interfaces import ISublocations |
|
32 from zope.schema.fieldproperty import FieldProperty |
|
33 from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary |
|
34 from zope.traversing.interfaces import ITraversable |
|
35 |
|
36 from pyams_catalog.index import FieldIndexWithInterface, TextIndexWithInterface |
|
37 from pyams_catalog.nltk import NltkStemmedTextProcessor |
|
38 from pyams_catalog.query import CatalogResultSet, or_ |
|
39 from pyams_catalog.utils import index_object |
20 from pyams_form.interfaces.form import IFormContextPermissionChecker |
40 from pyams_form.interfaces.form import IFormContextPermissionChecker |
21 from pyams_security.interfaces import IDefaultProtectionPolicy |
41 from pyams_security.interfaces import IDefaultProtectionPolicy |
|
42 from pyams_security.property import RolePrincipalsFieldProperty |
|
43 from pyams_security.security import ProtectedObject |
22 from pyams_thesaurus.interfaces import ADMIN_THESAURUS_PERMISSION |
44 from pyams_thesaurus.interfaces import ADMIN_THESAURUS_PERMISSION |
23 from pyams_thesaurus.interfaces.extension import IThesaurusTermExtension |
45 from pyams_thesaurus.interfaces.extension import IThesaurusTermExtension |
24 from pyams_thesaurus.interfaces.loader import IThesaurusLoader |
46 from pyams_thesaurus.interfaces.loader import IThesaurusLoader |
25 from pyams_thesaurus.interfaces.term import IThesaurusTermsContainer, IThesaurusTerm, IThesaurusLoaderTerm |
47 from pyams_thesaurus.interfaces.term import IThesaurusLoaderTerm, IThesaurusTerm, IThesaurusTermsContainer |
26 from pyams_thesaurus.interfaces.thesaurus import IThesaurus, IThesaurusExtract, IThesaurusExtractRoles, \ |
48 from pyams_thesaurus.interfaces.thesaurus import IThesaurus, IThesaurusContextManager, IThesaurusExtract, \ |
27 IThesaurusRoles, IThesaurusExtracts, IThesaurusContextManager |
49 IThesaurusExtractRoles, IThesaurusExtracts, IThesaurusRoles |
|
50 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter |
|
51 from pyams_utils.factory import factory_config |
28 from pyams_utils.interfaces.site import IOptionalUtility |
52 from pyams_utils.interfaces.site import IOptionalUtility |
29 from pyams_utils.interfaces.tree import ITree |
53 from pyams_utils.interfaces.tree import ITree |
30 from transaction.interfaces import ITransactionManager |
54 from pyams_utils.registry import get_global_registry, query_utility |
31 from zope.interface.interfaces import ComponentLookupError |
|
32 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent |
|
33 from zope.location.interfaces import ISublocations |
|
34 from zope.traversing.interfaces import ITraversable |
|
35 |
|
36 # import packages |
|
37 from hypatia.catalog import Catalog |
|
38 from hypatia.query import Eq, Contains |
|
39 from hypatia.text.lexicon import Lexicon |
|
40 from hypatia.text.parsetree import QueryError |
|
41 from persistent import Persistent |
|
42 from pyams_catalog.index import TextIndexWithInterface, FieldIndexWithInterface |
|
43 from pyams_catalog.nltk import NltkStemmedTextProcessor |
|
44 from pyams_catalog.query import CatalogResultSet, or_ |
|
45 from pyams_catalog.utils import index_object |
|
46 from pyams_security.security import ProtectedObject |
|
47 from pyams_security.property import RolePrincipalsFieldProperty |
|
48 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter |
|
49 from pyams_utils.registry import query_utility, get_utilities_for, get_global_registry |
|
50 from pyams_utils.request import check_request |
55 from pyams_utils.request import check_request |
51 from pyams_utils.traversing import get_parent |
56 from pyams_utils.traversing import get_parent |
52 from pyams_utils.unicode import translate_string |
57 from pyams_utils.unicode import translate_string |
53 from pyams_utils.vocabulary import vocabulary_config |
58 from pyams_utils.vocabulary import vocabulary_config |
54 from pyramid.events import subscriber |
|
55 from zope.componentvocabulary.vocabulary import UtilityVocabulary |
|
56 from zope.container.btree import BTreeContainer |
|
57 from zope.container.contained import Contained |
|
58 from zope.interface import implementer |
|
59 from zope.location import locate |
|
60 from zope.schema.fieldproperty import FieldProperty |
|
61 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
|
62 |
59 |
63 |
60 |
64 CUSTOM_SEARCH = re.compile(r'\*|\"|\sand\s|\sor\s|\snot\s|\(|\)', re.IGNORECASE) |
61 CUSTOM_SEARCH = re.compile(r'\*|\"|\sand\s|\sor\s|\snot\s|\(|\)', re.IGNORECASE) |
65 |
62 |
66 |
63 |
289 # |
286 # |
290 |
287 |
291 THESAURUS_EXTRACTS_KEY = 'pyams_thesaurus.extracts' |
288 THESAURUS_EXTRACTS_KEY = 'pyams_thesaurus.extracts' |
292 |
289 |
293 |
290 |
294 @implementer(IThesaurusExtracts) |
291 @factory_config(IThesaurusExtracts) |
295 class ThesaurusExtractsContainer(BTreeContainer): |
292 class ThesaurusExtractsContainer(BTreeContainer): |
296 """Thesaurus extracts container""" |
293 """Thesaurus extracts container""" |
297 |
294 |
298 |
295 |
299 @adapter_config(context=IThesaurus, provides=IThesaurusExtracts) |
296 @adapter_config(context=IThesaurus, provides=IThesaurusExtracts) |
300 def thesaurus_extracts_factory(context): |
297 def thesaurus_extracts_factory(context): |
301 """Thesaurus extracts factory""" |
298 """Thesaurus extracts factory""" |
302 return get_annotation_adapter(context, THESAURUS_EXTRACTS_KEY, ThesaurusExtractsContainer, |
299 return get_annotation_adapter(context, THESAURUS_EXTRACTS_KEY, IThesaurusExtracts, |
303 name='++extracts++') |
300 name='++extracts++') |
304 |
301 |
305 |
302 |
306 @adapter_config(name='extracts', context=IThesaurus, provides=ITraversable) |
303 @adapter_config(name='extracts', context=IThesaurus, provides=ITraversable) |
307 class ThesaurusExtractsNamespace(ContextAdapter): |
304 class ThesaurusExtractsNamespace(ContextAdapter): |