def run_reindex(request, app): if not hasattr(request.app, 'es_client'): return title = "Reindexing {}".format(request.app.application_id) print(click.style(title, underline=True)) app = request.app session = app.session() es_client = app.es_client app.es_indexer.ixmgr.created_indices = set() # delete all existing indices for this town ixs = app.es_indexer.ixmgr.get_managed_indices_wildcard(app.schema) es_client.indices.delete(ixs) for base in app.session_manager.bases: for model in searchable_sqlalchemy_models(base): for obj in session.query(model).all(): app.es_orm_events.index(app.schema, obj) app.es_indexer.process() @request.after def cleanup(response): session.invalidate() session.bind.dispose()
def test_get_searchable_sqlalchemy_models(postgres_dsn): Foo = declarative_base() Bar = declarative_base() class A(Foo): __tablename__ = 'as' id = Column(Integer, primary_key=True) class B(Foo, Searchable): __tablename__ = 'bs' id = Column(Integer, primary_key=True) class C(Bar): __tablename__ = 'cs' id = Column(Integer, primary_key=True) class D(Bar, Searchable): __tablename__ = 'ds' id = Column(Integer, primary_key=True) assert list(utils.searchable_sqlalchemy_models(Foo)) == [B] assert list(utils.searchable_sqlalchemy_models(Bar)) == [D]
def test_get_searchable_sqlalchemy_models_inheritance(postgres_dsn): Base = declarative_base() class Page(Base, Searchable): __tablename__ = 'pages' id = Column(Integer, primary_key=True) class Topic(Page): pass class News(Page): pass assert list(utils.searchable_sqlalchemy_models(Base)) == [ Page, Topic, News ]