|
@@ -1,348 +1,349 @@
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-from flask import Flask, g, request
|
|
|
-from flask_sqlalchemy import SQLAlchemy
|
|
|
-import pymysql
|
|
|
-import eventlet
|
|
|
-from flask_mqtt import Mqtt
|
|
|
-from flask_migrate import Migrate
|
|
|
-
|
|
|
-from flask_babel import Babel
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-pymysql.install_as_MySQLdb()
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-def create_app():
|
|
|
- app = Flask(__name__)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://coffee:skyeye@52.69.200.169:3306/Coffee'
|
|
|
-
|
|
|
- app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
|
|
|
-
|
|
|
- app.config['SECRET_KEY'] = 'you guess'
|
|
|
-
|
|
|
-
|
|
|
- app.config['TEMPLATES_AUTO_RELOAD'] = True
|
|
|
-
|
|
|
-
|
|
|
- app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
|
|
|
-
|
|
|
-
|
|
|
- app.config['SQLALCHEMY_POOL_SIZE'] = 100
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- app.config['SQLALCHEMY_POOL_TIMEOUT'] = 60 * 60
|
|
|
-
|
|
|
-
|
|
|
- app.config['SQLALCHEMY_POOL_RECYCLE'] = 60 * 60 * 8
|
|
|
-
|
|
|
- app.config['SQLALCHEMY_MAX_OVERFLOW'] = 15
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- app.config['MQTT_BROKER_URL'] = '60.250.156.234'
|
|
|
- app.config['MQTT_BROKER_PORT'] = 1883
|
|
|
- app.config['MQTT_USERNAME'] = 'aisky-client'
|
|
|
- app.config['MQTT_PASSWORD'] = 'aiskyc'
|
|
|
-
|
|
|
- app.config['MQTT_KEEPALIVE'] = 60
|
|
|
-
|
|
|
- app.config['MQTT_TLS_ENABLED'] = False
|
|
|
-
|
|
|
-
|
|
|
- db = SQLAlchemy(app)
|
|
|
- db.init_app(app)
|
|
|
- mqtt = Mqtt(app)
|
|
|
-
|
|
|
-
|
|
|
- migrate = Migrate(app, db)
|
|
|
-
|
|
|
- app.config['BABEL_DEFAULT_LOCALE'] = 'zh'
|
|
|
- app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC'
|
|
|
- app.config['LANGUAGES'] = ['en', 'zh']
|
|
|
-
|
|
|
- babel = Babel(app)
|
|
|
-
|
|
|
- @babel.localeselector
|
|
|
- def get_locale():
|
|
|
- return request.accept_languages.best_match(app.config['LANGUAGES'])
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- from .main import main as main_blueprint
|
|
|
- app.register_blueprint(main_blueprint)
|
|
|
-
|
|
|
- from .user import user as user_blueprint
|
|
|
- app.register_blueprint(user_blueprint)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+from flask import Flask, g, request
|
|
|
+from flask_sqlalchemy import SQLAlchemy
|
|
|
+import pymysql
|
|
|
+import eventlet
|
|
|
+from flask_mqtt import Mqtt
|
|
|
+from flask_migrate import Migrate
|
|
|
+
|
|
|
+from flask_babel import Babel
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+pymysql.install_as_MySQLdb()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+def create_app():
|
|
|
+ app = Flask(__name__)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:Gold@53743001@localhost:3306/Coffee'
|
|
|
+
|
|
|
+ app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
|
|
|
+
|
|
|
+ app.config['SECRET_KEY'] = 'you guess'
|
|
|
+
|
|
|
+
|
|
|
+ app.config['TEMPLATES_AUTO_RELOAD'] = True
|
|
|
+
|
|
|
+
|
|
|
+ app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
|
|
|
+
|
|
|
+
|
|
|
+ app.config['SQLALCHEMY_POOL_SIZE'] = 100
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ app.config['SQLALCHEMY_POOL_TIMEOUT'] = 60 * 60
|
|
|
+
|
|
|
+
|
|
|
+ app.config['SQLALCHEMY_POOL_RECYCLE'] = 60 * 60 * 8
|
|
|
+
|
|
|
+ app.config['SQLALCHEMY_MAX_OVERFLOW'] = 15
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ app.config['MQTT_BROKER_URL'] = '60.250.156.234'
|
|
|
+ app.config['MQTT_BROKER_PORT'] = 1883
|
|
|
+ app.config['MQTT_USERNAME'] = 'aisky-client'
|
|
|
+ app.config['MQTT_PASSWORD'] = 'aiskyc'
|
|
|
+
|
|
|
+ app.config['MQTT_KEEPALIVE'] = 60
|
|
|
+
|
|
|
+ app.config['MQTT_TLS_ENABLED'] = False
|
|
|
+
|
|
|
+
|
|
|
+ db = SQLAlchemy(app)
|
|
|
+ db.init_app(app)
|
|
|
+ mqtt = Mqtt(app)
|
|
|
+
|
|
|
+
|
|
|
+ migrate = Migrate(app, db)
|
|
|
+
|
|
|
+ app.config['BABEL_DEFAULT_LOCALE'] = 'zh'
|
|
|
+ app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC'
|
|
|
+ app.config['LANGUAGES'] = ['en', 'zh']
|
|
|
+
|
|
|
+ babel = Babel(app)
|
|
|
+
|
|
|
+ @babel.localeselector
|
|
|
+ def get_locale():
|
|
|
+ return request.accept_languages.best_match(app.config['LANGUAGES'])
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ from .main import main as main_blueprint
|
|
|
+ app.register_blueprint(main_blueprint)
|
|
|
+
|
|
|
+ from .user import user as user_blueprint
|
|
|
+ app.register_blueprint(user_blueprint)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
return app, db, mqtt
|