console/SWSCloudAPI/application.py

77 lines
2.2 KiB
Python
Raw Normal View History

2016-06-09 02:49:22 +03:00
# coding: utf-8
from flask import Flask, g, jsonify
from SWSCloudAPI.API import api
2016-06-11 21:28:46 +03:00
from SWSCloudAPI.API.vms import api_v1_vms
from SWSCloudAPI.API.containers import api_v1_containers
from SWSCloudAPI.API.datacenters import api_v1_datacenters
from SWSCloudAPI.API.pricing import api_v1_pricing
2016-06-09 02:49:22 +03:00
from SWSCloudCore import models
from SWSCloudCore.models import database
from SWSCloudCore.config import config
app = Flask(__name__)
2016-06-12 01:34:09 +03:00
# Думал, что получится сделать автопрефик для всего приложения, но это не сработало
# app.config["APPLICATION_ROOT"] = "/api/v1"
2016-06-09 02:49:22 +03:00
# app.config['SERVER_NAME'] = settings.get('Application', 'SERVER_NAME')
app.config['DEBUG'] = config.getboolean('Application', 'DEBUG')
app.config['SECRET_KEY'] = config.get("Application", "SECRET_KEY")
app.register_blueprint(api)
2016-06-11 21:28:46 +03:00
app.register_blueprint(api_v1_vms)
app.register_blueprint(api_v1_containers)
app.register_blueprint(api_v1_pricing)
app.register_blueprint(api_v1_datacenters)
2016-06-09 02:49:22 +03:00
@app.errorhandler(404)
def page_not_found(e):
app.logger.error(e)
return jsonify(dict(message='resource not found')), 404
@app.errorhandler(403)
def access_deny(e):
app.logger.error(e)
return jsonify(dict(message='access deny')), 403
@app.errorhandler(410)
def page_not_found(e):
app.logger.error(e)
return jsonify(dict()), 410
@app.errorhandler(500)
def page_not_found(e):
app.logger.error(e)
return jsonify(dict(message='maintenance')), 500
@app.before_request
def before_request():
g.settings = dict()
# извлекаем настройки и определяем их в глобальную переменную
for setting in models.Settings.select(models.Settings.key, models.Settings.val).execute():
g.settings[setting.key] = setting.val
@app.before_first_request
def before_first_request():
try:
database.connect()
except Exception as e:
app.logger.error(e)
return jsonify({}), 500
@app.after_request
def after_request(response):
# TODO: report about access
2016-06-12 01:34:09 +03:00
app.logger.info('')
2016-06-09 02:49:22 +03:00
return response
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5001, debug=True)