示例#1
0
def create_app():
    app = Flask(__name__)
    app.config.from_object(conf)

    with Path(__file__).parent.parent as root_dir:
        database_file = "sqlite:///{}".format(
            os.path.join(root_dir, 'db.sqlite'))
        print('<DB FILE : {}>'.format(database_file))
        app.config["SQLALCHEMY_DATABASE_URI"] = database_file
    db.init_app(app)
    migrate.init_app(app, db)

    app.register_blueprint(main_bp, url_prefix="/")

    admin = Admin(app, name=app.config["APP_NAME"], template_mode='bootstrap3')

    from app.models import TerritoryUnit, PositionType, Person, Recipient, RecipientAdmin, PersonAdmin, ContractType, \
        TeamsList
    admin.add_link(MenuLink(name='Site publique', category='', url='/'))
    admin.add_view(PersonAdmin(Person, db.session, name='Personnes déclarées'))
    admin.add_view(ModelView(TerritoryUnit, db.session, name='Délégations'))
    admin.add_view(ModelView(ContractType, db.session, name='Contrats'))
    admin.add_view(ModelView(PositionType, db.session, name='Postes'))
    admin.add_view(ModelView(TeamsList, db.session, name='Listes teams'))
    admin.add_view(RecipientAdmin(Recipient, db.session, name='Destinataires'))

    with app.app_context():
        db.create_all()

    return app
示例#2
0
文件: admin.py 项目: dtrodger/micro
def configure_admin(app):
    admin = Admin(index_view=IndexAdminView(endpoint='admin'))
    admin.init_app(app)
    admin.add_link(MenuLink(name='Logout', url='/user/logout'))
    admin.add_view(UserAdminView(User, sqldb.session, endpoint='user-admin'))
    admin.add_view(RoleAdminView(Role, sqldb.session, endpoint="role-admin"))

    return app
示例#3
0
def administration_setup(app):
    """
    Hack to use the backend administration.
    """
    administration = Admin(name="Victims Admin",
                           index_view=SafeAdminIndexView())
    administration.init_app(app)

    # Application administration
    administration.add_view(CacheAdminView(name='Cache', endpoint='cache'))

    # Database management
    administration.add_view(
        AccountView(Account,
                    name='Accounts',
                    endpoint='accounts',
                    category='Database'))
    administration.add_view(
        HashView(Hash, name='Hashes', endpoint='hashes', category='Database'))
    administration.add_view(
        SubmissionView(Submission,
                       name='Submissions',
                       endpoint='submissions',
                       category='Database'))

    # File Management
    administration.add_view(
        FileView(app.config['UPLOAD_FOLDER'],
                 '/uploads/',
                 endpoint='uploads',
                 name='User Uploads',
                 category='Files'))
    administration.add_view(
        FileView(app.config['DOWNLOAD_FOLDER'],
                 '/downloads/',
                 endpoint='downloads',
                 name='Charon Downloads',
                 category='Files'))

    # Add links
    administration.add_link(MenuLink(name='Front End', endpoint='ui.index'))
    administration.add_link(
        MenuLink(name='Logout', endpoint='auth.logout_user'))

    return administration
示例#4
0
def init_admin(app):
    admin = Admin(app, name='Redash Admin', template_mode='bootstrap3')

    admin.add_view(QueryModelView(models.Query, models.db.session))
    admin.add_view(QueryResultModelView(models.QueryResult, models.db.session))
    admin.add_view(DashboardModelView(models.Dashboard, models.db.session))
    logout_link = MenuLink('Logout', '/logout', 'logout')

    for m in (models.Visualization, models.Widget, models.Event, models.Organization):
        admin.add_view(BaseModelView(m, models.db.session))

    admin.add_link(logout_link)
