Passed
Push — master ( 0e0c01...f9d80a )
by Mingyu
01:53
created

app.create_app()   A

Complexity

Conditions 4

Size

Total Lines 27
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 27
rs 9.55
c 0
b 0
f 0
cc 4
nop 1
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