feat: 初始版本,圆角主题与首次管理员引导
This commit is contained in:
56
app/__init__.py
Normal file
56
app/__init__.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import os
|
||||
from flask import Flask
|
||||
from .extensions import db, migrate, login_manager, csrf
|
||||
from .config import Config
|
||||
from flask_wtf.csrf import generate_csrf
|
||||
|
||||
def create_app():
|
||||
app = Flask(__name__, static_folder="static", template_folder="templates")
|
||||
app.config.from_object(Config)
|
||||
os.makedirs(app.config.get("UPLOAD_FOLDER"), exist_ok=True)
|
||||
os.makedirs(os.path.join(app.config.get("UPLOAD_FOLDER"), "identity"), exist_ok=True)
|
||||
os.makedirs(os.path.join(app.config.get("UPLOAD_FOLDER"), "posts"), exist_ok=True)
|
||||
os.makedirs(os.path.join(app.config.get("UPLOAD_FOLDER"), "activities"), exist_ok=True)
|
||||
db.init_app(app)
|
||||
migrate.init_app(app, db)
|
||||
login_manager.init_app(app)
|
||||
csrf.init_app(app)
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
@app.context_processor
|
||||
def inject_csrf():
|
||||
return dict(csrf_token=generate_csrf())
|
||||
from .blueprints.auth import bp as auth_bp
|
||||
from .blueprints.users import bp as users_bp
|
||||
from .blueprints.posts import bp as posts_bp
|
||||
from .blueprints.comments import bp as comments_bp
|
||||
from .blueprints.follows import bp as follows_bp
|
||||
from .blueprints.feed import bp as feed_bp
|
||||
from .blueprints.activities import bp as activities_bp
|
||||
from .blueprints.admin import bp as admin_bp
|
||||
from .blueprints.main import bp as main_bp
|
||||
from .blueprints.setup import bp as setup_bp
|
||||
app.register_blueprint(auth_bp)
|
||||
app.register_blueprint(main_bp)
|
||||
app.register_blueprint(setup_bp)
|
||||
app.register_blueprint(users_bp)
|
||||
app.register_blueprint(posts_bp)
|
||||
app.register_blueprint(comments_bp)
|
||||
app.register_blueprint(follows_bp)
|
||||
app.register_blueprint(feed_bp)
|
||||
app.register_blueprint(activities_bp)
|
||||
app.register_blueprint(admin_bp)
|
||||
from .cli import register_cli
|
||||
register_cli(app)
|
||||
@app.before_request
|
||||
def ensure_admin_setup():
|
||||
from .models import User
|
||||
from flask import request, redirect, url_for
|
||||
try:
|
||||
has_admin = User.query.filter_by(role="admin").first() is not None
|
||||
except Exception:
|
||||
has_admin = True
|
||||
if not has_admin:
|
||||
if not (request.path.startswith("/setup/admin") or request.path.startswith("/static")):
|
||||
return redirect(url_for("setup.admin"))
|
||||
return app
|
||||
Reference in New Issue
Block a user