示例#5
0
    def init_app(app):
        # Flask-DebugToolbar
        debug_toolbar.init_app(app)

        # Celery
        cel.init_app(app)

        # CSRF protection
        csrf.init_app(app)

        # SQLAlchemy
        db.init_app(app)

        # User
        user_manager.init_app(app, db, User)
        user_manager.email_manager = CustomEmailManager(app)

        # Flask-Gravatar
        gravatar.init_app(app)

        # Flask-Migrate
        migrate.init_app(
            app=app,
            db=db,
            directory=str(Path(__file__).resolve().parent / "migrations"),
        )

        # Reverse proxy should used HTTPS
        if app.config["USE_REVERSE_PROXY"]:
            app.config["PREFERRED_URL_SCHEME"] = "https"
            app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)

        # API Ratelimit
        limiter.init_app(app)

        # Flask-Admin
        admin = Admin(
            name="OpenCVE Admin", template_mode="bootstrap3", index_view=HomeView()
        )
        admin.init_app(app)
        with warnings.catch_warnings():
            warnings.filterwarnings("ignore", "Fields missing from ruleset")
            admin.add_view(UserModelView(User, db.session))
        admin.add_view(CveModelView(Cve, db.session))
        admin.add_view(EventModelView(Event, db.session))
        admin.add_view(VendorModelView(Vendor, db.session))
        admin.add_view(ProductModelView(Product, db.session))
        admin.add_link(MenuLink(name="Tasks", url="/admin/tasks"))
示例#6
0
def init_admin(app, db):

    login_manager = flask_login.LoginManager()
    login_manager.init_app(app)

    session = MODELS_GLOBAL_CONTEXT['session']

    # ~ when defining this user_loader, we need an already initialized login_manager
    # ~ and an active db session
    @login_manager.user_loader
    def load_user(user_id):  # pylint: disable=unused-variable
        return session.query(User).get(user_id)

    index_view_ = TrackerAdminResources(url='/')  # pylint: disable=undefined-variable
    admin_ = Admin(app,
                   name='FlaskTracker',
                   template_mode='bootstrap3',
                   index_view=index_view_)

    # ~ we need an already initialized app (to access the app.config), when defining the ModelView classes
    globals().update(define_view_classes(app))

    admin_.add_view(TaskView(Task, db.session))  # pylint: disable=undefined-variable
    admin_.add_view(ProjectView(Project, db.session))  # pylint: disable=undefined-variable
    admin_.add_view(MilestoneView(Milestone, db.session))  # pylint: disable=undefined-variable
    admin_.add_view(OrderView(Order, db.session))  # pylint: disable=undefined-variable
    admin_.add_view(AttachmentView(Attachment, db.session))  # pylint: disable=undefined-variable

    admin_.add_view(ClaimView(Claim, db.session))  # pylint: disable=undefined-variable

    admin_.add_view(TrackerModelView(Customer, db.session, category="admin"))  # pylint: disable=undefined-variable
    admin_.add_view(HistoryView(History, db.session, category="admin"))  # pylint: disable=undefined-variable
    admin_.add_view(UserView(User, db.session, category="admin"))  # pylint: disable=undefined-variable
    admin_.add_view(WorkTimeView(WorkTime, db.session, category="admin"))  # pylint: disable=undefined-variable

    admin_.add_link(MenuLink(name='Wiki', url='/wiki/'))

    @app.route('/attachment/<path:filename>')
    def attachment(filename):  # pylint: disable=unused-variable
        return send_from_directory(app.config['ATTACHMENT_PATH'], filename)

    return admin_
示例#7
0
def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(Config)
    db.init_app(app)
    bcrypt.init_app(app)
    login_manager.init_app(app)
    admin.init_app(app)
    mail.init_app(app)
    babel.init_app(app)

    from okiedokie.users.routes import users
    from okiedokie.meetings.routes import meetings
    from okiedokie.main.routes import main
    from okiedokie.ya_payments.routes import ya_payments

    app.register_blueprint(users)
    app.register_blueprint(meetings)
    app.register_blueprint(main)
    app.register_blueprint(ya_payments)
    admin.add_link(MenuLink(name='Back Home', url='/', category='Links'))
    return app
