Ejemplo n.º 1
0
def test_menu_links():
    app = Flask(__name__)
    admin = base.Admin(app)
    admin.add_link(base.MenuLink('TestMenuLink1', endpoint='.index'))
    admin.add_link(base.MenuLink('TestMenuLink2', url='http://python.org/'))

    client = app.test_client()
    rv = client.get('/admin/')

    data = rv.data.decode('utf-8')
    ok_('TestMenuLink1' in data)
    ok_('TestMenuLink2' in data)
Ejemplo n.º 2
0
def create_app(config=None):
    app = Flask(__name__)
    app.secret_key = conf.get('webserver', 'SECRET_KEY')
    #app.config = config
    login.login_manager.init_app(app)

    cache = Cache(app=app,
                  config={
                      'CACHE_TYPE': 'filesystem',
                      'CACHE_DIR': '/tmp'
                  })

    app.register_blueprint(ck, url_prefix='/ck')
    app.register_blueprint(routes)
    app.jinja_env.add_extension("chartkick.ext.charts")

    with app.app_context():
        from airflow.www.views import HomeView
        admin = Admin(
            app,
            name='Airflow',
            static_url_path='/admin',
            index_view=HomeView(endpoint='', url='/admin'),
            template_mode='bootstrap3',
        )

        from airflow.www import views
        admin.add_view(views.Airflow(name='DAGs'))

        admin.add_view(
            views.SlaMissModelView(models.SlaMiss,
                                   Session,
                                   name="SLA Misses",
                                   category="Browse"))
        admin.add_view(
            views.TaskInstanceModelView(models.TaskInstance,
                                        Session,
                                        name="Task Instances",
                                        category="Browse"))

        admin.add_view(
            views.LogModelView(models.Log,
                               Session,
                               name="Logs",
                               category="Browse"))
        admin.add_view(
            views.JobModelView(jobs.BaseJob,
                               Session,
                               name="Jobs",
                               category="Browse"))

        admin.add_view(
            views.QueryView(name='Ad Hoc Query', category="Data Profiling"))
        admin.add_view(
            views.ChartModelView(models.Chart,
                                 Session,
                                 name="Charts",
                                 category="Data Profiling"))
        admin.add_view(
            views.KnowEventView(models.KnownEvent,
                                Session,
                                name="Known Events",
                                category="Data Profiling"))

        admin.add_view(
            views.PoolModelView(models.Pool,
                                Session,
                                name="Pools",
                                category="Admin"))
        admin.add_view(
            views.ConfigurationView(name='Configuration', category="Admin"))
        admin.add_view(
            views.UserModelView(models.User,
                                Session,
                                name="Users",
                                category="Admin"))
        admin.add_view(
            views.ConnectionModelView(models.Connection,
                                      Session,
                                      name="Connections",
                                      category="Admin"))
        admin.add_view(
            views.VariableView(models.Variable,
                               Session,
                               name="Variables",
                               category="Admin"))

        admin.add_link(
            base.MenuLink(category='Docs',
                          name='Documentation',
                          url='http://pythonhosted.org/airflow/'))
        admin.add_link(
            base.MenuLink(category='Docs',
                          name='Github',
                          url='https://github.com/airbnb/airflow'))

        admin.add_view(views.DagModelView(models.DagModel, Session, name=None))
        # Hack to not add this view to the menu
        admin._menu = admin._menu[:-1]

        def integrate_plugins():
            """Integrate plugins to the context"""
            from airflow.plugins_manager import (admin_views, flask_blueprints,
                                                 menu_links)
            for v in admin_views:
                admin.add_view(v)
            for bp in flask_blueprints:
                print(bp)
                app.register_blueprint(bp)
            for ml in menu_links:
                admin.add_link(ml)

        integrate_plugins()

        @app.context_processor
        def jinja_globals():
            return {
                'hostname': socket.gethostname(),
            }

        @app.teardown_appcontext
        def shutdown_session(exception=None):
            settings.Session.remove()

        return app
Ejemplo n.º 3
0
    Basic home view, just showing the README.md file
    """
    @expose("/")
    def index(self):
        dags = sorted(dagbag.dags.values(), key=lambda dag: dag.dag_id)
        return self.render('airflow/dags.html', dags=dags)


admin = Admin(app,
              name="Airflow",
              index_view=HomeView(name='DAGs'),
              template_mode='bootstrap3')

admin.add_link(
    base.MenuLink(category='Tools',
                  name='Ad Hoc Query',
                  url='/admin/airflow/query'))


class Airflow(BaseView):
    def is_visible(self):
        return False

    @expose('/')
    def index(self):
        return self.render('airflow/dags.html')

    @expose('/query')
    @login_required
    @wwwutils.gzipped
    def query(self):
Ejemplo n.º 4
0
        super(UserAdminView, self).__init__(User, session, **kwargs)


class RoleView(MyModelView):
    def is_accessible(self):
        return current_user.has_role('admin')

    def __init__(self, session, **kwargs):
        super(RoleView, self).__init__(Role, session, **kwargs)


admin = Admin(app, 'Flask-Easy Admin', index_view=MyAdminIndexView())
admin.add_view(TasksAdminView(db.session))
admin.add_view(UserAdminView(db.session))
admin.add_view(RoleView(db.session))
admin.add_link(base.MenuLink('Web Home', endpoint="index"))
admin.add_link(base.MenuLink('Logout', endpoint="log_out"))

# --------------------------  END ADMIN PART ---------------------------------


# --------------------------- QUICK SEO PART ----------------------------
@app.errorhandler(404)
def page_not_found(e):
    return render_template('other/404.html'), 404


@app.errorhandler(403)
def page_forbiden(e):
    return render_template('other/403.html'), 403