Bootstrap(app) # use our own bootstrap theme app.extensions['bootstrap']['cdns']['bootstrap'] = StaticCDN() db = SQLAlchemy(app) toolbar = DebugToolbarExtension(app) if not app.debug: timedFileHandler = TimedRotatingFileHandler(app.config['LOGFILE'], when='midnight', backupCount=100) timedFileHandler.setLevel(logging.DEBUG) loglogger = logging.getLogger('werkzeug') loglogger.setLevel(logging.DEBUG) loglogger.addHandler(timedFileHandler) app.logger.addHandler(timedFileHandler) airbrakelogger = logging.getLogger('airbrake') # Airbrake airbrake = Airbrake(project_id=app.config['AIRBRAKE_ID'], api_key=app.config['AIRBRAKE_KEY']) # ugly hack to make this work for out errbit airbrake._api_url = "http://errbit.awesomepeople.tv/api/v3/projects/{}/notices".format( airbrake.project_id) airbrakelogger.addHandler(AirbrakeHandler(airbrake=airbrake)) app.logger.addHandler(AirbrakeHandler(airbrake=airbrake))
lambda text: jinja2.Markup(markdown.markdown(text))) app.jinja_env.tests['not_equalto'] = lambda value, other: value != other lm = LoginManager(app) lm.init_app(app) csrf = CsrfProtect() csrf.init_app(app) if config.PRODUCTION: log_file_handler = RotatingFileHandler(config.WEB_LOG, maxBytes=10000000) logging.getLogger().addHandler(log_file_handler) logging.getLogger('werkzeug').addHandler(log_file_handler) app.logger.addHandler(log_file_handler) airbrakelogger = logging.getLogger('airbrake') # Airbrake airbrake = Airbrake(project_id=config.AIRBRAKE_ID, api_key=config.AIRBRAKE_KEY) # ugly hack to make this work for our errbit airbrake._api_url = "{}/api/v3/projects/{}/notices".format( config.AIRBRAKE_BASE_URL, airbrake.project_id) airbrakelogger.addHandler(AirbrakeHandler(airbrake=airbrake)) app.logger.addHandler(AirbrakeHandler(airbrake=airbrake)) app.before_request(lambda: Session.remove()) from battlebots.web import views # NOQA from battlebots.web.views import bots # NOQA
def register_plugins(app: Flask) -> Manager: "Register all the plugins to Haldis" # pylint: disable=W0612 # Register Airbrake and enable the logrotation if not app.debug: timedFileHandler = TimedRotatingFileHandler( app.config["LOGFILE"], when="midnight", backupCount=100 ) timedFileHandler.setLevel(logging.DEBUG) loglogger = logging.getLogger("werkzeug") loglogger.setLevel(logging.DEBUG) loglogger.addHandler(timedFileHandler) app.logger.addHandler(timedFileHandler) airbrakelogger = logging.getLogger("airbrake") # Airbrake airbrake = Airbrake(project_id=app.config["AIRBRAKE_ID"], api_key=app.config["AIRBRAKE_KEY"]) # ugly hack to make this work for out errbit airbrake._api_url = "http://errbit.awesomepeople.tv/api/v3/projects/{}/notices".format( # pylint: disable=W0212 airbrake.project_id ) airbrakelogger.addHandler(AirbrakeHandler(airbrake=airbrake)) app.logger.addHandler(AirbrakeHandler(airbrake=airbrake)) # Initialize SQLAlchemy db.init_app(app) # Initialize Flask-Migrate migrate = Migrate(app, db) app_manager = Manager(app) app_manager.add_command("db", MigrateCommand) app_manager.add_command("runserver", Server(port=8000)) # Add admin interface init_admin(app, db) # Init login manager login_manager = LoginManager() login_manager.init_app(app) login_manager.anonymous_user = AnonymouseUser init_login(app) # Add oauth zeus = init_oauth(app) app.zeus = zeus # Load the bootstrap local cdn Bootstrap(app) app.config["BOOTSTRAP_SERVE_LOCAL"] = True # use our own bootstrap theme app.extensions["bootstrap"]["cdns"]["bootstrap"] = StaticCDN() # Load the flask debug toolbar toolbar = DebugToolbarExtension(app) # Make cookies more secure app.config.update( SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax', ) if not app.debug: app.config.update(SESSION_COOKIE_SECURE=True) return app_manager
csrf.init_app(app) if config.PRODUCTION: log_file_handler = RotatingFileHandler(config.WEB_LOG, maxBytes=10000000) logging.getLogger().addHandler(log_file_handler) logging.getLogger('werkzeug').addHandler(log_file_handler) app.logger.addHandler(log_file_handler) airbrakelogger = logging.getLogger('airbrake') # Airbrake airbrake = Airbrake( project_id=config.AIRBRAKE_ID, api_key=config.AIRBRAKE_KEY ) # ugly hack to make this work for our errbit airbrake._api_url = "{}/api/v3/projects/{}/notices".format(config.AIRBRAKE_BASE_URL, airbrake.project_id) airbrakelogger.addHandler( AirbrakeHandler(airbrake=airbrake) ) app.logger.addHandler( AirbrakeHandler(airbrake=airbrake) ) app.before_request(lambda: Session.remove()) from battlebots.web import views # NOQA from battlebots.web.views import bots # NOQA