chore: initialize GSREA website project
This commit is contained in:
commit
d3c5461de5
1842 files changed
+246140
No files matched your search
@@ -0,0 +1,94 @@
|
||||
import logging
|
||||
|
||||
from fastapi import FastAPI
|
||||
|
||||
from app.api.router import api_router
|
||||
from app.core.config import get_settings
|
||||
from app.core.middleware import install_middleware
|
||||
|
||||
logger = logging.getLogger("gsfdc.startup")
|
||||
|
||||
|
||||
def prepare_runtime() -> None:
|
||||
settings = get_settings()
|
||||
if not settings.database_url.strip():
|
||||
return
|
||||
import app.models.about # noqa: F401
|
||||
import app.models.content # noqa: F401
|
||||
import app.models.home # noqa: F401
|
||||
import app.models.report_filing # noqa: F401
|
||||
import app.models.legal # noqa: F401
|
||||
import app.models.discipline # noqa: F401
|
||||
import app.models.expert # noqa: F401
|
||||
import app.models.member # noqa: F401
|
||||
import app.models.uploaded_case # noqa: F401
|
||||
import app.models.rbac # noqa: F401
|
||||
import app.models.security # noqa: F401
|
||||
from app.db import Base, SessionLocal, get_engine
|
||||
from app.models.content import ensure_site_defaults
|
||||
from app.models.home import (
|
||||
ensure_article_body_capacity,
|
||||
ensure_home_templates,
|
||||
ensure_hot_link_slots,
|
||||
retire_removed_shortcut_keys,
|
||||
)
|
||||
from app.models.uploaded_case import ensure_uploaded_case_columns
|
||||
from app.services.ip_guard import seed_ip_blacklist
|
||||
|
||||
engine = get_engine()
|
||||
Base.metadata.create_all(bind=engine)
|
||||
SessionLocal.configure(bind=engine)
|
||||
db = SessionLocal()
|
||||
try:
|
||||
ensure_site_defaults(db)
|
||||
ensure_home_templates(db)
|
||||
ensure_hot_link_slots(db)
|
||||
retire_removed_shortcut_keys(db)
|
||||
ensure_article_body_capacity(db)
|
||||
ensure_uploaded_case_columns(db)
|
||||
seed_ip_blacklist(db)
|
||||
from app.commands.create_superuser import (
|
||||
ensure_about_menu,
|
||||
ensure_directory_menu,
|
||||
ensure_expert_menu,
|
||||
ensure_home_menu,
|
||||
ensure_library_menu,
|
||||
ensure_party_menu,
|
||||
ensure_report_menu,
|
||||
ensure_discipline_menu,
|
||||
ensure_edu_menu,
|
||||
ensure_tech_menu,
|
||||
)
|
||||
|
||||
ensure_home_menu(db)
|
||||
ensure_about_menu(db)
|
||||
ensure_directory_menu(db)
|
||||
ensure_party_menu(db)
|
||||
ensure_expert_menu(db)
|
||||
ensure_library_menu(db)
|
||||
ensure_report_menu(db)
|
||||
ensure_discipline_menu(db)
|
||||
ensure_tech_menu(db)
|
||||
ensure_edu_menu(db)
|
||||
db.commit()
|
||||
finally:
|
||||
db.close()
|
||||
if settings.minio_endpoint.strip():
|
||||
try:
|
||||
from app.services.storage import ensure_buckets
|
||||
|
||||
ensure_buckets()
|
||||
except Exception:
|
||||
logger.warning("对象存储初始化失败")
|
||||
|
||||
|
||||
def create_app() -> FastAPI:
|
||||
settings = get_settings()
|
||||
app = FastAPI(title=settings.app_name, docs_url="/docs", openapi_url="/openapi.json")
|
||||
install_middleware(app)
|
||||
app.include_router(api_router)
|
||||
prepare_runtime()
|
||||
return app
|
||||
|
||||
|
||||
app = create_app()
|
||||
Reference in new issue
Block a user