Beispiel #1
0
def setup_app(app):
    """Register all administration views with the Flask application."""
    app.config.setdefault("ADMIN_NAME", "Invenio")
    app.config.setdefault("ADMIN_UI_SKIN", "skin-blue")

    # Initialize app
    admin = Admin(
        name=app.config['ADMIN_NAME'],
        index_view=AdminIndexView(
            menu_icon_type='fa',
            menu_icon_value='fa-home'),
        base_template="admin_base.html",
        template_mode='bootstrap3'
    )

    # TODO remove when 1.2.1 is released
    if not hasattr(admin, 'category_icon_classes'):
        admin.category_icon_classes = {}

    admin.init_app(app)

    # Create registry and run discovery
    app.extensions['registry']['admin'] = AdminDiscoveryRegistry(
        'admin', app=app, with_setup=True, admin=admin
    )
def test_admin(db, app):
    """Test flask-admin interace."""
    admin = Admin(app, name="AdminExt")

    # Register models in admin
    for adminview in (sip_adminview, sipfile_adminview, recordsip_adminview):
        assert 'model' in adminview
        assert 'modelview' in adminview
        admin_kwargs = dict(adminview)
        model = admin_kwargs.pop('model')
        modelview = admin_kwargs.pop('modelview')
        admin.add_view(modelview(model, db.session, **admin_kwargs))

    # Check if generated admin menu contains the correct items
    menu_items = {str(item.name): item for item in admin.menu()}

    # PIDStore should be a category
    assert 'Records' in menu_items
    assert menu_items['Records'].is_category()
    assert isinstance(menu_items['Records'], menu.MenuCategory)

    # Items in PIDStore menu should be the modelviews
    submenu_items = {str(item.name): item for item in
                     menu_items['Records'].get_children()}
    assert 'SIP' in submenu_items
    assert 'RecordSIP' in submenu_items
    assert 'SIPFile' in submenu_items
    assert isinstance(submenu_items['SIP'], menu.MenuView)
    assert isinstance(submenu_items['RecordSIP'], menu.MenuView)
    assert isinstance(submenu_items['SIPFile'], menu.MenuView)
def test_admin(app):
    """Test flask-admin interace."""
    InvenioOAuthClient(app)

    assert isinstance(remote_account_adminview, dict)
    assert isinstance(remote_token_adminview, dict)

    assert 'model' in remote_account_adminview
    assert 'modelview' in remote_account_adminview
    assert 'model' in remote_token_adminview
    assert 'modelview' in remote_token_adminview

    admin = Admin(app, name='Test')

    user_model = remote_account_adminview.pop('model')
    user_view = remote_account_adminview.pop('modelview')
    admin.add_view(user_view(user_model, db.session,
                             **remote_account_adminview))

    with app.app_context():
        # create user and save url for testing
        request_url = url_for('remoteaccount.index_view')

    with app.app_context():
        with app.test_client() as client:
            res = client.get(
                request_url,
                follow_redirects=True
            )
            assert res.status_code == 200
            assert 'Extra Data' in str(res.get_data())
            assert 'Tokens' in str(res.get_data())
Beispiel #4
0
def create_app(settings_override=None):
    """Return the PyGotham admin application.

    :param settings_override: a ``dict`` of settings to override.

    """
    app = factory.create_app(__name__, __path__, settings_override)

    app.jinja_env.filters['rst'] = filters.rst_to_html

    # Because the admin is being wrapped inside an app, the url needs to
    # be overridden to use / instead of the default of /admin/. One of
    # the side effects of doing this is that the static assets won't
    # serve correctly without overriding static_url_path as well.
    admin = Admin(
        app, name='PyGotham',
        static_url_path='/admin',
        index_view=HomeView(endpoint='', url='/'),
    )

    # Iterate through all the modules of the current package. For each
    # module, check the public API for any instances of types that can
    # be added to the Flask-Admin menu and register them.
    for _, name, _ in pkgutil.iter_modules(__path__):
        module = importlib.import_module('{}.{}'.format(__name__, name))
        for attr in dir(module):
            view = getattr(module, attr)
            if isinstance(view, ModelView):
                admin.add_view(view)
            elif isinstance(view, MenuLink):
                admin.add_link(view)

    return app
Beispiel #5
0
def run_admin(host, port, db, password, listen):
    conn = redis.Redis(host, int(port or 6379), int(db or 0), password)
    tiger = TaskTiger(setup_structlog=True, connection=conn)
    app = Flask(__name__)
    admin = Admin(app, url='/')
    admin.add_view(TaskTigerView(tiger, name='TaskTiger', endpoint='tasktiger'))
    app.run(debug=True, port=int(listen or 5000))
def test_admin():
    """Test flask-admin interace."""
    app = Flask('testapp')
    FlaskCLI(app)
    InvenioDB(app)
    InvenioPIDStore(app)
    admin = Admin(app, name="AdminExt")

    pid_kwargs = dict(pid_adminview)

    assert 'model' in pid_adminview
    assert 'modelview' in pid_adminview

    # Register both models in admin
    pid_model = pid_kwargs.pop('model')
    pid_mv = pid_kwargs.pop('modelview')
    admin.add_view(pid_mv(pid_model, db.session, **pid_kwargs))

    # Check if generated admin menu contains the correct items
    menu_items = {str(item.name): item for item in admin.menu()}

    # PIDStore should be a category
    assert 'Records' in menu_items
    assert menu_items['Records'].is_category()
    assert isinstance(menu_items['Records'], menu.MenuCategory)

    # Items in PIDStore menu should be the modelviews
    submenu_items = {str(item.name): item for item in
                     menu_items['Records'].get_children()}
    assert 'Persistent Identifier' in submenu_items
    assert isinstance(submenu_items['Persistent Identifier'], menu.MenuView)
