Beispiel #1
0
    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()
Beispiel #2
0
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]
Beispiel #3
0
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
    ]