11 # |
11 # |
12 |
12 |
13 from hypatia.catalog import CatalogQuery |
13 from hypatia.catalog import CatalogQuery |
14 from hypatia.interfaces import ICatalog |
14 from hypatia.interfaces import ICatalog |
15 from hypatia.query import Any, Contains, Eq, Ge, Le |
15 from hypatia.query import Any, Contains, Eq, Ge, Le |
|
16 from pyramid.decorator import reify |
16 from pyramid.view import view_config |
17 from pyramid.view import view_config |
17 from z3c.form import field |
18 from z3c.form import field |
18 from z3c.table.interfaces import IValues |
19 from z3c.table.interfaces import IValues |
19 from zope.dublincore.interfaces import IZopeDublinCore |
20 from zope.dublincore.interfaces import IZopeDublinCore |
20 from zope.interface import implementer |
21 from zope.interface import implementer |
29 from pyams_content.shared.common.interfaces import IBaseSharedTool, \ |
30 from pyams_content.shared.common.interfaces import IBaseSharedTool, \ |
30 SHARED_TOOL_WORKFLOW_STATES_VOCABULARY |
31 SHARED_TOOL_WORKFLOW_STATES_VOCABULARY |
31 from pyams_content.shared.common.interfaces.types import DATA_TYPES_VOCABULARY, ITypedSharedTool |
32 from pyams_content.shared.common.interfaces.types import DATA_TYPES_VOCABULARY, ITypedSharedTool |
32 from pyams_content.shared.common.interfaces.zmi import ISharedToolDashboardTable |
33 from pyams_content.shared.common.interfaces.zmi import ISharedToolDashboardTable |
33 from pyams_content.zmi.interfaces import IAllContentsMenu |
34 from pyams_content.zmi.interfaces import IAllContentsMenu |
|
35 from pyams_form.interfaces.form import ISearchFormFactory, ISearchFormResultsFactory |
34 from pyams_form.search import ISearchFields, SearchForm, SearchResultsView, SearchView |
36 from pyams_form.search import ISearchFields, SearchForm, SearchResultsView, SearchView |
35 from pyams_i18n.interfaces import INegotiator |
37 from pyams_i18n.interfaces import INegotiator |
36 from pyams_pagelet.interfaces import PageletCreatedEvent |
38 from pyams_pagelet.interfaces import PageletCreatedEvent |
37 from pyams_pagelet.pagelet import pagelet_config |
39 from pyams_pagelet.pagelet import pagelet_config |
38 from pyams_security.schema import Principal |
40 from pyams_security.schema import Principal |
218 def __init__(self, context, request): |
220 def __init__(self, context, request): |
219 super(SharedToolAdvancedSearchForm, self).__init__(context, request) |
221 super(SharedToolAdvancedSearchForm, self).__init__(context, request) |
220 request.registry.notify(PageletCreatedEvent(self)) |
222 request.registry.notify(PageletCreatedEvent(self)) |
221 apply_skin(self.request, 'PyAMS admin skin') |
223 apply_skin(self.request, 'PyAMS admin skin') |
222 |
224 |
|
225 fields_interface = ISharedToolAdvancedSearchFields |
|
226 |
223 @property |
227 @property |
224 def fields(self): |
228 def fields(self): |
225 workflow = IWorkflow(self.context) |
229 workflow = IWorkflow(self.context) |
226 fields = field.Fields(ISharedToolAdvancedSearchFields) |
230 fields = field.Fields(self.fields_interface) |
227 fields['status'].vocabulary = workflow.states |
231 fields['status'].vocabulary = workflow.states |
228 if not ITypedSharedTool.providedBy(self.context): |
232 if not ITypedSharedTool.providedBy(self.context): |
229 fields = fields.omit('data_type') |
233 fields = fields.omit('data_type') |
230 fields['tags'].widgetFactory = ThesaurusTermsTreeFieldWidget |
234 fields['tags'].widgetFactory = ThesaurusTermsTreeFieldWidget |
231 if IThemesManagerTarget.providedBy(self.context): |
235 if IThemesManagerTarget.providedBy(self.context): |
350 |
354 |
351 def __init__(self, context, request): |
355 def __init__(self, context, request): |
352 super(SharedToolAdvancedSearchResultsView, self).__init__(context, request) |
356 super(SharedToolAdvancedSearchResultsView, self).__init__(context, request) |
353 request.registry.notify(PageletCreatedEvent(self)) |
357 request.registry.notify(PageletCreatedEvent(self)) |
354 |
358 |
|
359 @reify |
|
360 def search_form(self): |
|
361 form = self.request.registry.queryMultiAdapter((self.context, self.request, self), |
|
362 ISearchFormResultsFactory) |
|
363 if form is None: |
|
364 form = self.request.registry.queryMultiAdapter((self.context, self.request, self), |
|
365 ISearchFormFactory) |
|
366 if form is None: |
|
367 form = self.search_form_factory(self.context, self.request) |
|
368 return form |
|
369 |
355 @property |
370 @property |
356 def data_attributes(self): |
371 def data_attributes(self): |
357 attributes = super(SharedToolAdvancedSearchResultsView, self).data_attributes |
372 attributes = super(SharedToolAdvancedSearchResultsView, self).data_attributes |
358 attributes['table'] = { |
373 attributes['table'] = { |
359 'data-ams-datatable-sorting': |
374 'data-ams-datatable-sorting': |