def test_admin(app):
    """Test flask-admin interace."""
    admin = Admin(app, name="Test")

    assert 'model' in record_adminview
    assert 'modelview' in record_adminview

    # Register both models in admin
    model = record_adminview.pop('model')
    view = record_adminview.pop('modelview')
    admin.add_view(view(model, db.session, **record_adminview))

    # Check if generated admin menu contains the correct items
    menu_items = {str(item.name): item for item in admin.menu()}
    assert 'Records' in menu_items
    assert menu_items['Records'].is_category()

    submenu_items = {
        str(item.name): item for item in menu_items['Records'].get_children()}
    assert 'Record Metadata' in submenu_items
    assert isinstance(submenu_items['Record Metadata'], menu.MenuView)

    # Create a test record.
    with app.app_context():
        rec_uuid = str(uuid.uuid4())
        Record.create({'title': 'test'}, id_=rec_uuid)
        db.session.commit()

    with app.test_request_context():
        index_view_url = url_for('recordmetadata.index_view')
        delete_view_url = url_for('recordmetadata.delete_view')
        detail_view_url = url_for(
            'recordmetadata.details_view', id=rec_uuid)

    with app.test_client() as client:
        # List index view and check record is there.
        res = client.get(index_view_url)
        assert res.status_code == 200

        # Fake a problem with SQLAlchemy.
        with patch('invenio_records.admin.Record') as db_mock:
            db_mock.side_effect = SQLAlchemyError()
            res = client.post(
                delete_view_url, data={'id': rec_uuid}, follow_redirects=True)
            assert res.status_code == 200

        # Delete it.
        res = client.post(
            delete_view_url, data={'id': rec_uuid}, follow_redirects=True)
        assert res.status_code == 200

        # View the delete record
        res = client.get(detail_view_url)
        assert res.status_code == 200
        assert '<pre>null</pre>' in res.get_data(as_text=True)

        # Delete it again
        res = client.post(
            delete_view_url, data={'id': rec_uuid}, follow_redirects=True)
        assert res.status_code == 200
Beispiel #8
0
def create_admin(app=None):
    admin = Admin(app, name='CleanBlogAdmin',
                    index_view=MyIndexView(),
                  base_template='admin/my_master.html')
    #admin.add_view(MyView(name='Hello'))
    admin.add_view(UserView(User))
    admin.add_view(PostView(Post))
Beispiel #9
0
def create_admin(app):
    admin = Admin(app)

    admin.add_view(ModelView(Envelope, db.session))
    admin.add_view(ModelView(Budget, db.session))

    return admin
class AdminView(object):
    """Main Admin class View"""
    def __init__(self, app_name):
        self.admin = Admin(name=app_name, template_mode='bootstrap3', index_view=MyHomeView())

    def init(self, app):
        """Init flask admin"""
        self.admin.init_app(app)
        self._add_views()

    def _add_views(self):
        self._add_models_to_menu()

    def _add_models_to_menu(self):
        ev = EventView(Event, db.session)
        self.admin.add_view(ev)

    @staticmethod
    def init_login(app):
        """Init login"""
        login_manager = login.LoginManager()
        login_manager.init_app(app)

        # Create user loader function
        @login_manager.user_loader
        def load_user(user_id):
            return db.session.query(User).get(user_id)
def test_admin(app, db):
    """Test admin interface."""
    assert isinstance(ca, dict)
    assert isinstance(ta, dict)

    assert 'model' in ca
    assert 'modelview' in ca
    assert 'model' in ta
    assert 'modelview' in ta

    # Create admin
    admin = Admin(app, name='Example: Sequence Generator')

    # Add views
    admin.add_view(ta['modelview'](ta['model'], db.session))
    admin.add_view(ca['modelview'](ca['model'], db.session))

    with app.app_context():
        # Create test data
        seq = Sequence(Template.create('ID', 'File {counter}'))
        assert seq.next() == 'File 0'
        assert seq.next() == 'File 1'
        assert seq.next() == 'File 2'
        db.session.commit()

        with app.test_request_context():
            request_url = url_for('counter.reset_view')
        with app.test_client() as client:
            # Reset counter
            client.post(request_url,
                        data={'start': 0, 'rowid': 'File {counter}'},
                        follow_redirects=False)

        # Assert that reset was successful
        assert seq.next() == 'File 0'
    def register(app):
        """
        Register blueprints
        :param app: a flask app instance
        :return:
        """
        app.register_blueprint(home_routes)
        admin = Admin(app, name='Open Event API', template_mode='bootstrap3', index_view=MyAdminIndexView(),
                      base_template='admin_base.html')

        # Get all the models in the db, all models should have a explicit __tablename__
        classes, models, table_names = [], [], []
        # noinspection PyProtectedMember
        for class_ in list(db.Model._decl_class_registry.values()):
            try:
                table_names.append(class_.__tablename__)
                classes.append(class_)
            except:
                pass
        for table in list(db.metadata.tables.items()):
            if table[0] in table_names:
                models.append(classes[table_names.index(table[0])])

        for model in models:
            admin.add_view(AdminModelView(model, db.session))
Beispiel #13
0
def create_app(app=None, config_file=None):

    if not app:
        app = Flask(__name__, template_folder="views")

    # Config files
    app.config.from_pyfile("config/base.py")
    if config_file:
    	app.config.from_pyfile("config/{}.py".format(config_file))

    # Extensions
    Foundation(app)
    admin = Admin(app, name='Bolsa de Trabajo', template_mode='bootstrap3')

    """
    CONTROLADORES 
    """
    # Blueprints
    app.register_blueprint(frontend)    

    # Admin Views
    admin.add_view(AdminSkillView(Skill, db.session))
    admin.add_view(AdminStudentView(Student, db.session))
    admin.add_view(AdminCompanyView(Company, db.session))

    return app