示例#8
0
    def init_app(app):
        # Flask-Admin
        admin.init_app(app)
        admin.add_view(UserModelView(User, db.session))
        admin.add_view(CveModelView(Cve, db.session))
        admin.add_view(EventModelView(Event, db.session))
        admin.add_view(VendorModelView(Vendor, db.session))
        admin.add_view(ProductModelView(Product, db.session))
        admin.add_link(MenuLink(name="Tasks", url="/admin/tasks"))

        # Flask-DebugToolbar
        debug_toolbar.init_app(app)

        # Celery
        cel.init_app(app)

        # CSRF protection
        csrf.init_app(app)

        # SQLAlchemy
        db.init_app(app)

        # User
        user_manager.init_app(app, db, User)
        user_manager.email_manager = CustomEmailManager(app)

        # Flask-Gravatar
        gravatar.init_app(app)

        # Flask-Migrate
        migrate.init_app(
            app=app,
            db=db,
            directory=str(Path(__file__).resolve().parent / "migrations"),
        )

        # Reverse proxy should used HTTPS
        if app.config["USE_REVERSE_PROXY"]:
            app.config["PREFERRED_URL_SCHEME"] = "https"
            app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)
示例#9
0
def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    register_extensions(app)
    register_blueprints(app)

    user_datastore = SQLAlchemyUserDatastore(db, models.User, models.Role)
    security = Security(app, user_datastore)

    admin.add_view(models.AdminVenueView(models.Venue, db.session, 'Venues'))
    admin.add_view(models.AdminRoleView(models.Role, db.session, 'Roles'))
    admin.add_view(models.AdminUserView(models.User, db.session, 'Users'))
    admin.add_link(MenuLink(name='Reel Miami', url=('/')))

    @security.context_processor
    def security_context_processor():
        return dict(admin_base_template=admin.base_template,
                    admin_view=admin.index_view,
                    h=admin_helpers,
                    get_url=url_for)

    return app
示例#10
0
def create_app(extra_config_settings={}):
    # Create a Flask applicaction.

    # Instantiate Flask
    app = Flask(__name__)

    # Load App Config settings
    # Load common settings from 'app/settings.py' file
    app.config.from_object('app.settings')
    # Load local settings from 'app/local_settings.py'
    app.config.from_object('app.local_settings')
    # Load extra config settings from 'extra_config_settings' param
    app.config.update(extra_config_settings)

    # Setup db Mongo
    db.init_app(app)

    # Setup Flask-Mail
    mail.init_app(app)

    # Setup WTForms CSRFProtect
    csrf_protect.init_app(app)

    # Register blueprints
    from app.views.public_views import public_blueprint
    app.register_blueprint(public_blueprint)
    from app.views.members_views import members_blueprint
    app.register_blueprint(members_blueprint)

    # Setup an error-logger to send emails to app.config.ADMINS
    init_email_error_handler(app)

    # Setup Flask-secure
    from .models.user_models import User, Role
    app.user_datastore = MongoEngineUserDatastore(db, User, Role)
    security.init_app(app, app.user_datastore)
    # datastore.create_user(email='*****@*****.**', password='******')

    Bootstrap(app)  # Initialize flask_bootstrap

    babel.init_app(app)  # Initialize flask_babelex

    # Define bootstrap_is_hidden_field for flask-bootstrap's bootstrap_wtf.html
    from wtforms.fields import HiddenField

    def is_hidden_field_filter(field):
        return isinstance(field, HiddenField)

    app.jinja_env.globals['bootstrap_is_hidden_field'] = is_hidden_field_filter

    # Setup Flask-admin
    class AdminUserView(ModelView):
        can_create = False
        column_exclude_list = ('password')
        form_overrides = dict(password=HiddenField)

    admin = Admin(app, template_mode='bootstrap3')
    admin.add_view(AdminUserView(User))
    admin.add_view(ModelView(Role))
    path = op.join(op.dirname(__file__), 'static')
    admin.add_view(FileAdmin(path, '/static/', name='Files'))
    admin.add_link(MenuLink(name='Profile', endpoint='members.member_page'))
    admin.add_link(MenuLink(name='Logout', endpoint='security.logout'))

    return app
