def _problem_type_filter(self, library, capa_type): """ Filters library children by capa type""" search_engine = SearchEngine.get_search_engine(index="library_index") if search_engine: filter_clause = { "library": six.text_type( normalize_key_for_search(library.location.library_key)), "content_type": ProblemBlock.INDEX_CONTENT_TYPE, "problem_types": capa_type } search_result = search_engine.search( field_dictionary=filter_clause) results = search_result.get('results', []) return [ LibraryUsageLocator.from_string(item['data']['id']) for item in results ] else: return [ key for key in library.children if self._filter_child(key, capa_type) ]
def _display_name_filter(self, library, display_name): """ Filters library children by capa type""" search_engine = SearchEngine.get_search_engine(index="library_index") if search_engine: log.warn("search engine found") filter_clause = { "library": unicode(normalize_key_for_search(library.location.library_key)), # "content_type": CapaDescriptor.INDEX_CONTENT_TYPE, # "display_name": display_name } search_result = search_engine.search(field_dictionary=filter_clause) new_results = search_result.get('results', []) results = [] for r in new_results: v = self.deep_search(["display_name"], r) if v['display_name'] == display_name: results.append(r) return [LibraryUsageLocator.from_string(item['data']['id']) for item in results] else: log.warn("search engine NOT found") #return [key for key in library.children if self._filter_child_name(key, display_name)] results = [] for r in library.children: p = self.store.get_item(r, 1) v = {} for field in p.fields.values(): v[field.name] = field.read_json(p) # v = p.get_explicitly_set_fields_by_scope(Scope.settings) if v.get('display_name') == display_name: results.append(r) return results
def _problem_type_filter(self, library, capa_type): """ Filters library children by capa type""" search_engine = SearchEngine.get_search_engine(index="library_index") if search_engine: filter_clause = { "library": unicode(normalize_key_for_search(library.location.library_key)), "content_type": CapaDescriptor.INDEX_CONTENT_TYPE, "problem_types": capa_type } search_result = search_engine.search(field_dictionary=filter_clause) results = search_result.get('results', []) return [LibraryUsageLocator.from_string(item['data']['id']) for item in results] else: return [key for key in library.children if self._filter_child(key, capa_type)]