Beispiel #14
0
def create_app(script_info=None):
    """Create app."""
    app = Flask(__name__)
    # logging
    if not os.path.exists(user_data_dir):
        os.makedirs(user_data_dir)
    log_dir = os.path.join(user_data_dir, 'log')
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    peewee_logger = logging.getLogger('peewee')
    peewee_logger.setLevel(logging.INFO)
    chardet_logger = logging.getLogger('chardet')
    chardet_logger.setLevel(logging.INFO)
    default_log_file = os.path.join(log_dir, 'iqdb_tagger_server.log')
    file_handler = TimedRotatingFileHandler(default_log_file, 'midnight')
    file_handler.setLevel(logging.WARNING)
    file_handler.setFormatter(logging.Formatter('<%(asctime)s> <%(levelname)s> %(message)s'))
    app.logger.addHandler(file_handler)
    app.logger.addHandler(peewee_logger)
    app.logger.addHandler(chardet_logger)
    # reloader
    reloader = app.config['TEMPLATES_AUTO_RELOAD'] = \
        bool(os.getenv('IQDB_TAGGER_RELOADER')) or app.config['TEMPLATES_AUTO_RELOAD']  # NOQA
    if reloader:
        app.jinja_env.auto_reload = True
    app.config['SECRET_KEY'] = os.getenv('IQDB_TAGGER_SECRET_KEY') or os.urandom(24)
    app.config['WTF_CSRF_ENABLED'] = False
    # debug
    debug = app.config['DEBUG'] = bool(os.getenv('IQDB_TAGGER_DEBUG')) or app.config['DEBUG']
    if debug:
        app.config['DEBUG'] = True
        app.config['LOGGER_HANDLER_POLICY'] = 'debug'
        logging.basicConfig(level=logging.DEBUG)
        pprint.pprint(app.config)
        print('Log file: {}'.format(default_log_file))
        print('script info:{}'.format(script_info))
    db_path = os.getenv('IQDB_TAGGER_DB_PATH') or default_db_path
    init_program()
    init_db(db_path)
    # app and db
    app.app_context().push()

    @app.shell_context_processor
    def shell_context():  # pylint: disable=unused-variable
        return {'app': app}

    # flask-admin
    app_admin = Admin(
        app, name='IQDB Tagger', template_mode='bootstrap3',
        index_view=views.HomeView(name='Home', template='iqdb_tagger/index.html', url='/'))

    app_admin.add_view(views.MatchView())
    # app_admin.add_view(ModelView(ImageMatch, category='DB'))
    # app_admin.add_view(ModelView(ImageMatchRelationship, category='DB'))
    # app_admin.add_view(ModelView(ImageModel, category='DB'))
    # app_admin.add_view(ModelView(MatchTagRelationship, category='DB'))
    # routing
    app.add_url_rule('/thumb/<path:basename>', view_func=thumb)
    return app
Beispiel #15
0
    def register(self,app, options, first_registration=False):
        print app
        admin = Admin(app, name='blog')

        for v in self.views:
            admin.add_view(v)

        return super(AdminBlueprint, self).register(app, options, first_registration)
Beispiel #16
0
class InvenioAdmin(object):
    """Invenio-Admin extension.

    :param app: Flask application.
    :param entry_point_group: Name of entry point group to load views/models
        from.
    """

    def __init__(self, app=None, anonymous=False, **kwargs):
        """InvenioAdmin extension initialization.

        If `anonymous` is True, the admin views are accessible to anonymous
        users and all security checks are bypassed (use for testing only).
        """
        self.anonymous = anonymous
        if app:
            self.init_app(app, **kwargs)

    def init_app(self, app, entry_point_group='invenio_admin.views',
                 **kwargs):
        """Flask application initialization."""
        self.init_config(app)

        # Create admin instance.
        index_view = AdminIndexView if self.anonymous \
            else ProtectedAdminIndexView
        self.admin = Admin(
            app,
            name=app.config['ADMIN_APPNAME'],
            template_mode=kwargs.get('template_mode', 'bootstrap3'),
            index_view=index_view())

        # Load administration interfaces defined by entry points.
        if entry_point_group:
            for ep in pkg_resources.iter_entry_points(group=entry_point_group):
                adminview_dict = dict(ep.load())
                assert 'model' in adminview_dict, \
                    "Admin's entrypoint dictionary must define the 'model'"
                assert 'modelview' in adminview_dict, \
                    "Admin's entrypoint dictionary must define the 'modelview'"
                model = adminview_dict.pop('model')
                modelview = adminview_dict.pop('modelview')

                # If not in anonymous access mode add model-based security
                if not self.anonymous:
                    modelview = protected_adminview_factory(modelview)
                self.admin.add_view(
                    modelview(model, db.session, **adminview_dict))
        app.extensions['invenio-admin'] = self

    def init_config(self, app):
        """Initialize configuration."""
        # Set default configuration
        for k in dir(config):
            if k.startswith("ADMIN_"):
                app.config.setdefault(k, getattr(config, k))
def create_app():
    app = Flask(__name__)
    app.debug=True
    app.secret_key = 'fddfa'

    # 设置配置文件
    app.config.from_object('settings.BaseConfig')

    # 注册蓝图
    app.register_blueprint(app01_blue,url_prefix='/app01')
    app.register_blueprint(rbac_blue,url_prefix='/rbac')

    # 注册后台管理的组件
    flask_admin = Admin(base_template='admin/base_menu.html') # 使用自己的模板,覆盖原来的模板
    flask_admin.init_app(app)
    # flask_admin.add_view(CustomView(name='cus_name',endpoint='helloworld'))
    # 上一句,假如设定了name属性,在页面菜单显示name的值,否则显示customView,
    # 设置了endpoint属性,则是会改变url,url就是endpoint的值


    models = [Group,User,Role,]
    for model in models:
        flask_admin.add_view(
            # CustomModelView(model, session_conn,name='权限相关'))  # 如果设置name属性,则这些表都会显示在一组
            CustomModelView(model, session_conn))

    # 类似于注册处理这个model表的类
    flask_admin.add_view(MenuModelView(Menu,session_conn,endpoint='menu'))
    flask_admin.add_view(PermissionModelView(Permission,session_conn,endpoint='permission'))

    return app
Beispiel #18
0
def test_admin(app):
    """Test flask-admin interace."""
    InvenioAccounts(app)

    assert isinstance(role_adminview, dict)
    assert isinstance(user_adminview, dict)

    assert 'model' in role_adminview
    assert 'modelview' in role_adminview
    assert 'model' in user_adminview
    assert 'modelview' in user_adminview

    admin = Admin(app, name="Test")

    user_model = user_adminview.pop('model')
    user_view = user_adminview.pop('modelview')
    admin.add_view(user_view(user_model, db.session, **user_adminview))

    # Test activation and deactivation

    with app.app_context():
        # create user and save url for testing
        request_url = url_for("user.action_view")
        kwargs = dict(email="*****@*****.**", active=False,
                      password=encrypt_password('aafaf4as5fa'))
        _datastore.create_user(**kwargs)
        _datastore.commit()

    with app.app_context():
        with app.test_client() as client:
            inserted_id = _datastore.get_user('*****@*****.**').id

            res = client.post(
                request_url,
                data={'rowid': inserted_id, 'action': 'activate'},
                follow_redirects=True
            )
            assert res.status_code == 200

            res = client.post(
                request_url,
                data={'rowid': inserted_id, 'action': 'inactivate'},
                follow_redirects=True
            )
            assert res.status_code == 200

            pytest.raises(ValueError, client.post, request_url,
                          data={'rowid': -42, 'action': 'inactivate'},
                          follow_redirects=True
                          )
            pytest.raises(ValueError, client.post, request_url,
                          data={'rowid': -42, 'action': 'activate'},
                          follow_redirects=True
                          )
