17 from persistent import Persistent |
17 from persistent import Persistent |
18 from zope.container.contained import Contained |
18 from zope.container.contained import Contained |
19 from zope.intid.interfaces import IIntIds |
19 from zope.intid.interfaces import IIntIds |
20 from zope.schema.fieldproperty import FieldProperty |
20 from zope.schema.fieldproperty import FieldProperty |
21 |
21 |
22 from pyams_content.component.theme import ICollectionsInfo, ITagsManager |
22 from pyams_content.component.theme import ICollectionsInfo, ICollectionsManager, ITagsManager |
23 from pyams_content.component.theme.interfaces import ITagsInfo, IThemesInfo |
23 from pyams_content.component.theme.interfaces import ITagsInfo, IThemesInfo |
24 from pyams_content.features.search import SearchFolderQuery |
24 from pyams_content.features.search import SearchFolderQuery |
25 from pyams_content.shared.view.interfaces import IViewCollectionsSettings, IViewQueryParamsExtension, IViewSettings, \ |
25 from pyams_content.shared.view.interfaces import IViewCollectionsSettings, \ |
26 IViewTagsSettings, IViewThemesSettings, IViewUserQuery, IWfView, VIEW_COLLECTIONS_SETTINGS_KEY, \ |
26 IViewQueryParamsExtension, IViewSettings, IViewTagsSettings, IViewThemesSettings, \ |
27 VIEW_TAGS_SETTINGS_KEY, VIEW_THEMES_SETTINGS_KEY |
27 IViewUserQuery, IWfView, VIEW_COLLECTIONS_SETTINGS_KEY, VIEW_TAGS_SETTINGS_KEY, \ |
|
28 VIEW_THEMES_SETTINGS_KEY |
28 from pyams_thesaurus.interfaces.thesaurus import IThesaurus |
29 from pyams_thesaurus.interfaces.thesaurus import IThesaurus |
29 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter |
30 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter |
30 from pyams_utils.factory import factory_config |
31 from pyams_utils.factory import factory_config |
31 from pyams_utils.registry import get_utility, query_utility |
32 from pyams_utils.registry import get_utility, query_utility |
32 |
33 |
213 collections = settings.get_collections_index(context) |
214 collections = settings.get_collections_index(context) |
214 if collections: |
215 if collections: |
215 yield Any(catalog['collections'], collections) |
216 yield Any(catalog['collections'], collections) |
216 elif settings.select_context_collections: |
217 elif settings.select_context_collections: |
217 yield None |
218 yield None |
|
219 |
|
220 |
|
221 @adapter_config(name='collections', context=SearchFolderQuery, provides=IViewUserQuery) |
|
222 class SearchFolderCollectionQuery(ContextAdapter): |
|
223 """Search folder collections query""" |
|
224 |
|
225 @staticmethod |
|
226 def get_user_params(request): |
|
227 collection = request.params.get('collection') |
|
228 if collection: |
|
229 manager = ICollectionsManager(request.root, None) |
|
230 if manager is None: |
|
231 raise StopIteration |
|
232 thesaurus = query_utility(IThesaurus, name=manager.thesaurus_name) |
|
233 if thesaurus is None: |
|
234 raise StopIteration |
|
235 term = thesaurus.terms.get(collection) |
|
236 if term is not None: |
|
237 catalog = get_utility(ICatalog) |
|
238 intids = query_utility(IIntIds) |
|
239 yield Any(catalog['collections'], (intids.queryId(term),)) |