src/pyams_content/shared/common/zmi/search.py
changeset 1349 4aca0ad81b2b
parent 1319 e72aa60c1e4d
child 1395 8184dadefc8b
equal deleted inserted replaced
1348:ae293e874417 1349:4aca0ad81b2b
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
       
    12 from pyams_content.shared.common.interfaces.types import DATA_TYPES_VOCABULARY, ITypedSharedTool
       
    13 
    12 
    14 
    13 __docformat__ = 'restructuredtext'
    15 __docformat__ = 'restructuredtext'
    14 
    16 
    15 from hypatia.catalog import CatalogQuery
    17 from hypatia.catalog import CatalogQuery
    16 from hypatia.interfaces import ICatalog
    18 from hypatia.interfaces import ICatalog
   171 
   173 
   172     status = Choice(title=_("Status"),
   174     status = Choice(title=_("Status"),
   173                     vocabulary=SHARED_TOOL_WORKFLOW_STATES_VOCABULARY,
   175                     vocabulary=SHARED_TOOL_WORKFLOW_STATES_VOCABULARY,
   174                     required=False)
   176                     required=False)
   175 
   177 
       
   178     data_type = Choice(title=_("Data type"),
       
   179                        vocabulary=DATA_TYPES_VOCABULARY,
       
   180                        required=False)
       
   181 
   176     created_after = Datetime(title=_("Created after..."),
   182     created_after = Datetime(title=_("Created after..."),
   177                              required=False)
   183                              required=False)
   178 
   184 
   179     created_before = Datetime(title=_("Created before..."),
   185     created_before = Datetime(title=_("Created before..."),
   180                               required=False)
   186                               required=False)
   212     @property
   218     @property
   213     def fields(self):
   219     def fields(self):
   214         workflow = IWorkflow(self.context)
   220         workflow = IWorkflow(self.context)
   215         fields = field.Fields(ISharedToolAdvancedSearchFields)
   221         fields = field.Fields(ISharedToolAdvancedSearchFields)
   216         fields['status'].vocabulary = workflow.states
   222         fields['status'].vocabulary = workflow.states
       
   223         if not ITypedSharedTool.providedBy(self.context):
       
   224             fields = fields.omit('data_type')
   217         fields['tags'].widgetFactory = ThesaurusTermsTreeFieldWidget
   225         fields['tags'].widgetFactory = ThesaurusTermsTreeFieldWidget
   218         if IThemesManagerTarget.providedBy(self.context):
   226         if IThemesManagerTarget.providedBy(self.context):
   219             fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget
   227             fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget
   220         else:
   228         else:
   221             fields = fields.omit('themes')
   229             fields = fields.omit('themes')
   272                 params &= query_params
   280                 params &= query_params
   273         if data.get('owner'):
   281         if data.get('owner'):
   274             params &= Eq(catalog['role:owner'], data['owner'])
   282             params &= Eq(catalog['role:owner'], data['owner'])
   275         if data.get('status'):
   283         if data.get('status'):
   276             params &= Eq(catalog['workflow_state'], data['status'])
   284             params &= Eq(catalog['workflow_state'], data['status'])
       
   285         if data.get('data_type'):
       
   286             params &= Eq(catalog['data_type'], data['data_type'])
   277         if data.get('created_after'):
   287         if data.get('created_after'):
   278             params &= Ge(catalog['created_date'], data['created_after'])
   288             params &= Ge(catalog['created_date'], data['created_after'])
   279         if data.get('created_before'):
   289         if data.get('created_before'):
   280             params &= Le(catalog['created_date'], data['created_before'])
   290             params &= Le(catalog['created_date'], data['created_before'])
   281         if data.get('modified_after'):
   291         if data.get('modified_after'):