def test_modal_edit():
    # bootstrap 2 - test edit_modal
    app_bs2 = Flask(__name__)
    admin_bs2 = Admin(app_bs2, template_mode="bootstrap2")

    class EditModalOn(fileadmin.FileAdmin):
        edit_modal = True
        editable_extensions = ('txt',)

    class EditModalOff(fileadmin.FileAdmin):
        edit_modal = False
        editable_extensions = ('txt',)

    path = op.join(op.dirname(__file__), 'files')
    edit_modal_on = EditModalOn(path, '/files/', endpoint='edit_modal_on')
    edit_modal_off = EditModalOff(path, '/files/', endpoint='edit_modal_off')

    admin_bs2.add_view(edit_modal_on)
    admin_bs2.add_view(edit_modal_off)

    client_bs2 = app_bs2.test_client()

    # bootstrap 2 - ensure modal window is added when edit_modal is enabled
    rv = client_bs2.get('/admin/edit_modal_on/')
    eq_(rv.status_code, 200)
    data = rv.data.decode('utf-8')
    ok_('fa_modal_window' in data)

    # bootstrap 2 - test edit modal disabled
    rv = client_bs2.get('/admin/edit_modal_off/')
    eq_(rv.status_code, 200)
    data = rv.data.decode('utf-8')
    ok_('fa_modal_window' not in data)

    # bootstrap 3
    app_bs3 = Flask(__name__)
    admin_bs3 = Admin(app_bs3, template_mode="bootstrap3")

    admin_bs3.add_view(edit_modal_on)
    admin_bs3.add_view(edit_modal_off)

    client_bs3 = app_bs3.test_client()

    # bootstrap 3 - ensure modal window is added when edit_modal is enabled
    rv = client_bs3.get('/admin/edit_modal_on/')
    eq_(rv.status_code, 200)
    data = rv.data.decode('utf-8')
    ok_('fa_modal_window' in data)

    # bootstrap 3 - test modal disabled
    rv = client_bs3.get('/admin/edit_modal_off/')
    eq_(rv.status_code, 200)
    data = rv.data.decode('utf-8')
    ok_('fa_modal_window' not in data)
Beispiel #20
0
def init_admin():
    # Initialize flask-security
    user_datastore = SQLAlchemyUserDatastore(db, models.User, models.Role)
    security = Security(app, user_datastore)

    # Initialize custom admin views
    admin = Admin(app, name='trevorroman.com', template_mode='bootstrap3')
    admin.add_view(PostView(models.Post, db.session))
    admin.add_view(UserView(models.User, db.session))
    admin.add_view(TagView(models.Tag, db.session))

    return admin, user_datastore
def test_admin(app):
    """Test Flask-Admin interace."""
    admin = Admin(app, name='Test')

    assert 'model' in set_adminview
    assert 'modelview' in set_adminview

    # Register both models in admin
    model = set_adminview.pop('model')
    view = set_adminview.pop('modelview')
    admin.add_view(view(model, db.session, **set_adminview))

    # Check if generated admin menu contains the correct items
    menu_items = {str(item.name): item for item in admin.menu()}
    assert 'OAI-PMH' in menu_items
    assert menu_items['OAI-PMH'].is_category()

    submenu_items = {
        str(item.name): item for item in menu_items['OAI-PMH'].get_children()
    }
    assert 'Sets' in submenu_items
    assert isinstance(submenu_items['Sets'], menu.MenuView)

    # Create a test set.
    with app.app_context():
        test_set = OAISet(id=1,
                          spec='test',
                          name='test_name',
                          description='some test description',
                          search_pattern='test search')
        db.session.add(test_set)
        db.session.commit()

    with app.test_request_context():
        index_view_url = url_for('oaiset.index_view')
        delete_view_url = url_for('oaiset.delete_view')
        detail_view_url = url_for('oaiset.details_view', id=1)

    with app.test_client() as client:
        # List index view and check record is there.
        res = client.get(index_view_url)
        assert res.status_code == 200

        # Deletion is forbiden.
        res = client.post(
            delete_view_url, data={'id': 1}, follow_redirects=True)
        assert res.status_code == 200

        # View the deleted record.
        res = client.get(detail_view_url)
        assert res.status_code == 200
        assert 1 == OAISet.query.count()
Beispiel #22
0
def create_app(config_name):
    '''Flask application factory function'''
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    app.jinja_env.line_statement_prefix = '%'
    bootstrap.init_app(app)

    db.init_app(app)
    app.user_datastore = PeeweeUserDatastore(db, User, Role, UserRoles)
    security = Security(app, app.user_datastore)

    #     Setup blueprints

    from .public import public as public_blueprint
    app.register_blueprint(public_blueprint)

    from .member import member as member_blueprint
    app.register_blueprint(member_blueprint)

    from .board import board as board_blueprint
    app.register_blueprint(board_blueprint)

    from .invoice import invoice as invoice_blueprint
    app.register_blueprint(invoice_blueprint)

    #     Setup flask-admin

    from .admin.controller import MyModelView, MyAdminView
    admin = Admin(app, 'Admin Panel',
                  template_mode='bootstrap3',
                  index_view=MyAdminView(
                      name='Admin Index',
                      template='admin/index.html',
                      url='/admin'))

    admin.add_view(MyModelView(User))
    admin.add_view(MyModelView(Role))
    admin.add_view(MyModelView(UserRoles))

    # define a context processor for merging flask-admin's template context
    # into the flask-security views.
    @security.context_processor
    def security_context_processor():
        return dict(
            admin_base_template=admin.base_template,
            admin_view=admin.index_view,
            h=admin_helpers
        )

    return app
Beispiel #23
0
def init_app(app):
    app.register_blueprint(bp)
    app.json_encoder = h.JSONEncoder

    processor_admin = Admin(app,
                            url='/processor_admin',
                            endpoint='/processor_admin',
                            name='Processor Portal',
                            base_template='processor/admin/base.html',
                            template_mode='bootstrap3')
    processor_admin.add_view(ChargeView(
        Charge, db.session, endpoint='charges'))
    return app
Beispiel #24
0
def init_app(app):
    admin = Admin(
        app, name='Dashboard',
        template_mode='bootstrap3',
        endpoint='admin',
        index_view=IndexView(),
    )
    admin.add_view(UserModelView(User, db.session))
    admin.add_view(CafeModelView(Cafe, db.session))
    admin.add_view(TopicModelView(Topic, db.session))

    if app.config.get('ADMIN_STATIC_URL'):
        app.jinja_env.globals['url_for'] = url_for
