Advertisement
Guest User

webapp __init__.py

a guest
Mar 29th, 2016
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.96 KB | None | 0 0
  1. import logging
  2.  
  3. import os
  4. from app_config import config
  5. from dbmodels import User
  6. from dbmodels.database import db_session, engine
  7. from flask import Flask, redirect, url_for
  8. from flask.ext.assets import Bundle, Environment
  9. from flask.ext.bootstrap import Bootstrap
  10. from flask.ext.login import LoginManager
  11. from flask.ext.mail import Mail
  12. from flask.ext.moment import Moment
  13. from flask_jsglue import JSGlue
  14. from webapp.extensions import celery
  15. from webapp.helpers import flask_handler
  16.  
  17. try:
  18.     import pymysql
  19.     pymysql.install_as_MySQLdb()
  20. except ImportError:
  21.     pass
  22.  
  23. os.environ['LD_LIBRARY_PATH'] = os.getcwd()
  24.  
  25. bootstrap = Bootstrap()
  26. mail = Mail()
  27. moment = Moment()
  28. assets = Environment()
  29. jsglue = JSGlue()
  30.  
  31. login_manager = LoginManager()
  32. login_manager.session_protection = 'strong'
  33. login_manager.login_view = 'auth.login'
  34.  
  35.  
  36. def create_app(config_name=os.environ['WEBAPP_CONFIG']):
  37.     # print 'about to create webapp.. with config_name', config_name
  38.     webapp = Flask(__name__)
  39.     webapp.config.from_object(config[config_name])
  40.     webapp.config['PROPOGATE_EXCEPTIONS'] = True
  41.     config[config_name].init_app(webapp)
  42.  
  43.     webapp.logger.setLevel(logging.DEBUG) # use the native logger of flask
  44.     handler = logging.handlers.RotatingFileHandler(
  45.                                                 'flasklog.log',
  46.                                                 maxBytes=1024 * 1024 * 100,
  47.                                                 backupCount=20
  48.                                                 )
  49.     webapp.logger.addHandler(flask_handler)
  50.  
  51.     celery.init_app(webapp)
  52.  
  53.     bootstrap.init_app(webapp)
  54.     mail.init_app(webapp)
  55.     moment.init_app(webapp)
  56.     assets.init_app(webapp)
  57.     login_manager.init_app(webapp)
  58.     jsglue.init_app(webapp)
  59.  
  60.     @webapp.route('/', methods=['GET'])
  61.     def home_redirect():
  62.         return redirect(url_for('main.dashboard'))
  63.  
  64.     @webapp.teardown_request
  65.     def shutdown_session(exception=None):
  66.         # print 'app has done been torn down'
  67.         db_session.remove()
  68.  
  69.     @login_manager.user_loader
  70.     def load_user(user_id):
  71.         return User.query.get(int(user_id))
  72.  
  73.     g_css = Bundle(
  74.         'assets/global/css/fonts.css',
  75.         'assets/global/plugins/font-awesome/css/font-awesome.min.css',
  76.         'assets/global/plugins/simple-line-icons/simple-line-icons.min.css',
  77.         'assets/global/plugins/bootstrap/css/bootstrap.min.css',
  78.         'assets/global/plugins/uniform/css/uniform.default.min.css',
  79.         'assets/global/plugins/toastr/toastr.css',
  80.         'assets/global/css/plugins.css',
  81.         output='gen/g_css.css')
  82.     assets.register('g_css', g_css)
  83.  
  84.     form_css = Bundle(
  85.         'assets/global/plugins/bootstrap-switch/css/bootstrap-switch.min.css',
  86.         'assets/global/plugins/select2/select2.min.css',
  87.         'assets/global/plugins/jquery-multi-select/css/multi-select.css',
  88.         'assets/global/plugins/bootstrap-datepicker/css/bootstrap-datepicker.min.css',
  89.         'assets/global/plugins/bootstrap-daterangepicker/css/daterangepicker-bs3.css',
  90.         'assets/global/plugins/summernote/summernote.css',
  91.         output='gen/form_css.css')
  92.     assets.register('form_css', form_css)
  93.  
  94.     themecomponents_css = Bundle(
  95.         'assets/global/css/components.css',
  96.         output='gen/themecomponents_css.css')
  97.     assets.register('themecomponents_css', themecomponents_css)
  98.  
  99.     theme_css = Bundle(
  100.         # 'assets/layout/css/layout0.css',
  101.         'assets/layout/css/layout.css',
  102.         # 'assets/layout/css/custom.css',
  103.         output='gen/theme_css.css')
  104.     assets.register('theme_css', theme_css)
  105.  
  106.     themecolor_css = Bundle(
  107.         'assets/layout/css/themes/blue.css',
  108.         output='gen/themecolor_css.css')
  109.     assets.register('themecolor_css', themecolor_css)
  110.  
  111.     g_js = Bundle(
  112.         'assets/global/plugins/jquery-2.1.3.min.js',
  113.         'assets/global/plugins/jquery-migrate-1.2.1.min.js',
  114.         'assets/global/plugins/jquery-ui/jquery-ui.min.js',
  115.         'assets/global/plugins/bootstrap/js/bootstrap.min.js',
  116.         'assets/global/plugins/jquery-slimscroll/jquery.slimscroll.min.js',
  117.         'assets/global/plugins/jquery.blockui.min.js',
  118.         'assets/global/plugins/jquery.cokie.min.js',
  119.         'assets/global/plugins/uniform/jquery.uniform.min.js',
  120.         'assets/global/plugins/moment/moment.min.js',
  121.         'assets/global/plugins/date/date.js',
  122.         'assets/global/plugins/toastr/toastr.min.js',
  123.         'assets/global/scripts/metronic.js',
  124.         'assets/layout/scripts/layout.js',
  125.         output='gen/g_js.js')
  126.     assets.register('g_js', g_js)
  127.  
  128.     form_js = Bundle(
  129.         'assets/global/plugins/jquery-validation/jquery.validate.min.js',
  130.         'assets/global/plugins/jquery-inputmask/jquery.inputmask.bundle.min.js',
  131.         'assets/global/plugins/jquery-inputmask/jquery.inputmask.additional-methods.min.js',
  132.         'assets/global/plugins/jquery-inputmask/jquery.input-ip-address-control-1.0.min.js',
  133.         'assets/global/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js',
  134.         'assets/global/plugins/bootstrap-touchspin/bootstrap.touchspin.min.js',
  135.         'assets/global/plugins/select2/select2.min.js',
  136.         'assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js',
  137.         'assets/global/plugins/jquery-multi-select/js/jquery.multi-select.js',
  138.         'assets/global/plugins/summernote/summernote.js',
  139.         'assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js',
  140.         'assets/global/plugins/bootstrap-daterangepicker/js/daterangepicker.js',
  141.         'assets/global/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js',
  142.         'assets/global/plugins/bootstrap-wizard/jquery.bootstrap.wizard.js',
  143.         output='gen/form_js.js')
  144.     assets.register('form_js', form_js)
  145.  
  146.     dt_css = Bundle(
  147.         'assets/global/plugins/datatables10/media/css/dataTables.bootstrap.css',
  148.         output='gen/dt_css.css')
  149.     assets.register('dt_css', dt_css)
  150.  
  151.     dt_js = Bundle(
  152.         'assets/global/plugins/datatables10/media/js/jquery.dataTables.js',
  153.         'assets/global/plugins/datatables10/media/js/dataTables.bootstrap.js',
  154.         'assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js',
  155.         'assets/global/scripts/datatable.js',
  156.         output='gen/dt_js.js')
  157.     assets.register('dt_js', dt_js)
  158.  
  159.     from .mod_tests import tests as tests_blueprint
  160.     from .mod_myadmin import myadmin as myadmin_blueprint
  161.     from .mod_main import main as main_blueprint
  162.     from .mod_bepassets import bepassets as assets_blueprint
  163.     from .mod_auth import auth as auth_blueprint
  164.     webapp.register_blueprint(tests_blueprint, url_prefix='/tests')
  165.     webapp.register_blueprint(myadmin_blueprint, url_prefix='/myadmin')
  166.     webapp.register_blueprint(main_blueprint, url_prefix='/main')
  167.     webapp.register_blueprint(assets_blueprint, url_prefix='/bepassets')
  168.     webapp.register_blueprint(auth_blueprint, url_prefix='/auth')
  169.    
  170.     return webapp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement