src/pyams_content/root/zmi/search.py
changeset 1150 ce2a61685c8c
parent 1123 6f299ad6e72f
child 1189 26b86361e20b
equal deleted inserted replaced
1149:d362f48f9a2c 1150:ce2a61685c8c
   108 
   108 
   109     @property
   109     @property
   110     def values(self):
   110     def values(self):
   111         intids = get_utility(IIntIds)
   111         intids = get_utility(IIntIds)
   112         catalog = get_utility(ICatalog)
   112         catalog = get_utility(ICatalog)
   113         params = Eq(catalog['parents'], intids.register(self.context)) & \
       
   114             Any(catalog['content_type'], CONTENT_TYPES.keys())
       
   115         query = self.request.params.get('query')
   113         query = self.request.params.get('query')
   116         if query:
   114         if query:
   117             sequence = get_utility(ISequentialIntIds)
   115             sequence = get_utility(ISequentialIntIds)
   118             query = query.lower()
   116             query = query.lower()
   119             if query.startswith('+'):
   117             if query.startswith('+'):
   120                 params &= Eq(catalog['oid'], sequence.get_full_oid(query))
   118                 params = Eq(catalog['oid'], sequence.get_full_oid(query))
   121             else:
   119             else:
       
   120                 params = Eq(catalog['parents'], intids.register(self.context)) & \
       
   121                          Any(catalog['content_type'], CONTENT_TYPES.keys())
   122                 query_params = Eq(catalog['oid'], sequence.get_full_oid(query))
   122                 query_params = Eq(catalog['oid'], sequence.get_full_oid(query))
   123                 negotiator = get_utility(INegotiator)
   123                 negotiator = get_utility(INegotiator)
   124                 for lang in {self.request.registry.settings.get('pyramid.default_locale_name', 'en'),
   124                 for lang in {self.request.registry.settings.get('pyramid.default_locale_name', 'en'),
   125                              self.request.locale_name,
   125                              self.request.locale_name,
   126                              negotiator.server_language} | negotiator.offered_languages:
   126                              negotiator.server_language} | negotiator.offered_languages:
   128                     if index_name in catalog:
   128                     if index_name in catalog:
   129                         index = catalog[index_name]
   129                         index = catalog[index_name]
   130                         if index.check_query(query):
   130                         if index.check_query(query):
   131                             query_params |= Contains(index, ' and '.join((w+'*' for w in query.split())))
   131                             query_params |= Contains(index, ' and '.join((w+'*' for w in query.split())))
   132                 params &= query_params
   132                 params &= query_params
   133         return unique(map(get_last_version,
   133             return unique(map(get_last_version,
   134                           CatalogResultSet(CatalogQuery(catalog).query(params,
   134                               CatalogResultSet(CatalogQuery(catalog).query(params,
   135                                                                        sort_index='modified_date',
   135                                                                            sort_index='modified_date',
   136                                                                        reverse=True))))
   136                                                                            reverse=True))))
       
   137         else:
       
   138             return ()
   137 
   139 
   138 
   140 
   139 #
   141 #
   140 # Advanced search adapters
   142 # Advanced search adapters
   141 #
   143 #