Beispiel #25
0
def setup(app):
    admin = Admin(app, name='house_tracker', template_mode='bootstrap3',
                  index_view=MyAdminIndexView())
    admin.add_view(CommunityView(Community, get_session()))
    admin.add_view(HouseView(House, get_session()))
    admin.add_view(CommunityRecordView(CommunityRecord, get_session()))
    admin.add_view(HouseRecordView(HouseRecord, get_session()))
    
    
    
Beispiel #26
0
def _init_admin(app):
    """
    Initialize the admin and add views
    """
    admin = Admin(app, name='gainful', template_mode='bootstrap3')

    admin.add_view(VisiblePkView(User, db.session))
    admin.add_view(VisiblePkView(Org, db.session))
    admin.add_view(AnswerModelView(Answer, db.session))
    admin.add_view(VisiblePkView(Group, db.session))
Beispiel #27
0
def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)
    db.init_app(app)
    security = Security(app, user_datastore)

    admin = Admin(app)
    admin.add_view(ActivityAdmin(Activity, db.session))
    admin.add_view(UserAdmin(User, db.session))
    admin.add_view(PageAdmin(Page, db.session))
    # import ipdb; ipdb.set_trace()
    app.register_blueprint(content_bp)
    app.register_blueprint(user_bp)
    app.add_url_rule('/', 'index', index)
    return app
Beispiel #28
0
def create_app(db):
    app = Flask(__name__)
    app.register_blueprint(index_blueprint, url_prefix='/')
    app.register_blueprint(member_blueprint, url_prefix='/member/')
    app.config['SECRET_KEY'] = '\xca\x0c\x86\x04\x98@\x02b\x1b7\x8c\x88]\x1b\xd7"+\xe6px@\xc3#\\'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://*****:*****@localhost/myweb'
    login = LoginManager()
    bootstrap = Bootstrap()
    admin = Admin(name="APP admin", template_mode='bootstrap3')
    admin.add_view(myview.MyView(name='Hello'))
    admin.init_app(app)
    bootstrap.init_app(app)
    login.init_app(app)
    db.init_app(app)
    return app
Beispiel #29
0
def create_app(settings_override=None):
    """Returns an Admin application instance."""

    # Create and extend a minimal application
    app = framework.create_app(__name__, __path__, settings_override, security_register_blueprint=False)

    from .invite_view import InviteView
    from .user_view import UserView

    #Init the flask-admin
    admin = Admin(app, name='FogMine Admin', url='/', index_view=MyAdminIndexView(url='/'), template_mode='bootstrap3', base_template='admin/my_master.html')
    admin.add_view(UserView(db.session))
    admin.add_view(InviteView(db.session))

    return app
Beispiel #30
0
def create_app():
    app = Flask(__name__)
    app.config.from_object('config')

    db.init_app(app)
    Migrate(app, db)

    # Register the blueprint applications
    from .v1 import api as api_blueprint
    app.register_blueprint(api_blueprint, url_prefix='/v1')

    # Flask-Admin
    admin = Admin(app, name='研究時間記録', template_mode='bootstrap3')
    admin.add_view(UserAdmin(User, db.session, name='ユーザ'))
    admin.add_view(RecordAdmin(Record, db.session, name='研究記録'))

    # Define special routes
    @app.after_request
    def after_request(response):
        for query in get_debug_queries():
            if query.duration >= app.config['SLOW_DB_QUERY_TIME']:
                app.logger.warning(
                    'Slow query: %s\nParameters: %s\n'
                    'Duration: %fs\nContext: %s\n'
                    % (query.statement, query.parameters,
                       query.duration, query.context)
                )
        return response

    @app.errorhandler(404)
    def page_not_found(e):
        """Return a custom 404 error."""
        return jsonify(
            error='Not found',
            message='Sorry, Nothing at this api.',
            status=404
        )

    @app.errorhandler(500)
    def page_not_found(e):
        """Return a custom 500 error."""
        return jsonify(
            error='Internal server error',
            message='Sorry, unexpected error: {}'.format(e),
            status=500
        )

    return app
Beispiel #31
0
# -*- coding: utf-8 -*-
from app.models import User, Post, Category
from app import app, db
from flask_admin.contrib.sqla import ModelView
from flask_admin import Admin
from flask_login import current_user

from flask import redirect, url_for


class ModelViewSecured(ModelView):
    def is_accessible(self):
        if current_user.is_authenticated:
            return current_user.email == app.config['ADMIN_EMAIL']
        return False

    def inaccessible_callback(self, name, **kwargs):
        return redirect(url_for('login'))


admin = Admin(app, name='blog-admin', template_mode='bootstrap3')
admin.add_view(ModelViewSecured(User, db.session))
admin.add_view(ModelViewSecured(Post, db.session))
admin.add_view(ModelViewSecured(Category, db.session))
Beispiel #32
0
from flask import Flask
from config import Config
from flask_restful import Api
from flask_bcrypt import Bcrypt
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
from flask_admin import Admin
from flask_migrate import Migrate
# from flask_apidoc import ApiDoc

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
# doc = ApiDoc(app=app)
api = Api(app)
migrate = Migrate(app, db)
admin = Admin(app, name='Better Pledge', template_mode='bootstrap3')
CORS(app)

from app import routes
Beispiel #33
0
def setup_admin(app):
    app.secret_key = os.environ.get('FLASK_APP_KEY', 'sample key')
    app.config['FLASK_ADMIN_SWATCH'] = 'cerulean'
    admin = Admin(app, name='4Geeks Admin', template_mode='bootstrap3')

    # Add your models here, for example this is how we add a the User model to the admin
    admin.add_view(ModelView(User, db.session))
    admin.add_view(ModelView(Order, db.session))
    admin.add_view(ModelView(OrderType, db.session))
    admin.add_view(ModelView(OrderDetail, db.session))
    admin.add_view(ModelView(Product, db.session))
    admin.add_view(ModelView(Category, db.session))
    admin.add_view(ModelView(UserTypes, db.session))
Beispiel #34
0
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin

app = Flask(__name__)
app.secret_key = '8972^&*A*(*&A*S(D*A()SD*kjahsđ12738712'
app.config[
    'SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost/saledb3?charset=utf8'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app=app)
