Total Complexity | 4 |
Total Lines | 42 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | from flask import Flask |
||
2 | from flask_cors import CORS |
||
3 | from flask_jwt_extended import JWTManager |
||
4 | from flasgger import Swagger |
||
5 | from redis import Redis |
||
6 | from influxdb import InfluxDBClient |
||
7 | |||
8 | from mongoengine import connect |
||
9 | |||
10 | from app.views import Router |
||
11 | |||
12 | WEB_FILE_ROOT_DIR = '../web_files' |
||
13 | |||
14 | |||
15 | def create_app(*config_cls) -> Flask: |
||
16 | print('[INFO] Flask application initialized with {}'.format([config.__name__ for config in config_cls])) |
||
17 | |||
18 | app_ = Flask( |
||
19 | __name__, |
||
20 | # static_folder='{}/static'.format(WEB_FILE_ROOT_DIR), |
||
21 | # template_folder='{}/templates'.format(WEB_FILE_ROOT_DIR) |
||
22 | ) |
||
23 | |||
24 | for config in config_cls: |
||
25 | app_.config.from_object(config) |
||
26 | |||
27 | CORS().init_app(app_) |
||
28 | JWTManager().init_app(app_) |
||
29 | Swagger(template=app_.config['SWAGGER_TEMPLATE']).init_app(app_) |
||
30 | Router().init_app(app_) |
||
31 | |||
32 | connect(**app_.config['MONGODB_SETTINGS']) |
||
33 | app_.config['REDIS_CLIENT'] = Redis(**app_.config['REDIS_SETTINGS']) |
||
34 | app_.config['INFLUXDB_CLIENT'] = InfluxDBClient(**app_.config['INFLUXDB_SETTINGS']) |
||
35 | |||
36 | cfg = app_.config |
||
37 | |||
38 | if cfg['INFLUXDB_SETTINGS']['database'] not in cfg['INFLUXDB_CLIENT'].get_list_database(): |
||
39 | cfg['INFLUXDB_CLIENT'].create_database(cfg['INFLUXDB_SETTINGS']['database']) |
||
40 | |||
41 | return app_ |
||
42 |