示例#11
0
        'children',
    ]
    column_filters = [
        'id',
        'name',
        'parent',
    ]

    # override the 'render' method to pass your own parameters to the template
    def render(self, template, **kwargs):
        return super(TreeView, self).render(template, foo="bar", **kwargs)


# Create admin
admin = admin.Admin(app,
                    name='Example: SQLAlchemy',
                    template_mode='bootstrap4')

# Add views
admin.add_view(UserAdmin(User, db.session))
admin.add_view(sqla.ModelView(Tag, db.session))
# The "Post" model gets added in the overriddent __init__(self, Post, session)
admin.add_view(PostAdmin(db.session))
admin.add_view(TreeView(Tree, db.session, category="Other"))
admin.add_sub_category(name="Links", parent_name="Other")
admin.add_link(MenuLink(name='Back Home', url='/', category='Links'))
admin.add_link(
    MenuLink(name='External link',
             url='http://www.example.com/',
             category='Links'))
示例#12
0
文件: app.py 项目: elvijs/flask-admin

class TreeView(sqla.ModelView):
    form_excluded_columns = ['children', ]


# Create admin
admin = admin.Admin(app, name='Example: SQLAlchemy', template_mode='bootstrap3')

# Add views
admin.add_view(UserAdmin(User, db.session))
admin.add_view(sqla.ModelView(Tag, db.session))
admin.add_view(PostAdmin(db.session))
admin.add_view(TreeView(Tree, db.session, category="Other"))
admin.add_sub_category(name="Links", parent_name="Other")
admin.add_link(MenuLink(name='Back Home', url='/', category='Links'))
admin.add_link(MenuLink(name='Google', url='http://www.google.com/', category='Links'))
admin.add_link(MenuLink(name='Mozilla', url='http://mozilla.org/', category='Links'))


def build_sample_db():
    """
    Populate a small db with some example entries.
    """

    import random
    import datetime

    db.drop_all()
    db.create_all()
示例#13
0
from flask_admin.base import MenuLink

test_link = \
    MenuLink(
        category='Plugins',
        name='Test Menu Link',
     url='https://airflow.apache.org/'
    )

MENU_LINKS = [
    test_link,
]
示例#14
0

# Customized Role model for SQL-Admin
class UserAdmin(ModelView):
    def is_accessible(self):
        return current_user.has_role("Admin")


admin = Admin(app,
              name=app.config["LINE_NAME"] + " Admin",
              template_mode="bootstrap3",
              index_view=MyAdminIndexView(),
              url="/")
admin.add_view(UserAdmin(User, db_session))
admin.add_view(UserAdmin(Role, db_session))
admin.add_link(MenuLink(name='Tabule', category='Odkazy', endpoint='index'))

#flask_mail
mail = Mail(app)


# views
@app.route("/")
def index():
    return render_template("index.html",
                           line_name=current_app.config["LINE_NAME"],
                           name_space=current_app.config["NAME_SPACE"])


@app.route("/control")
@login_required
示例#15
0
from airflow.plugins_manager import AirflowPlugin
from flask_admin.base import MenuLink

grafana = MenuLink(category='Grafana',
                   name='Dashboard',
                   url='http://0.0.0.0:3000')


# Defining the plugin class
class GrafanaLinksPlugin(AirflowPlugin):
    name = "GrafanaLinks"
    operators = []
    flask_blueprints = []
    hooks = []
    executors = []
    admin_views = []
    menu_links = [grafana]