admin = Admin(app=app, name='Quan ly', template_mode='bootstrap4')
Beispiel #35
0
    description = db.Column(db.String(255))


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())
    roles = db.relationship('Role',
                            secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'))


moment = Moment(app)
admin = Admin(app)
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)

admin.add_view(ModelView(Role, db.session))
admin.add_view(ModelView(User, db.session))


@app.route('/')
@login_required
def index():
    dt = datetime.utcnow()
    return render_template('index.html', dt=dt)


@app.route('/<path>')
Beispiel #36
0
from flask_admin import Admin, AdminIndexView
from app import app
from app.models import Order, Meal, User, Category, Association
from app import db
from flask import redirect, url_for


class MyModelView(ModelView):
    def is_accessible(self):
        return current_user.is_authenticated

    def inaccessible_callback(self, name, **kwargs):
        return redirect(url_for('login'))


class MyAdminIndexView(AdminIndexView):
    def is_accessible(self):
        if current_user.is_authenticated:
            return current_user.is_admin

    def inaccessible_callback(self, name, **kwargs):
        return redirect(url_for('login'))


admin = Admin(app, index_view=MyAdminIndexView())
admin.add_view(ModelView(Order, db.session))
admin.add_view(ModelView(Meal, db.session))
admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(Category, db.session))
admin.add_view(ModelView(Association, db.session))
Beispiel #37
0
# coding: utf-8

from flask_admin.contrib.sqla import ModelView
from flask_admin import Admin
from app.models import OperatingSystem, Project, Release, TestRun

admin = Admin(name='QPD', template_mode='bootstrap3')


class TestRunView(ModelView):
    form_excluded_columns = [
        'total',
        'total_executed',
        'percent_passed',
        'percent_failed',
        'percent_executed',
        'percent_not_executed',
    ]

    def after_model_change(self, form, model, is_created):
        model.update_stats()
        self.session.commit()


def configure_admin(app, db):
    admin.init_app(app)
    # Admin pages
    admin.add_view(
        ModelView(OperatingSystem, db.session, endpoint='operatingsystems'))
    admin.add_view(ModelView(Project, db.session, endpoint='projects'))
    admin.add_view(ModelView(Release, db.session, endpoint='releases'))
Beispiel #38
0
from project.models import User


@login_manager.user_loader
def load_user(user_id):
    return User.query.filter(User.id == int(user_id)).first()


########################
#### error handlers ####
########################


@app.errorhandler(403)
def forbidden_page(error):
    return render_template("errors/403.html"), 403


@app.errorhandler(404)
def page_not_found(error):
    return render_template("errors/404.html"), 404


@app.errorhandler(500)
def server_error_page(error):
    return render_template("errors/500.html"), 500


admin = Admin(app, name='Pet Portrait Club', template_mode='bootstrap3')
admin.add_view(ModelView(models.User, db.session))
Beispiel #39
0
		return current_user.role == 'admin'

	def inaccessible_callback(self, name, **kwargs):
		# redirect to login page if user doesn't have access
		return redirect(url_for('error.nice_try'))
	

db = SQLAlchemy()
migrate = Migrate()
login = LoginManager()
login.login_view = 'auth.login'
login.login_message = 'Please log in to access this page.'
bootstrap = Bootstrap()
moment = Moment()
mail= Mail()
admin = Admin(index_view=MyAdminIndexView(), name='wriitr', template_mode='bootstrap3')

max_sections = 15

def create_app():
	app = Flask(__name__)
	app.config.from_object('config.Config')
	app.static_folder = 'static'

	# admin
	from app import models
	from .models import User, Section
	from .models import Project
	admin.init_app(app)
	#admin.add_view(UserModelView(User, db.session))
	#admin.add_view(UserModelView(Project, db.session))
from sqlite3 import Error
import json
from flask import Flask, jsonify, request, redirect, url_for
from app.forms import LoginForm, RegistrationForm
from flask import flash
from .models import User
from flask_login import current_user, login_user
from flask_login import login_required, logout_user
from app import db
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from functools import wraps

# Allow user to visit http://localhost:5000/admin and http://localhost:5000/admin/user
# We can therefore upgrade a user from simple user to admin
admin = Admin(app, name='clickclacktype', template_mode='bootstrap3')
admin.add_view(ModelView(User, db.session))

# The following functions query and update the database


def create_connection(db_file):
    """ create a database connection to a SQLite database """
    try:
        conn = sqlite3.connect(db_file)
        return conn
    except Error as e:
        print("Error")
        print(e)

Beispiel #41
0
        return super(PyQdbSAdminIndexView, self).index()

    @expose('/login/', methods=['GET', 'POST'])
    def login(self):
        form = LoginForm(request.form)

        if form.validate_on_submit():
            user = Users.query.filter(
                Users.username == form.username.data).first()
            if user and user.has_admin() and user.check_password(
                    form.password.data):
                flask_login.login_user(user)
                return redirect(url_for('admin.index'))
            else:
                flash("Invalid username or password.")
                return redirect(url_for('admin.login'))

        self._template_args['form'] = form
        return super(PyQdbSAdminIndexView, self).index()

    @expose('/logout/')
    def logout(self):
        flask_login.logout_user()
        return redirect(url_for('admin.index'))


admin = Admin(index_view=PyQdbSAdminIndexView())
admin.add_view(PyQdbSQuoteModelView(Quotes, db.session))
admin.add_view(PyQdbSUserModelView(Users, db.session))
Beispiel #42
0
import os
import logging
from flask import Flask
from playhouse.flask_utils import FlaskDB
from flask_admin import Admin
from hse_arch.admin import init_admin
# from hse_arch.api import init_app

db = FlaskDB()  # Создаем обертку над БД
admin = Admin()  # Создаем обертку над админкой
# restful_api = Api()  # не уверен, что это делается здесь
# auth = Auth()  # не уверен, что это делается здесь
# peewee_api = RestAPI()  # не уверен, что это делается здесь

config = {
    "production": "config.ProductionConfig",
    "development": "config.DevelopmentConfig",
    "testing": "config.TestingConfig",
    "default": "config.Config"
}
# TODO: https://damyanon.net/post/flask-series-configuration/ - возможно, стоит использовать env переменную


def create_app(config_class):
    from hse_arch.models.category import Category
    from hse_arch.models.customer import Customer
    from hse_arch.models.order import Order, OrderItem
    from hse_arch.models.product import Product, ProductIngredient, Ingredient
    from hse_arch.models.producers import Producer
    from hse_arch.models.sets import Set, SetProduct
    from hse_arch.models.user import User
