# -*- coding: UTF-8 -* # pylint: disable=invalid-name import os import logging from logging.handlers import SMTPHandler, RotatingFileHandler from flask import request from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_login import LoginManager from flask_mail import Mail from flask_bootstrap import Bootstrap from flask_moment import Moment from config import Config app = Flask(__name__) app.config.from_object(Config) db = SQLAlchemy(app) migrate = Migrate(app, db) login = LoginManager() login.login_view = "auth.login" login.login_message = "Please log in to access this page." mail = Mail() bootstrap = Bootstrap(app) moment = Moment() def create_app(config_class=Config): app = Flask(__name__) app.config.from_object(config_class) db.init_app(app) migrate.init_app(app, db) login.init_app(app) mail.init_app(app) bootstrap.init_app(app) moment.init_app(app) from app.auth import bp as auth_bp app.register_blueprint(auth_bp, url_prefix="/auth") from app.views import notes_bp app.register_blueprint(notes_bp, url_prefix="/ScoDoc") from app.main import bp as main_bp app.register_blueprint(main_bp) if not app.debug and not app.testing: if app.config["MAIL_SERVER"]: auth = None if app.config["MAIL_USERNAME"] or app.config["MAIL_PASSWORD"]: auth = (app.config["MAIL_USERNAME"], app.config["MAIL_PASSWORD"]) secure = None if app.config["MAIL_USE_TLS"]: secure = () mail_handler = SMTPHandler( mailhost=(app.config["MAIL_SERVER"], app.config["MAIL_PORT"]), fromaddr="no-reply@" + app.config["MAIL_SERVER"], toaddrs=[app.config["ADMINS"]], subject="ScoDoc8 Failure", credentials=auth, secure=secure, ) mail_handler.setLevel(logging.ERROR) app.logger.addHandler(mail_handler) if not os.path.exists("logs"): os.mkdir("logs") file_handler = RotatingFileHandler( "logs/scodoc.log", maxBytes=10240, backupCount=10 ) file_handler.setFormatter( logging.Formatter( "%(asctime)s %(levelname)s: %(message)s " "[in %(pathname)s:%(lineno)d]" ) ) file_handler.setLevel(logging.INFO) app.logger.addHandler(file_handler) app.logger.setLevel(logging.INFO) app.logger.info("ScoDoc8 startup") return app # from app import models