示例#16
0
        """
        return is_admin(current_user)

    column_labels = dict(displayname='Display Name', )
    form_excluded_columns = ('posts', 'comments')
    column_searchable_list = ('username', 'email', 'displayname')


ADMIN.add_view(UserAdmin(User, db.session, name='Users'))


class RoleAdmin(sqla.ModelView):
    """
    Defines the Comment administration page
    """
    def is_accessible(self):
        """
        Function to check if user has access to certain page
        :return: True if accessible, False if not
        """
        return is_admin(current_user)

    column_labels = dict(name='Name', )
    form_excluded_columns = ('users', )
    column_searchable_list = ('name', 'description')


ADMIN.add_view(RoleAdmin(Role, db.session, name='Roles'))

ADMIN.add_link(MenuLink(name='Back', url='/'))
示例#17
0
        return self.render("test_plugin/test.html", content="Hello galaxy!")


v = TestView(category="Test Plugin", name="Test View")

# Creating a flask blueprint to intergrate the templates and static folder
bp = Blueprint(
    "test_plugin",
    __name__,
    template_folder=
    'templates',  # registers airflow/plugins/templates as a Jinja template folder
    static_folder='static',
    static_url_path='/static/test_plugin')

ml = MenuLink(category='Test Plugin',
              name='Test Menu Link',
              url='https://airflow.incubator.apache.org/')


# Defining the plugin class
class AirflowTestPlugin(AirflowPlugin):
    name = "test_plugin"
    operators = [PluginOperator]
    sensors = [PluginSensorOperator]
    hooks = [PluginHook]
    executors = [PluginExecutor]
    macros = [plugin_macro]
    admin_views = [v]
    flask_blueprints = [bp]
    menu_links = [ml]
        return jsonify({'hello': 'FROM THE REST API'})


v = Demultiplex(category="Demultiplex", name="Demultiplex")

# Creating a flask blueprint to integrate the templates and static folder
# When trying to add css/js refs - use this
# <link rel="stylesheet" href="{{ url_for('demultiplex_plugin.static', filename='styles.css') }}" type="text/css">

bp = Blueprint("demultiplex_plugin",
               __name__,
               template_folder='templates',
               static_folder='static',
               static_url_path='/static/test_plugin')

ml = MenuLink(category='Demultiplex',
              name='View Previous Runs',
              url='/admin/airflow/tree?dag_id=sequencer_automation')


class AirflowDemultiplexPlugin(AirflowPlugin):
    name = "demultiplex_plugin"
    operators = [PluginOperator]
    sensors = [PluginSensorOperator]
    hooks = [PluginHook]
    executors = [PluginExecutor]
    macros = [plugin_macro]
    admin_views = [v]
    flask_blueprints = [bp]
    menu_links = [ml]
示例#19
0
admin.add_view(
    UserModelView(User,
                  db.session,
                  category='Account',
                  menu_icon_type='glyph',
                  menu_icon_value='glyphicon-user'))
admin.add_view(
    PostModelView(Post,
                  db.session,
                  category='Account',
                  menu_icon_type='glyph',
                  menu_icon_value='glyphicon-edit'))

admin_add_category(admin, 'Other')
admin.add_sub_category(name='Links', parent_name='Other')
admin.add_link(MenuLink(name='Back Home', url='/admin', category='Other'))
admin.add_link(
    MenuLink(name='Flask-Demos',
             url='https://github.com/AngelLiang/Flask-Demos',
             category='Links'))
admin.add_link(
    MenuLink(name='Baidu', url='http://www.baidu.com/', category='Links'))

# 添加到banav的右上角
admin.add_links(MenuLink(name='Logout', url='/'))


def initdata(user_count=50, post_count=100):
    import random
    from faker import Faker
    fake = Faker('zh_CN')
示例#20
0
# Creating a flask admin BaseView
class TestView(BaseView):
    @expose('/')
    def test(self):
        # in this example, put your test_plugin/test.html template at airflow/plugins/templates/test_plugin/test.html
        return self.render("test_plugin/test.html", content="Hello galaxy!")
v = TestView(category="Test Plugin", name="Test View")

# Creating a flask blueprint to intergrate the templates and static folder
bp = Blueprint(
    "test_plugin", __name__,
    template_folder='templates', # registers airflow/plugins/templates as a Jinja template folder
    static_folder='static',
    static_url_path='/static/test_plugin')

ml = MenuLink(
    category='Test Plugin',
    name='Test Menu Link',
    url='http://pythonhosted.org/airflow/')

# Defining the plugin class
class AirflowTestPlugin(AirflowPlugin):
    name = "test_plugin"
    operators = [PluginOperator]
    hooks = [PluginHook]
    executors = [PluginExecutor]
    macros = [plugin_macro]
    admin_views = [v]
    flask_blueprints = [bp]
    menu_links = [ml]
示例#21
0
        return redirect(url_for('main.index'))

    can_export = True
    export_types = ['csv']
    static_folder = 'static'


class UserAdmin(AdminModelView):
    column_list = ['username', 'email', 'role']
    form_columns = ['username', 'email', 'role']
    column_editable_list = [
        'email',
        'role',
    ]
    column_searchable_list = [
        'username',
        'email',
        'role.name',
    ]


admin.add_view(UserAdmin(User, db.session))
admin.add_view(AdminModelView(Book, db.session, category='Books'))
admin.add_view(AdminModelView(Author, db.session, category='Books'))
admin.add_view(AdminModelView(Category, db.session, category='Books'))
admin.add_view(AdminModelView(Identifier, db.session, category='Books'))
admin.add_view(AdminModelView(Link, db.session, category='Books'))
admin.add_view(AdminModelView(Item, db.session, category='BookItems'))
admin.add_view(AdminModelView(History, db.session, category='BookItems'))
admin.add_link(MenuLink(name='Exit Admin', url='/'))
示例#22
0

v = TestView(category="Rule Plugin", name="Rules View")
v2 = NetworkView(category="Rule Plugin", name="Network")
v3 = ServiceView(category="Rule Plugin", name="Service")
v4 = PrevStateView(category="Rule Plugin", name="Previous States")
v5 = RedisKeyView(category="Rule Plugin", name="KPI Data")
# Creating a flask blueprint to intergrate the templates and static folder
bp = Blueprint(
    "rule_plugin",
    __name__,
    template_folder=
    'templates',  # registers airflow/plugins/templates as a Jinja template folder
    static_folder='static',
    static_url_path='/static/rules')

ml = MenuLink(category='W1', name='UAT', url='http://10.133.12.163')
ml2 = MenuLink(category='W1', name='Production', url='http://121.244.255.107')


# Defining the plugin class
class AirflowTestPlugin(AirflowPlugin):
    name = "rule_plugin"
    operators = [PluginOperator]
    hooks = [PluginHook]
    executors = [PluginExecutor]
    macros = [plugin_macro]
    admin_views = [v, v2, v3, v4, v5]
    flask_blueprints = [bp]
    menu_links = [ml, ml2]
示例#23
0
def create_app(extra_config_settings={}):
    # Create a Flask applicaction.

    # Instantiate Flask
    app = Flask(__name__)

    # Load App Config settings
    # Load common settings from 'app/settings.py' file
    app.config.from_object('app.settings')
    # Load local settings from 'app/local_settings.py'
    app.config.from_object('app.local_settings')
    # Load extra config settings from 'extra_config_settings' param
    app.config.update(extra_config_settings)

    # Setup db Mongo
    db.init_app(app)

    # Setup Flask-Mail
    #mail.init_app(app)

    # Setup WTForms CSRFProtect
    csrf_protect.init_app(app)

    # Register blueprints
    from app.views.public_views import public_blueprint
    app.register_blueprint(public_blueprint)
    from app.views.success import members_blueprint
    app.register_blueprint(members_blueprint)
    from app.views.admin_views import admin_blueprint
    app.register_blueprint(admin_blueprint, url_prefix='/admin')
    from app.views.mod_views import mod_blueprint
    app.register_blueprint(mod_blueprint, url_prefix='/mod')
    from app.views.biz_views import biz_blueprint
    app.register_blueprint(biz_blueprint, url_prefix='/biz')
    # Setup an error-logger to send emails to app.config.ADMINS
    #init_email_error_handler(app)

    # Setup Flask-secure
    from .models.user_models import Role, User
    app.user_datastore = MongoEngineUserDatastore(db, User, Role)
    security.init_app(app, app.user_datastore, register_form=registerForm)
    # datastore.create_user(email='*****@*****.**', password='******')

    babel.init_app(app)  # Initialize flask_babelex

    # Setup Flask-admin
    class AdminUserView(ModelView):
        can_create = False
        column_exclude_list = ('password')
        column_editable_list = ['active']

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

    adminDash = Admin(
        app,
        name='admin',
        template_mode='bootstrap4',
        url="/admin",
        endpoint='admin'
    )  #, index_view=adminView(url='/admin', endpoint='admin'))
    adminDash.add_view(AdminUserView(User))
    adminDash.add_view(ModelView(Role))
    path = op.join(op.dirname(__file__), './')
    adminDash.add_view(FileAdmin(path, '/', name='Files'))
    adminDash.add_link(MenuLink(name='Profile',
                                endpoint='members.member_page'))
    adminDash.add_link(MenuLink(name='Logout', endpoint='security.logout'))
    return app
示例#24
0
from flask_admin.base import MenuLink

ElasticsearchLink = MenuLink(category='Elasticsearch Plugin', name='More Info', url='https://marclamberti.com')
示例#25
0
from models import *
# Import admin classes from admin
from admin import *

# Create admin panel
admin = Admin(app, 'Na Rogah', url='/', index_view=HomeAdminView(name='Home'))
admin.add_view(
    TimetableAdminView(Timetable, db.session, name='Расписание работы'))
admin.add_view(TablesAdminView(Tables, db.session, name='Столы'))
admin.add_view(CategoryAdminView(Category, db.session, name='Категории'))
admin.add_view(MenuAdminView(Menu, db.session, name='Меню'))
admin.add_view(SubMenuAdminView(SubMenu, db.session, name='Подменю'))
admin.add_view(UsersAdminView(Users, db.session, name='Пользователи'))
admin.add_view(BookingAdminView(Booking, db.session, name='Бронирование'))
#logout link
admin.add_link(MenuLink(name='Выйти', category='', url="/logout"))

# FLASK-SECURITY
user_datastore = SQLAlchemyUserDatastore(db, Users, Role)
security = Security(app, user_datastore)

# For sending emails with Flask-Mail
mail = Mail(app)

# import function for delete old booking records from db
from background_invoker import delete_old_booking, delete_old_access_codes
# BackgroundScheduler
scheduler = BackgroundScheduler()
scheduler.add_job(func=delete_old_booking, trigger="interval", seconds=30)
scheduler.add_job(func=delete_old_access_codes, trigger="interval", seconds=30)
scheduler.start()
示例#26
0
class MyModelView(ModelView):
    column_display_pk = True
    column_hide_backrefs = True


# Admin views
admin = Admin(app, name='Art Gallery', template_mode='bootstrap3')
# admin = Admin(app, name='art_gallery', base_template='base.html')
admin.add_view(MyModelView(AdminUser, db.session))
admin.add_view(MyModelView(User, db.session))
admin.add_view(MyModelView(Feedback, db.session))
admin.add_view(MyModelView(Paintings, db.session))
admin.add_view(MyModelView(Artist, db.session))
# Add home link by url
admin.add_link(MenuLink(name='Back', url='/'))


@app.route('/testdb')
def testdb():
    user = Paintings.query.with_entities(Paintings.name, Paintings.painting_photo).filter_by(artist_id=1)
    print dict(user.all())
    for u in user.all():
        print u
    # return render_template("login.html",title="login")
    return "done!"

@app.route('/', methods=['GET', 'POST'])
def index():
    title = 'Home'
    form = FeedbackForm()
示例#27
0
    "category": "Search",
    "category_icon": "fa-th",
    "href": "https://www.google.com"
}

# Creating a flask blueprint to intergrate the templates and static folder
bp = Blueprint(
    "test_plugin",
    __name__,
    template_folder=
    'templates',  # registers airflow/plugins/templates as a Jinja template folder
    static_folder='static',
    static_url_path='/static/test_plugin')

ml = MenuLink(category='Test Plugin',
              name="Test Menu Link",
              url="https://airflow.incubator.apache.org/")


# Defining the plugin class
class AirflowTestPlugin(AirflowPlugin):
    name = "test_plugin"
    operators = [PluginOperator]
    sensors = [PluginSensorOperator]
    hooks = [PluginHook]
    executors = [PluginExecutor]
    macros = [plugin_macro]
    admin_views = [v]
    flask_blueprints = [bp]
    menu_links = [ml]
    appbuilder_views = [v_appbuilder_package]
示例#28
0
        return MyForm

    def update_model(self, form, model):
        print('Currently not supported')
        return True


admin_view = DataView(category='OpenAQ', name='DataView')
blue_print2 = Blueprint('dataview_plugin',
                        __name__,
                        template_folder='templates',
                        static_folder='static',
                        static_url_path='/static/dataview_plugin')

ml = MenuLink(category='OpenAQ',
              name='S3 Bucket',
              url='https://openaq-fetches.s3.amazonaws.com/index.html')

altview = Tes(model='Stations',
              name='Stations',
              endpoint='test11',
              category='OpenAQ')


class AirflowDataView(AirflowPlugin):
    name = 'dataview_plugin'
    admin_views = [admin_view, altview]
    flask_blueprints = [blue_print2]
    menu_links = [ml]
示例#29
0
from flask import render_template, flash, redirect, session, url_for, request, \
                  g, Markup, jsonify, json
from flask_login import login_user, logout_user, current_user, login_required
from flask_admin.base import MenuLink
from datetime import datetime
from dateutil.parser import parse
from app import app, db, lm, admin  #, hashids
from .models import *
from .forms import *
from .admin import AdminModelView

admin.add_link(MenuLink(name='Back to Visitor Health Log', url='/'))
admin.add_view(AdminModelView(User, db.session))
admin.add_view(AdminModelView(Visitor, db.session))


def redirect_dest(fallback):
    return request.args.get('next') or fallback


@lm.user_loader
def load_user(id):
    return User.query.get(int(id))


@app.before_request
def before_request():
    g.user = current_user
    if g.user.is_authenticated:
        g.user.last_seen = datetime.now()
        db.session.add(g.user)
示例#30
0
    column_labels = dict(
        product_type_code='Code',
        product_type_name='Name',
        product_type_description='Description')

    def on_model_change(self, form, Product, is_created):
        if is_created:
            Product.created_by = session['profile']['email']
        else:
            Product.modified_by = session['profile']['email']


""" Admin app provisioning.
    - Instantiates Admin globally, for wsgi container
    - Order in which views and links are added corresponds to main nav menu
"""
admin = Admin(
    app, name='OAO Account Administration', template_mode='bootstrap3')

admin.add_view(ClientAdmin(Client, db.session))
# custom links for clients, to include active_client_flag filter
admin.add_link(
    MenuLink(name='Active', category='Client', url='/admin/client/?flt0_0=1'))
admin.add_link(MenuLink(name='All', category='Client', url='/admin/client'))
admin.add_view(EmployeeAdmin(Employee, db.session))
admin.add_view(ProductAdmin(Product, db.session))
admin.add_link(MenuLink(name='Logout', url='/logout'))

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)