示例#1
0
def create_app(config, enable_config_env=False):
    """app工厂"""
    app = Flask(__name__, template_folder='../templates')
    app.config.from_object(config)
    if enable_config_env:
        from common.utils import constants
        app.config.from_envvar(constants.GLOBAL_SETTING_ENV_MAIL_USERNAME,
                               silent=True)
        app.config.from_envvar(constants.GLOBAL_SETTING_ENV_MAIL_PASSWORD,
                               silent=True)
        app.config.from_envvar(constants.GLOBAL_SETTING_ENV_MAIL_SENDER,
                               silent=True)

    # 初始化邮箱扩展
    mail = Mail()
    mail.init_app(app)

    app.mail = mail

    # 初始化bootstrap扩展
    bootstrap = Bootstrap()
    bootstrap.init_app(app)

    # 初始化ckeditor
    ckeditor = CKEditor()
    ckeditor.init_app(app)

    return app
示例#2
0
def create_app():
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    templates_dir = os.path.join(BASE_DIR, r'App\templates')
    static_dir = os.path.join(BASE_DIR, r'App\static')

    app = Flask(__name__, static_folder=static_dir, template_folder=templates_dir)  # 引入app实例
    ''':exception 蓝图注册部分'''
    app.config.from_object('config')
    from App.login import views, login
    app.register_blueprint(blueprint=login)  # 将app交由blue管理   登陆
    from App.life import views, life
    app.register_blueprint(blueprint=life)  # 将app交由blue管理    首页
    from App.blog import views, blog
    app.register_blueprint(blueprint=blog)  # 将app交由blue管理    blog
    from App.about import views,about
    app.register_blueprint(blueprint=about)  # 将app交由blue管理    关于我
    from App.sercet import views,sercet
    app.register_blueprint(blueprint=sercet)  # 将app交由blue管理    福利
    from App.mypython import views,mypython
    app.register_blueprint(blueprint=mypython)  # 将app交由blue管理    python
    from App.news import views,news
    app.register_blueprint(blueprint=news)  # 将app交由blue管理    新闻
    ''':exception flask_admin部分'''
    admin = Admin(app, name='web', template_mode='bootstrap3')
    db.init_app(app)
    ''':exception 数据库扩展部分'''
    from models import AdminUser, Tag, Article,Status,Category,Secret
    ckeditor = CKEditor()
    ckeditor.init_app(app)
    admin.add_view(UserAdmin(AdminUser, db.session, name=u'用户管理'))
    admin.add_view(BaseModelview(Status, db.session, name=u'状态管理'))
    admin.add_view(BaseModelview(Tag, db.session, name=u'标签管理'))
    admin.add_view(BaseModelview(Category, db.session, name=u'分类管理'))
    admin.add_view(MessageAdmin(Article, db.session, name=u'文章管理'))
    admin.add_view(Secretadmin(Secret,db.session,name = u'福利内容'))
    ''':exception flask国际化'''
    from flask_babelex import Babel
    babel = Babel(app)
    ''':exception Session部分'''
    Session(app)
    return app
示例#3
0
app = Flask(__name__)

app.config['SECRET_KEY'] = '1a0303f517b1a1c15d4637c83be89ebc'
app.config['RECAPTCHA_PUBLIC_KEY'] = '6Lc46NEaAAAAACT9wezgGCyNFGxld_lLC6y8Zko1'
app.config[
    'RECAPTCHA_PRIVATE_KEY'] = '6Lc46NEaAAAAABA089xpPhOB2e-MZB-EsoOyXXLO'
app.config['MAIL_SERVER'] = "smtp.googlemail.com"
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = '******'
app.config['MAIL_PASSWORD'] = '******'
Mobility(app)
ckeditor = CKEditor()
mail = Mail()
ckeditor.init_app(app)
mail.init_app(app)


def no_dispose(form, field):
    if requests.get(f'https://disposable.debounce.io/?email={field.data}'
                    ).json()['disposable'] == 'true':
        raise ValidationError('Disposable Emails are not allowed')


def no_profane(form, field):
    if profanity.contains_profanity(html2text.html2text(field.data)):
        raise ValidationError('We strictly prohibit profane messages')


class ContactForm(FlaskForm):
示例#4
0
def create_app(config_name=None):
    config_name = config_name or (os.getenv('FLASK_CONFIG') or 'development')
    app = Flask(__name__,
                static_url_path=Config.STATIC_URL_PATH,
                static_folder=Config.STATIC_FOLDER,
                template_folder=Config.TEMPLATE_FOLDER)
    app.config.from_object(config[config_name])
    if app.config['CONFIG_NAME'] != 'production':
        app.config['APP_VERSION'] = datetime.datetime.timestamp(
            datetime.datetime.utcnow())

    # logging
    logging_level = app.config.get('LOGGER_LEVEL')
    print('FLASK APP INSTANCE CREATED: create_app({}) - LOG LEVEL: {}'.format(
        config_name, logging_level))

    # logging_file_handler = logging.FileHandler(Helper.base_path('misc/log/app.log'))
    app.logger.setLevel(logging_level)
    # app.logger.addHandler(logging_file_handler)
    # disable werkzeug verbose access logs
    werkzeug_logger = logging.getLogger('werkzeug')
    werkzeug_logger.setLevel(logging_level)
    # disable gunicorn verbose access logs
    gunicorn_logger = logging.getLogger('gunicorn.access')
    gunicorn_logger.setLevel(logging_level)

    # for running db commands in flask app such as: flask db init
    m.db.init_app(app)
    Migrate(app, m.db)

    @app.errorhandler(InvalidUsage)
    def handle_invalid_usage(error):
        response = jsonify(error.to_dict())
        response.status_code = error.status_code
        return response

    # Blueprints
    from app import routes as base_routes
    app.register_blueprint(base_routes.bp, url_prefix='')

    # flask_login
    login_manager = flask_login.LoginManager()
    login_manager.init_app(app)
    login_manager.session_protection = 'strong'

    @login_manager.user_loader
    def user_loader(user_id):
        return m.User.query.get(user_id)

    @login_manager.unauthorized_handler
    def unauthorized():
        return redirect(url_for('base.unauthorized'))

    # Editor configs
    ckeditor = CKEditor()
    ckeditor.init_app(app)

    # CLI
    from app.cli.tune import cli as tune_cli
    app.cli.add_command(tune_cli)

    return app