def do_reindex(): """Update the full text search index.""" indexer = get_indexer() indexed_models = { m.__name__: m for m in all_models.all_models if issubclass(m, mixin.Indexed) and m.REQUIRED_GLOBAL_REINDEX } people_query = db.session.query(all_models.Person.id, all_models.Person.name, all_models.Person.email) indexer.cache["people_map"] = {p.id: (p.name, p.email) for p in people_query} indexer.cache["ac_role_map"] = dict(db.session.query( all_models.AccessControlRole.id, all_models.AccessControlRole.name, )) for model_name in sorted(indexed_models.keys()): logger.info("Updating index for: %s", model_name) with benchmark("Create records for %s" % model_name): model = indexed_models[model_name] for query_chunk in generate_query_chunks(db.session.query(model.id)): model.bulk_record_update_for([i.id for i in query_chunk]) db.session.commit() logger.info("Updating index for: %s", "Snapshot") with benchmark("Create records for %s" % "Snapshot"): reindex_snapshots() indexer.invalidate_cache()
def do_reindex(): """Update the full text search index.""" indexer = get_indexer() indexer.delete_all_records(False) # Remove model base classes and non searchable objects excluded_models = { all_models.Directive, all_models.Option, all_models.SystemOrProcess, all_models.Role, } indexed_models = {model for model in all_models.all_models if model_is_indexed(model)} indexed_models -= excluded_models for model in indexed_models: # pylint: disable=protected-access mapper_class = model._sa_class_manager.mapper.base_mapper.class_ query = model.query.options( db.undefer_group(mapper_class.__name__ + '_complete'), ) for query_chunk in generate_query_chunks(query): for instance in query_chunk: indexer.create_record(fts_record_for(instance), False) db.session.commit() reindex_snapshots()
def do_reindex(): """Update the full text search index.""" indexer = get_indexer() indexed_models = { m.__name__: m for m in all_models.all_models if issubclass(m, mixin.Indexed) and m.REQUIRED_GLOBAL_REINDEX } people_query = db.session.query(all_models.Person.id, all_models.Person.name, all_models.Person.email) indexer.cache["people_map"] = { p.id: (p.name, p.email) for p in people_query } indexer.cache["ac_role_map"] = dict( db.session.query( all_models.AccessControlRole.id, all_models.AccessControlRole.name, )) for model_name in sorted(indexed_models.keys()): logger.info("Updating index for: %s", model_name) with benchmark("Create records for %s" % model_name): model = indexed_models[model_name] for query_chunk in generate_query_chunks(db.session.query( model.id)): model.bulk_record_update_for([i.id for i in query_chunk]) db.session.commit() logger.info("Updating index for: %s", "Snapshot") with benchmark("Create records for %s" % "Snapshot"): reindex_snapshots() indexer.invalidate_cache() start_compute_attributes("all_latest")
def do_reindex(): """Update the full text search index.""" indexer = get_indexer() indexer.delete_all_records(False) # Remove model base classes and non searchable objects excluded_models = { all_models.Directive, all_models.Option, all_models.SystemOrProcess, all_models.Role, } indexed_models = { model for model in all_models.all_models if model_is_indexed(model) } indexed_models -= excluded_models for model in indexed_models: # pylint: disable=protected-access mapper_class = model._sa_class_manager.mapper.base_mapper.class_ query = model.query.options( db.undefer_group(mapper_class.__name__ + '_complete'), ) for query_chunk in generate_query_chunks(query): for instance in query_chunk: indexer.create_record(fts_record_for(instance), False) db.session.commit() reindex_snapshots()
def do_reindex(): """Update the full text search index.""" indexer = get_indexer() indexed_models = get_indexed_model_names() people = db.session.query(all_models.Person.id, all_models.Person.name, all_models.Person.email) indexer.cache["people_map"] = {p.id: (p.name, p.email) for p in people} for model in sorted(indexed_models): # pylint: disable=protected-access logger.info("Updating index for: %s", model) with benchmark("Create records for %s" % model): model = get_model(model) mapper_class = model._sa_class_manager.mapper.base_mapper.class_ if issubclass(model, mixin.Indexed): for query_chunk in generate_query_chunks( db.session.query(model.id)): model.bulk_record_update_for([i.id for i in query_chunk]) db.session.commit() else: logger.warning( "Try to index model that not inherited from Indexed mixin: %s", model.__name__) indexer.delete_records_by_type(model.__name__) query = model.query.options( db.undefer_group(mapper_class.__name__ + '_complete'), ) for query_chunk in generate_query_chunks(query): for instance in query_chunk: indexer.create_record(indexer.fts_record_for(instance), False) db.session.commit() reindex_snapshots() indexer.invalidate_cache()
def do_reindex(): """Update the full text search index.""" indexer = get_indexer() with benchmark('Delete all records'): indexer.delete_all_records(False) indexed_models = get_indexed_model_names() people = db.session.query(all_models.Person.id, all_models.Person.name, all_models.Person.email) g.people_map = {p.id: (p.name, p.email) for p in people} for model in sorted(indexed_models): # pylint: disable=protected-access logger.info("Updating index for: %s", model) with benchmark("Create records for %s" % model): model = get_model(model) mapper_class = model._sa_class_manager.mapper.base_mapper.class_ query = model.query.options( db.undefer_group(mapper_class.__name__ + '_complete'), ) for query_chunk in generate_query_chunks(query): for instance in query_chunk: indexer.create_record(fts_record_for(instance), False) db.session.commit() reindex_snapshots() delattr(g, "people_map")
def create_reindexed_snapshots(audit_id, objects): """Create snapshots for list of provided objects and reindex them""" # pylint: disable=protected-access snapshottable_objects = [o for o in objects if o.type in Types.all] audit = all_models.Audit.query.get(audit_id) snapshots = TestCase._create_snapshots(audit, snapshottable_objects) reindex_snapshots_ids = [snap.id for snap in snapshots] get_indexer().delete_records_by_ids("Snapshot", reindex_snapshots_ids, commit=False) reindex_snapshots(reindex_snapshots_ids)