hns-login/website/app.py

47 lines
1.2 KiB
Python
Raw Normal View History

2024-02-09 23:04:20 +11:00
import os
from flask import Flask
from .models import db
from .oauth2 import config_oauth
from .routes import bp
from datetime import timedelta
import dotenv
2024-02-09 23:04:20 +11:00
dotenv.load_dotenv()
2024-02-09 23:04:20 +11:00
def create_app(config=None):
app = Flask(__name__)
# load default configuration
app.config.from_object('website.settings')
# load environment configuration
if 'WEBSITE_CONF' in os.environ:
app.config.from_envvar('WEBSITE_CONF')
# Set the secret key to a key from the ENV
app.secret_key = os.getenv("FLASK_SECRET_KEY", os.urandom(24).hex())
# Set the session to be permanent
app.config["SESSION_PERMANENT"] = True
# Set it to 6 months
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(days=180)
2024-02-09 23:04:20 +11:00
# load app specified configuration
if config is not None:
if isinstance(config, dict):
app.config.update(config)
elif config.endswith('.py'):
app.config.from_pyfile(config)
setup_app(app)
return app
def setup_app(app: Flask):
2024-02-09 23:04:20 +11:00
db.init_app(app)
# Create tables if they do not exist already
with app.app_context():
db.create_all()
config_oauth(app)
app.register_blueprint(bp, url_prefix='')