123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import os
- basedir = os.path.abspath(os.path.dirname(__file__))
- class Config:
- SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
- MAIL_SERVER = os.environ.get('MAIL_SERVER', 'smtp.googlemail.com')
- MAIL_PORT = int(os.environ.get('MAIL_PORT', '587'))
- MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'true').lower() in \
- ['true', 'on', '1']
- MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
- MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
- FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
- FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
- FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
- SSL_REDIRECT = False
- SQLALCHEMY_TRACK_MODIFICATIONS = False
- SQLALCHEMY_RECORD_QUERIES = True
- FLASKY_POSTS_PER_PAGE = 20
- FLASKY_FOLLOWERS_PER_PAGE = 50
- FLASKY_COMMENTS_PER_PAGE = 30
- FLASKY_SLOW_DB_QUERY_TIME = 0.5
- @staticmethod
- def init_app(app):
- pass
- class DevelopmentConfig(Config):
- DEBUG = True
- SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
- 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
- class TestingConfig(Config):
- TESTING = True
- SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
- 'sqlite://'
- WTF_CSRF_ENABLED = False
- class ProductionConfig(Config):
- SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
- 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
- @classmethod
- def init_app(cls, app):
- Config.init_app(app)
- # email errors to the administrators
- import logging
- from logging.handlers import SMTPHandler
- credentials = None
- secure = None
- if getattr(cls, 'MAIL_USERNAME', None) is not None:
- credentials = (cls.MAIL_USERNAME, cls.MAIL_PASSWORD)
- if getattr(cls, 'MAIL_USE_TLS', None):
- secure = ()
- mail_handler = SMTPHandler(
- mailhost=(cls.MAIL_SERVER, cls.MAIL_PORT),
- fromaddr=cls.FLASKY_MAIL_SENDER,
- toaddrs=[cls.FLASKY_ADMIN],
- subject=cls.FLASKY_MAIL_SUBJECT_PREFIX + ' Application Error',
- credentials=credentials,
- secure=secure)
- mail_handler.setLevel(logging.ERROR)
- app.logger.addHandler(mail_handler)
- class HerokuConfig(ProductionConfig):
- SSL_REDIRECT = True if os.environ.get('DYNO') else False
- @classmethod
- def init_app(cls, app):
- ProductionConfig.init_app(app)
- # handle reverse proxy server headers
- try:
- from werkzeug.middleware.proxy_fix import ProxyFix
- except ImportError:
- from werkzeug.contrib.fixers import ProxyFix
- app.wsgi_app = ProxyFix(app.wsgi_app)
- # log to stderr
- import logging
- from logging import StreamHandler
- file_handler = StreamHandler()
- file_handler.setLevel(logging.INFO)
- app.logger.addHandler(file_handler)
- class DockerConfig(ProductionConfig):
- @classmethod
- def init_app(cls, app):
- ProductionConfig.init_app(app)
- # log to stderr
- import logging
- from logging import StreamHandler
- file_handler = StreamHandler()
- file_handler.setLevel(logging.INFO)
- app.logger.addHandler(file_handler)
- class UnixConfig(ProductionConfig):
- @classmethod
- def init_app(cls, app):
- ProductionConfig.init_app(app)
- # log to syslog
- import logging
- from logging.handlers import SysLogHandler
- syslog_handler = SysLogHandler()
- syslog_handler.setLevel(logging.INFO)
- app.logger.addHandler(syslog_handler)
- config = {
- 'development': DevelopmentConfig,
- 'testing': TestingConfig,
- 'production': ProductionConfig,
- 'heroku': HerokuConfig,
- 'docker': DockerConfig,
- 'unix': UnixConfig,
- 'default': DevelopmentConfig
- }
|