src/pyams_content/shared/common/zmi/search.py
changeset 277 9649f8ce3b1c
parent 187 a94f92bb4839
child 308 adc7fa946d13
--- a/src/pyams_content/shared/common/zmi/search.py	Fri Nov 10 12:07:43 2017 +0100
+++ b/src/pyams_content/shared/common/zmi/search.py	Tue Nov 14 14:05:30 2017 +0100
@@ -18,7 +18,7 @@
 # import interfaces
 from hypatia.interfaces import ICatalog
 from pyams_content.profile.interfaces import IAdminProfile
-from pyams_content.shared.common.interfaces import ISharedTool
+from pyams_content.shared.common.interfaces import IBaseSharedTool
 from pyams_content.shared.common.interfaces.zmi import ISharedToolDashboardTable
 from pyams_i18n.interfaces import INegotiator
 from pyams_pagelet.interfaces import PageletCreatedEvent
@@ -29,10 +29,12 @@
 from pyams_workflow.interfaces import IWorkflowVersions, IWorkflow
 from z3c.table.interfaces import IValues
 from zope.dublincore.interfaces import IZopeDublinCore
+from zope.intid.interfaces import IIntIds
 
 # import packages
 from hypatia.catalog import CatalogQuery
-from hypatia.query import Eq, Contains, Ge, Le
+from hypatia.query import Eq, Contains, Ge, Le, Any
+from pyams_content.shared.common import CONTENT_TYPES
 from pyams_content.workflow import STATES_VOCABULARY
 from pyams_catalog.query import CatalogResultSet
 from pyams_form.search import SearchView, SearchForm, SearchResultsView, ISearchFields
@@ -47,8 +49,6 @@
 from pyams_utils.registry import get_utility
 from pyams_utils.url import absolute_url
 from pyams_zmi.view import AdminView
-from pyramid.decorator import reify
-from pyramid.response import Response
 from pyramid.view import view_config
 from z3c.form import field
 from zope.interface import implementer
@@ -61,7 +61,7 @@
 # Quick search adapters
 #
 
-@view_config(name='quick-search.html', context=ISharedTool, request_type=IPyAMSLayer,
+@view_config(name='quick-search.html', context=IBaseSharedTool, request_type=IPyAMSLayer,
              permission=VIEW_SYSTEM_PERMISSION, renderer='json', xhr=True)
 def shared_tool_quick_search_view(request):
     """Shared tool quick search view"""
@@ -93,14 +93,16 @@
         return attributes
 
 
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolQuickSearchResults), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolQuickSearchResults), provides=IValues)
 class SharedToolQuickSearchValues(ContextRequestViewAdapter):
     """Shared tool quick search results view values adapter"""
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
-        params = Eq(catalog['content_type'], self.context.shared_content_type)
+        params = Eq(catalog['parents'], intids.register(self.context)) & \
+                 Any(catalog['content_type'], CONTENT_TYPES.keys())
         query = self.request.params.get('query')
         if query:
             sequence = get_utility(ISequentialIntIds)
@@ -173,13 +175,15 @@
         return fields
 
 
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolAdvancedSearchForm), provides=IContentSearch)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAdvancedSearchForm), provides=IContentSearch)
 class SharedToolAdvancedSearchFormSearchAdapter(ContextRequestViewAdapter):
     """Shared tool adavanced search form search adapter"""
 
     def get_search_results(self, data):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
-        params = Eq(catalog['content_type'], self.context.shared_content_type)
+        params = Eq(catalog['parents'], intids.register(self.context)) & \
+                 Any(catalog['content_type'], CONTENT_TYPES.keys())
         query = data.get('query')
         if query:
             sequence = get_utility(ISequentialIntIds)
@@ -222,14 +226,15 @@
                                                                            reverse=True))))
 
 
-@pagelet_config(name='advanced-search.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='advanced-search.html', context=IBaseSharedTool, layer=IPyAMSLayer,
+                permission=VIEW_SYSTEM_PERMISSION)
 class SharedToolAdvancedSearchView(SearchView):
     """Shared tool advanced search view"""
 
     search_form_factory = SharedToolAdvancedSearchForm
 
 
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolAdvancedSearchView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAdvancedSearchView), provides=IPageHeader)
 class SharedToolAdvancedSearchHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool advanced search header adapter"""
 
@@ -239,7 +244,7 @@
     icon_class = 'fa fa-fw fa-search'
 
 
-@view_config(name='advanced-search-results.html', context=ISharedTool, request_type=IPyAMSLayer,
+@view_config(name='advanced-search-results.html', context=IBaseSharedTool, request_type=IPyAMSLayer,
              permission=VIEW_SYSTEM_PERMISSION)
 @implementer(ISharedToolDashboardTable)
 class SharedToolAdvancedSearchResultsView(AdminView, SearchResultsView):
@@ -263,7 +268,7 @@
         return attributes
 
 
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolAdvancedSearchResultsView), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAdvancedSearchResultsView), provides=IValues)
 class SearchResultsViewValuesAdapter(ContextRequestViewAdapter):
     """Search results view values adapter"""