src/pyams_content/shared/common/zmi/search.py
changeset 59 6da36451e36b
parent 3 cdcc8fa70047
child 124 9661ccbc94d8
equal deleted inserted replaced
58:17740c96ce40 59:6da36451e36b
    20 from pyams_content.profile.interfaces import IAdminProfile
    20 from pyams_content.profile.interfaces import IAdminProfile
    21 from pyams_content.shared.common.interfaces import ISharedTool
    21 from pyams_content.shared.common.interfaces import ISharedTool
    22 from pyams_content.shared.common.interfaces.zmi import ISharedToolDashboardTable
    22 from pyams_content.shared.common.interfaces.zmi import ISharedToolDashboardTable
    23 from pyams_pagelet.interfaces import PageletCreatedEvent
    23 from pyams_pagelet.interfaces import PageletCreatedEvent
    24 from pyams_sequence.interfaces import ISequentialIntIds
    24 from pyams_sequence.interfaces import ISequentialIntIds
    25 from pyams_skin.interfaces import IPageHeader, IContentSearch
    25 from pyams_skin.interfaces import IPageHeader, IContentSearch, IInnerPage
    26 from pyams_skin.layer import IPyAMSLayer
    26 from pyams_skin.layer import IPyAMSLayer
    27 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    27 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    28 from pyams_workflow.interfaces import IWorkflowVersions, IWorkflow
    28 from pyams_workflow.interfaces import IWorkflowVersions, IWorkflow
    29 from pyams_zmi.interfaces import IAdminView
       
    30 from z3c.table.interfaces import IValues
    29 from z3c.table.interfaces import IValues
    31 from zope.dublincore.interfaces import IZopeDublinCore
    30 from zope.dublincore.interfaces import IZopeDublinCore
    32 
    31 
    33 # import packages
    32 # import packages
    34 from hypatia.catalog import CatalogQuery
    33 from hypatia.catalog import CatalogQuery
    37 from pyams_catalog.query import CatalogResultSet
    36 from pyams_catalog.query import CatalogResultSet
    38 from pyams_form.search import SearchView, SearchForm, SearchResultsView, ISearchFields
    37 from pyams_form.search import SearchView, SearchForm, SearchResultsView, ISearchFields
    39 from pyams_pagelet.pagelet import pagelet_config
    38 from pyams_pagelet.pagelet import pagelet_config
    40 from pyams_security.schema import Principal
    39 from pyams_security.schema import Principal
    41 from pyams_skin.page import DefaultPageHeaderAdapter
    40 from pyams_skin.page import DefaultPageHeaderAdapter
       
    41 from pyams_skin.skin import apply_skin
    42 from pyams_skin.table import BaseTable
    42 from pyams_skin.table import BaseTable
    43 from pyams_template.template import template_config
    43 from pyams_template.template import template_config
    44 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    44 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    45 from pyams_utils.list import unique
    45 from pyams_utils.list import unique
    46 from pyams_utils.registry import get_utility
    46 from pyams_utils.registry import get_utility
   134     modified_before = Date(title=_("Modified before..."),
   134     modified_before = Date(title=_("Modified before..."),
   135                            required=False)
   135                            required=False)
   136 
   136 
   137 
   137 
   138 @template_config(template='templates/advanced-search.pt', layer=IPyAMSLayer)
   138 @template_config(template='templates/advanced-search.pt', layer=IPyAMSLayer)
   139 @implementer(IAdminView)
   139 @implementer(IInnerPage)
   140 class SharedToolAdvancedSearchForm(SearchForm):
   140 class SharedToolAdvancedSearchForm(SearchForm):
   141     """Shared tool advanced search form"""
   141     """Shared tool advanced search form"""
   142 
   142 
   143     legend = _("Advanced search")
   143     legend = _("Advanced search")
   144 
   144 
   145     ajax_handler = 'advanced-search-results.html'
   145     ajax_handler = 'advanced-search-results.html'
   146 
   146 
   147     def __init__(self, context, request):
   147     def __init__(self, context, request):
   148         super(SharedToolAdvancedSearchForm, self).__init__(context, request)
   148         super(SharedToolAdvancedSearchForm, self).__init__(context, request)
   149         request.registry.notify(PageletCreatedEvent(self))
   149         request.registry.notify(PageletCreatedEvent(self))
       
   150         apply_skin(self.request, 'PyAMS admin skin')
   150 
   151 
   151     @property
   152     @property
   152     def fields(self):
   153     def fields(self):
   153         workflow = IWorkflow(self.context)
   154         workflow = IWorkflow(self.context)
   154         fields = field.Fields(ISharedToolAdvancedSearchFields)
   155         fields = field.Fields(ISharedToolAdvancedSearchFields)
   198                                                                            sort_index='modified_date',
   199                                                                            sort_index='modified_date',
   199                                                                            reverse=True))))
   200                                                                            reverse=True))))
   200 
   201 
   201 
   202 
   202 @pagelet_config(name='advanced-search.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
   203 @pagelet_config(name='advanced-search.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
   203 class SharedToolAdvancedSearchView(AdminView, SearchView):
   204 class SharedToolAdvancedSearchView(SearchView):
   204     """Shared tool advanced search view"""
   205     """Shared tool advanced search view"""
   205 
   206 
   206     search_form_factory = SharedToolAdvancedSearchForm
   207     search_form_factory = SharedToolAdvancedSearchForm
   207 
   208 
   208 
   209 
   245     """Search results view values adapter"""
   246     """Search results view values adapter"""
   246 
   247 
   247     @property
   248     @property
   248     def values(self):
   249     def values(self):
   249         form = self.view.search_form_factory(self.context, self.request)
   250         form = self.view.search_form_factory(self.context, self.request)
   250         return form.get_search_results()
   251         return form.get_search_results() or ()