# HG changeset patch # User Thierry Florac # Date 1593168905 -7200 # Node ID bc34f44a9711c2605baeabb5712c5e27e8cbd0c2 # Parent 4ae24ec1db78711bd2b158e61c23b4f05cdc774b Added search adapter for collections diff -r 4ae24ec1db78 -r bc34f44a9711 src/pyams_content_es/component/theme.py --- a/src/pyams_content_es/component/theme.py Thu Sep 26 11:57:40 2019 +0200 +++ b/src/pyams_content_es/component/theme.py Fri Jun 26 12:55:05 2020 +0200 @@ -15,7 +15,8 @@ from zope.intid.interfaces import IIntIds from pyams_content.component.theme import ICollectionsInfo, ICollectionsTarget -from pyams_content.component.theme.interfaces import ITagsInfo, ITagsTarget, IThemesInfo, IThemesTarget +from pyams_content.component.theme.interfaces import ITagsInfo, ITagsTarget, IThemesInfo, \ + IThemesTarget from pyams_content_es.interfaces import IDocumentIndexInfo from pyams_utils.adapter import adapter_config from pyams_utils.list import unique diff -r 4ae24ec1db78 -r bc34f44a9711 src/pyams_content_es/shared/view/theme.py --- a/src/pyams_content_es/shared/view/theme.py Thu Sep 26 11:57:40 2019 +0200 +++ b/src/pyams_content_es/shared/view/theme.py Fri Jun 26 12:55:05 2020 +0200 @@ -15,9 +15,9 @@ from elasticsearch_dsl import Q from zope.intid.interfaces import IIntIds -from pyams_content.component.theme import ITagsManager -from pyams_content.shared.view.interfaces import IViewCollectionsSettings, IViewQueryEsParamsExtension, \ - IViewTagsSettings, IViewThemesSettings, IViewUserQuery, IWfView +from pyams_content.component.theme import ICollectionsManager, ITagsManager +from pyams_content.shared.view.interfaces import IViewCollectionsSettings, \ + IViewQueryEsParamsExtension, IViewTagsSettings, IViewThemesSettings, IViewUserQuery, IWfView from pyams_content_es.shared.view import EsSearchFolderQuery from pyams_thesaurus.interfaces.thesaurus import IThesaurus from pyams_utils.adapter import ContextAdapter, adapter_config @@ -99,3 +99,23 @@ yield Q('terms', **{'collections': collections}) elif settings.select_context_collections: yield None + + +@adapter_config(name='collection', context=EsSearchFolderQuery, provides=IViewUserQuery) +class EsSearchFolderCollectionQuery(ContextAdapter): + """Search folder collection query for Elasticsearch""" + + @staticmethod + def get_user_params(request): + collection = request.params.get('collection') + if collection: + manager = ICollectionsManager(request.root, None) + if manager is None: + raise StopIteration + thesaurus = query_utility(IThesaurus, name=manager.thesaurus_name) + if thesaurus is None: + raise StopIteration + term = thesaurus.terms.get(collection) + if term is not None: + intids = query_utility(IIntIds) + yield Q('term', **{'collections': intids.queryId(term)})