You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.4 KiB
72 lines
2.4 KiB
import os |
|
import logging |
|
|
|
from logging.handlers import SMTPHandler |
|
from logging.handlers import RotatingFileHandler |
|
|
|
from flask import Flask |
|
from flask_bootstrap import Bootstrap |
|
from flask_sqlalchemy import SQLAlchemy |
|
from flask_migrate import Migrate |
|
from flask_login import LoginManager |
|
from flask_moment import Moment |
|
|
|
from config import Config |
|
|
|
db = SQLAlchemy() |
|
bootstrap = Bootstrap() |
|
migrate = Migrate() |
|
login = LoginManager() |
|
login.login_view = 'login' |
|
login.login_message = 'Please log in to access this page.' |
|
moment = Moment() |
|
|
|
def create_app(config_class=Config): |
|
# pylint: disable=no-member |
|
app = Flask(__name__) |
|
app.config.from_object(config_class) |
|
|
|
db.init_app(app) |
|
bootstrap.init_app(app) |
|
migrate.init_app(app, db) |
|
login.init_app(app) |
|
moment.init_app(app) |
|
|
|
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='Microblog Failure', |
|
credentials=auth, secure=secure) |
|
mail_handler.setLevel(logging.ERROR) |
|
app.logger.addHandler(mail_handler) |
|
|
|
if app.config['LOG_TO_STDOUT']: |
|
stream_handler = logging.StreamHandler() |
|
stream_handler.setLevel(logging.INFO) |
|
app.logger.addHandler(stream_handler) |
|
else: |
|
if not os.path.exists('logs'): |
|
os.mkdir('logs') |
|
file_handler = RotatingFileHandler('logs/microblog.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('Microblog startup') |
|
|
|
return app |
|
|
|
from app import routes, models, errors
|
|
|