hanabiapp
1import os 2from flask import Flask 3from flask_sqlalchemy import SQLAlchemy 4from flask_login import LoginManager 5from flask_socketio import SocketIO 6from flask_cors import CORS 7from redislite import Redis 8 9db = SQLAlchemy() 10login = LoginManager() 11login.login_view = 'auth.login' 12socketio = SocketIO() 13redis_client = None 14 15def create_app(config_class='config.Config'): 16 """ 17 Flask アプリケーションを作成し,初期設定を行う関数. 18 19 - データベース,ログイン管理,SocketIO,CORS の設定を適用する. 20 - Redis クライアントを初期化する. 21 - 必要なデータベーステーブルを作成する. 22 - 各種ビューをアプリケーションに登録する. 23 - ゲームのタイマー処理をバックグラウンドで開始する. 24 25 Args: 26 config_class (str, optional): アプリケーション設定を読み込むクラス名(デフォルトは 'config.Config') 27 28 Returns: 29 Flask: 初期化された Flask アプリケーションインスタンス 30 """ 31 # Flask アプリケーション初期化 32 app = Flask(__name__) 33 app.config.from_object(config_class) 34 35 db.init_app(app) 36 login.init_app(app) 37 sio_async_mode = app.config.get('SOCKET_IO_ASYNC_MODE', 'gevent') 38 socketio.init_app(app, async_mode=sio_async_mode, cors_allowed_origins='*') 39 CORS(app) 40 redis_url = app.config.get('REDIS_URL', None) 41 42 global redis_client 43 if redis_url: 44 redis_client = Redis.from_url(redis_url) 45 else: 46 redis_client = Redis() 47 48 with app.app_context(): 49 from .models import user, pre_survey, game_info, play_log 50 db.create_all() 51 52 from .views import index, home, auth, consent, survey, game 53 app.register_blueprint(index.bp) 54 app.register_blueprint(home.bp) 55 app.register_blueprint(auth.bp) 56 app.register_blueprint(consent.bp) 57 app.register_blueprint(survey.bp) 58 app.register_blueprint(game.bp) 59 60 socketio.start_background_task(game.process_timer, app) 61 62 app.jinja_env.filters['format_play_time'] = home.format_play_time 63 64 return app
db =
<SQLAlchemy>
login =
<flask_login.login_manager.LoginManager object>
socketio =
<flask_socketio.SocketIO object>
redis_client =
None
def
create_app(config_class='config.Config'):
16def create_app(config_class='config.Config'): 17 """ 18 Flask アプリケーションを作成し,初期設定を行う関数. 19 20 - データベース,ログイン管理,SocketIO,CORS の設定を適用する. 21 - Redis クライアントを初期化する. 22 - 必要なデータベーステーブルを作成する. 23 - 各種ビューをアプリケーションに登録する. 24 - ゲームのタイマー処理をバックグラウンドで開始する. 25 26 Args: 27 config_class (str, optional): アプリケーション設定を読み込むクラス名(デフォルトは 'config.Config') 28 29 Returns: 30 Flask: 初期化された Flask アプリケーションインスタンス 31 """ 32 # Flask アプリケーション初期化 33 app = Flask(__name__) 34 app.config.from_object(config_class) 35 36 db.init_app(app) 37 login.init_app(app) 38 sio_async_mode = app.config.get('SOCKET_IO_ASYNC_MODE', 'gevent') 39 socketio.init_app(app, async_mode=sio_async_mode, cors_allowed_origins='*') 40 CORS(app) 41 redis_url = app.config.get('REDIS_URL', None) 42 43 global redis_client 44 if redis_url: 45 redis_client = Redis.from_url(redis_url) 46 else: 47 redis_client = Redis() 48 49 with app.app_context(): 50 from .models import user, pre_survey, game_info, play_log 51 db.create_all() 52 53 from .views import index, home, auth, consent, survey, game 54 app.register_blueprint(index.bp) 55 app.register_blueprint(home.bp) 56 app.register_blueprint(auth.bp) 57 app.register_blueprint(consent.bp) 58 app.register_blueprint(survey.bp) 59 app.register_blueprint(game.bp) 60 61 socketio.start_background_task(game.process_timer, app) 62 63 app.jinja_env.filters['format_play_time'] = home.format_play_time 64 65 return app
Flask アプリケーションを作成し,初期設定を行う関数.
- データベース,ログイン管理,SocketIO,CORS の設定を適用する.
- Redis クライアントを初期化する.
- 必要なデータベーステーブルを作成する.
- 各種ビューをアプリケーションに登録する.
- ゲームのタイマー処理をバックグラウンドで開始する.
Arguments:
- config_class (str, optional): アプリケーション設定を読み込むクラス名(デフォルトは 'config.Config')
Returns:
Flask: 初期化された Flask アプリケーションインスタンス