Beispiel #43
0
from flask_mqtt import Mqtt
from flask_socketio import SocketIO
from sqlalchemy import or_, and_, desc, asc, text
from config import Config
from helpers import make_celery, save_event_from_dict

##############
# initialize #
##############

eventlet.monkey_patch()
app = Flask(__name__)
app.config.from_object(Config)
socketio = SocketIO(app)
celery = make_celery(app)
admin = Admin(app, name='Database Manager', template_mode='bootstrap3')

##################
# delayed import #
##################

from models import db, Event, EventSchema
db.init_app(app)
migrate = Migrate(app, db)
mqtt = Mqtt(app)

###############
# admin panel #
###############

admin.add_view(ModelView(Event, db.session))
Beispiel #44
0
import os

from flask import Flask
from flask_admin import Admin
from flask_bcrypt import Bcrypt
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from werkzeug.middleware.proxy_fix import ProxyFix

# instantiate extensions
db = SQLAlchemy()
cors = CORS()
bcrypt = Bcrypt()
admin = Admin(template_mode="bootstrap3")


def create_app(script_info=None):

    # instantiate the app
    app = Flask(__name__)
    app.wsgi_app = ProxyFix(app.wsgi_app,
                            x_for=1,
                            x_proto=1,
                            x_host=1,
                            x_port=1)

    # set config
    app_settings = os.getenv("APP_SETTINGS")
    app.config.from_object(app_settings)

    # set up extensions
Beispiel #45
0
app = Flask(__name__)

app.config.from_object(Config)
app.config['DEBUG'] = False

db = SQLAlchemy(app)
migrate = Migrate(app, db)
Bootstrap(app)
socketio.init_app(app)

toolbar = DebugToolbarExtension(app)
login = LoginManager(app)
login.login_view = 'auth.login'

admin = Admin(app, template_mode='bootstrap3')

    
@app.errorhandler(404)
def not_found(error):
    return render_template('errors/404.html'), 404


from app.module_auth.controllers import module_auth as auth_module
from app.module_main.controllers import module_main as main_module
from app.module_task.controllers import module_task as task_module
from app.module_role.controllers import module_role as role_module
from app.module_role.controllers import module_userrole as user_role_module


app.register_blueprint(auth_module)
Beispiel #46
0
#! -*- coding:utf-8 -*-
# Created by F1renze on 2018/3/18 13:52
__author__ = 'F1renze'
__time__ = '2018/3/18 13:52'

from flask import Blueprint

admin_blueprint = Blueprint('admin_blueprint', __name__)

from flask_admin import Admin
from .override_views import MyIndexView

f_admin = Admin(name='后台管理',
                template_mode='bootstrap3',
                base_template='admin/mybase.html',
                index_view=MyIndexView())

from . import views, modelviews
Beispiel #47
0
    details_modal = True
    #column_editable_list = ('first_name', 'last_name', 'email')
    list_template = 'admin/model/list.html'
	#form_edit_rules = [
	#CustomizableField('email', field_args={
	#	'readonly': True
	#	})]
	#
    '''
'''
class HandlingView(HandlingView):
    column_display_all_relations = True
'''

admin = Admin(index_view=MyHomeView(menu_icon_type='ti',
                                    menu_icon_value='ti-home'),
              category_icon_classes={'CRM': 'ti ti-money'})
'''
admin = Admin(name='CMS', 
    template_mode='bootstrap3')

