console/SWSCloudWeb/application.py
2016-06-14 08:05:05 +03:00

103 lines
2.9 KiB
Python

# coding: utf-8
from flask import Flask, g, render_template
from flask_babel import Babel
from flaskext.markdown import Markdown
from SWSCloudCore import models
from SWSCloudCore.config import config
from SWSCloudCore.models import database
from SWSCloudServerAPI.ServerAPI import viewServerAPI
from SWSCloudWeb.views import viewHomepage
from SWSCloudWeb.views.account import viewAccount
from SWSCloudWeb.views.containers import viewContainers
from SWSCloudWeb.views.documents import viewDocuments
from SWSCloudWeb.views.kb import viewKB
from SWSCloudWeb.views.payments import viewPayments
from SWSCloudWeb.views.support import viewSupport
from SWSCloudWeb.views.tasks import viewTasks
from SWSCloudWeb.views.vms import viewVMs
from SWSCloudAdministrator.Administrator import viewAdministrator
app = Flask(__name__, static_folder='static', static_url_path='')
# 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")
Markdown(app)
babel = Babel(app)
# /
app.register_blueprint(viewHomepage)
app.register_blueprint(viewSupport)
app.register_blueprint(viewKB)
app.register_blueprint(viewDocuments)
# /tasks
app.register_blueprint(viewTasks)
# /containers
app.register_blueprint(viewContainers)
app.register_blueprint(viewVMs)
# /id
app.register_blueprint(viewAccount)
# /payments
app.register_blueprint(viewPayments)
# /api
app.register_blueprint(viewServerAPI)
# /administrator
app.register_blueprint(viewAdministrator)
@app.errorhandler(404)
def page_not_found(e):
return render_template('errors/404.html'), 404
@app.errorhandler(403)
def page_not_found(e):
return render_template('errors/403.html'), 403
@app.errorhandler(410)
def page_not_found(e):
return render_template('errors/410.html'), 410
@app.errorhandler(500)
def page_not_found(e):
print e
return render_template('errors/500.html'), 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)
# TODO: code to email alert
# g.endpoint = request.endpoint.replace('.', '/')
return render_template('errors/500.html'), 500
@app.after_request
def after_request(response):
# app.logger.debug("db.close")
# try:
# database.close()
# except Exception as e:
# app.logger.error(e)
# TODO: code to email alert
# pass
return response
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)