# 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.administrator import viewAdministrator 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 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