admin.add_view(ModelView(User, db.session))
'''
#admin.add_view(MasterUserView(User, db.session, endpoint='userss', category='CRM', name='Лиды', menu_icon_type='ti', menu_icon_value='ti-link'))

#admin.add_view(DomainView(Role, db.session, category='CRM', name='Роли', menu_icon_type='ti', menu_icon_value='ti-link'))
#admin.add_view(UserView(User, db.session, category='CRM', name='Юзеры', menu_icon_type='ti', menu_icon_value='ti-user'))
#admin.add_view(UserView(Profile, db.session, category='CRM', name='Профили', menu_icon_type='ti', menu_icon_value='ti-user'))
#admin.add_view(UserView(Source, db.session, category='CRM', name='Источники', menu_icon_type='ti', menu_icon_value='ti-user'))
#admin.add_view(HandlingView(Handling, db.session, category='CRM', name='Касания', menu_icon_type='ti', menu_icon_value='ti-user'))
#admin.add_view(UserView(Role, db.session, category='CRM', name='Роли', menu_icon_type='ti', menu_icon_value='ti-user'))
Beispiel #48
0
from flask_script import Manager
from wtforms import StringField
from wtforms.validators import DataRequired

from models import Student, Teacher, College, Major, Subject, Page, Test, Class, db
from views import app

bootstrap = Bootstrap()
bootstrap.init_app(app)
app.config['BOOTSTRAP_SERVE_LOCAL'] = True

migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

admin = Admin()
admin.init_app(app)


class IdBrandForm(BaseForm):
    id = StringField(validators=[DataRequired()])


class IdBrandModelView(ModelView):
    column_display_pk = True
    form_base_class = IdBrandForm


admin.add_view(IdBrandModelView(Student, db.session))
admin.add_view(IdBrandModelView(Teacher, db.session))
admin.add_view(ModelView(College, db.session))
Beispiel #49
0
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager, current_user
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_restful import Resource, Api, reqparse
from os import listdir
from os.path import isfile, join

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
login.login_view = 'login'
admin = Admin(app)
api = Api(app)

from app import routes, models, errors
from app.models import *


class OrderModelView(ModelView):
    def is_accessible(self):
        if not current_user.is_active or not current_user.is_authenticated:
            return False

        if current_user.username == 'admin':
            return True

        return False
Beispiel #50
0
PASSPHRASE = 'PF5H8S9t7u'
APP_ID = 'MEoztReRyeHzaiXxaecR65HnqE98tz9g'
APP_SECRET = '01c5d1f8d3bfa9966786065c5a2d829d7e84cf26fbfb4a47c91552cb7c091608'

UPLOAD_FOLDER = 'static/records'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

now = datetime.datetime.now()


class IngAdmin(sqla.ModelView):
    column_display_pk = True


admin = Admin(app, name='telaki')
admin.add_view(IngAdmin(Message, db.session))
admin.add_view(IngAdmin(Blast, db.session))


def compose_messages(filename):
    path = '%s/%s' % (UPLOAD_FOLDER, filename)

    book = xlrd.open_workbook(path)

    # get the first worksheet
    sheet = book.sheet_by_index(0)
    rows = sheet.nrows
    cols = 2
    print 'xxxxxxxxxxxxxxxxxxx'
    print rows
Beispiel #51
0
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
import logging
from celery import Celery
from redis import Redis

from configs import CeleryConfig

app = Flask(__name__)
app.config.from_pyfile('../configs.py')
for key, value in app.config.items():
    print(key, '\t', value)

db = SQLAlchemy(app=app)
admin = Admin(app, name='火币自动交易', template_mode='bootstrap3')
redis = Redis.from_url(app.config['REDIS_URL'])
log = logging.getLogger('HuoBi')

# todo config not value
celery = Celery(app.import_name)
celery.config_from_object(CeleryConfig)
TaskBase = celery.Task


class ContextTask(TaskBase):
    abstract = True

    def __call__(self, *args, **kwargs):
        with app.app_context():
            return TaskBase.__call__(self, *args, **kwargs)
Beispiel #52
0

class BaseModelView(ModelView):
    def on_model_change(self, form, model, is_created):
        model.generate_slug()
        return super(BaseModelView,
                     self.on_model_change(self, form, model, is_created))


class AdminView(AdminMixin, ModelView):
    pass


class HomeAdminView(AdminMixin, AdminIndexView):
    pass


class PostAdminView(AdminMixin, BaseModelView):
    form = ['title', 'body', 'tags']


class TagAdminView(AdminMixin, BaseModelView):
    form = ['name', 'posts']


admin = Admin(app, 'FlaskApp', url='/', index_view=HomeAdminView(name='Home'))
admin.add_view(AdminView(Post, db.session))
admin.add_view(AdminView(Tag, db.session))

user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)
Beispiel #53
0
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

from db import session
from models.dictionary import Dictionary, Word

admin = Admin(name='Sentiment dashboard', template_mode='bootstrap3')

admin.add_view(ModelView(Dictionary, session.session))
admin.add_view(ModelView(Word, session.session))
        "activity_start_time",
        "activity_end_time",
        "activity_location",
    )

    column_searchable_list = ("id", "uid", "description", "content", "source")

    column_default_sort = ('id', True)

    column_labels = {
        "id": "序号",
        "uid": "发布用户ID",
        "post_type": "类型 0 普通文字信息 2 校园活动",
        "description": "描述",
        "content": "内容或者URL",
        "post_time": "发布时间",
        "visibility": "删除标记(1未删除 2删除)",
        "source": "来自",
        "photo_list_json": "图片列表",
        "activity_start_time": "活动开始时间",
        "activity_end_time": "活动结束时间",
        "activity_location": "活动地点"
    }

    page_size = 50


admin = Admin(name="课程后台管理", template_mode='bootstrap3')
admin.add_view(UserModelView(models.User, db.session, "用户管理"))
admin.add_view(PostModelView(models.Post, db.session, "动态管理"))
Beispiel #55
0
from flask_admin import Admin
from flask_babelex import Babel
from contorllers.admin import MyView

babel = Babel()
flask_admin = Admin(
    name=u'后台管理系统',
    index_view=MyView(),
    base_template='admin/my_master.html',
)


Beispiel #56
0
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_login import LoginManager
from flask_mail import Mail

app = Flask(__name__)
app.secret_key = '3^@&@&!&(@*UGUIEIU&@^!*(@&*(SS'
app.config[
    'SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:A!23456a@localhost/bookstoredb?charset=utf8'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app=app)
admin = Admin(app=app, name='Book Store', template_mode="bootstrap4")
login = LoginManager(app=app)

app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USERNAME'] = '******'
app.config['MAIL_PASSWORD'] = '******'
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USE_SSL'] = False
db = SQLAlchemy(app=app)
login = LoginManager(app=app)
mail = Mail(app=app)
Beispiel #57
0
from flask_admin.contrib.sqla import ModelView
from app.__init__ import app, db
from app.models import AnonymousUser
from flask import redirect, flash, url_for


class MyAdminIndexView(admin.AdminIndexView):
    def is_accessible(self):
        return login.current_user.is_admin()

    def inaccessible_callback(self, name, **kwargs):
        return redirect(url_for('auth.login'))


admin = Admin(
    app,
    name="admin site",
    template_mode="bootstrap3",
    index_view=MyAdminIndexView(),
    base_template='admin/logout.html'
)


# sql models management
from app.models import User
admin.add_view(ModelView(User, db.session))

from app.models import Role
admin.add_view(ModelView(Role, db.session))

Beispiel #58
0
# MAIL

mail = Mail(app)


# db config
# db = SQLAlchemy(app)

db.init_app(app)



# ADMIN PANEL

admin = Admin(app,template_mode='bootstrap3')
class UserView(ModelView):
    #     # column_display_pk = True
#     # column_edit_pk = True
#     # list_columns=['name','username','email','password','registered_at']
    column_searchable_list = [ 'email','name']
    

    form_excluded_columns = ['tasks', 'registered_at']
    
    def is_accessible(self):
        if "admin_login" in session:
           return True
        return False 
    
    def on_model_change(self, form, model, is_created):
Beispiel #59
0
def init_admin(app_obj):
    admin = Admin(app_obj, name='Spajam2018_SP', template_mode='bootstrap3')

    admin.add_view(ModelView(User, db.session, category='User'))
Beispiel #60
0
class ImageView(sqla.ModelView):
    def _list_thumbnail(view, context, model, name):
        if not model.path:
            return ''

        return Markup('<img src="%s">' % url_for(
            'static',
            filename=join("files/", form.thumbgen_filename(model.path))))

    column_formatters = {'path': _list_thumbnail}

    # Alternative way to contribute field is to override it completely.
    # In this case, Flask-Admin won't attempt to merge various parameters for the field.
    form_extra_fields = {
        'path':
        form.ImageUploadField('Image',
                              base_path=file_path,
                              thumbnail_size=(100, 100, True))
    }


admin = Admin(app, index_view=MyAdminIndexView())
admin.add_view(MyModelView(User, db.session))
admin.add_view(MyModelView(Member, db.session))
admin.add_view(MyModelView(Event, db.session))
admin.add_view(MyModelView(League, db.session))
admin.add_view(MyModelView(Team, db.session))
admin.add_view(MyModelView(League_Team, db.session))
admin.add_view(MyModelView(ContactForm, db.session))
# admin.add_view(FileView(File, db.session))
admin.add_view(ImageView(Image, db.session))