156 lines
5.4 KiB
Python
156 lines
5.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Initialize database with default data
|
|
Usage: python init_db.py
|
|
"""
|
|
import sys
|
|
import os
|
|
|
|
# Add app to path
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from app.database import engine, SessionLocal, Base
|
|
from app.models import Admin, HomeModule, NavMenu, Setting
|
|
from app.auth import get_password_hash
|
|
import json
|
|
|
|
|
|
def init_database():
|
|
print("Creating database tables...")
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
db = SessionLocal()
|
|
|
|
try:
|
|
# Check if already initialized
|
|
if db.query(Admin).first():
|
|
print("Database already initialized!")
|
|
return
|
|
|
|
print("Creating default admin...")
|
|
admin = Admin(
|
|
username="admin",
|
|
password_hash=get_password_hash("abcd1234")
|
|
)
|
|
db.add(admin)
|
|
|
|
print("Creating default home modules...")
|
|
default_modules = [
|
|
HomeModule(
|
|
name="轮播图",
|
|
code="banner",
|
|
type="banner",
|
|
sort_order=1,
|
|
is_enabled=True,
|
|
is_fixed=True,
|
|
content=json.dumps({"slides": []}),
|
|
style_config=json.dumps({"backgroundColor": "#ffffff"})
|
|
),
|
|
HomeModule(
|
|
name="产品优势",
|
|
code="features",
|
|
type="features",
|
|
sort_order=2,
|
|
is_enabled=True,
|
|
is_fixed=False,
|
|
title="为什么选择我们",
|
|
content=json.dumps({"items": []}),
|
|
style_config=json.dumps({"backgroundColor": "#FEF9E7"})
|
|
),
|
|
HomeModule(
|
|
name="新闻动态",
|
|
code="news",
|
|
type="news",
|
|
sort_order=3,
|
|
is_enabled=True,
|
|
is_fixed=False,
|
|
title="新闻动态",
|
|
content=json.dumps({"count": 4}),
|
|
style_config=json.dumps({"backgroundColor": "#ffffff"})
|
|
),
|
|
HomeModule(
|
|
name="合作伙伴",
|
|
code="partners",
|
|
type="partners",
|
|
sort_order=4,
|
|
is_enabled=True,
|
|
is_fixed=False,
|
|
title="合作伙伴",
|
|
content=json.dumps({"logos": []}),
|
|
style_config=json.dumps({"backgroundColor": "#FEF9E7"})
|
|
),
|
|
HomeModule(
|
|
name="APP下载",
|
|
code="downloads",
|
|
type="downloads",
|
|
sort_order=5,
|
|
is_enabled=True,
|
|
is_fixed=False,
|
|
title="下载我们的APP",
|
|
content=json.dumps({"apps": []}),
|
|
style_config=json.dumps({"backgroundColor": "#ffffff"})
|
|
),
|
|
HomeModule(
|
|
name="联系我们",
|
|
code="contact",
|
|
type="contact",
|
|
sort_order=6,
|
|
is_enabled=True,
|
|
is_fixed=False,
|
|
title="联系我们",
|
|
content=json.dumps({"phone": "", "email": "", "address": ""}),
|
|
style_config=json.dumps({"backgroundColor": "#FEF9E7"})
|
|
),
|
|
HomeModule(
|
|
name="专家团队",
|
|
code="experts",
|
|
type="experts",
|
|
sort_order=7,
|
|
is_enabled=True,
|
|
is_fixed=False,
|
|
title="专家团队",
|
|
content=json.dumps({"view_more_link": ""}),
|
|
style_config=json.dumps({"backgroundColor": "#ffffff"})
|
|
)
|
|
]
|
|
for module in default_modules:
|
|
db.add(module)
|
|
|
|
print("Creating default nav menus...")
|
|
default_menus = [
|
|
NavMenu(name="首页", link="/", sort_order=1, is_enabled=True),
|
|
NavMenu(name="产品介绍", link="/product", sort_order=2, is_enabled=True),
|
|
NavMenu(name="新闻动态", link="/news", sort_order=3, is_enabled=True),
|
|
NavMenu(name="关于我们", link="/about", sort_order=4, is_enabled=True),
|
|
NavMenu(name="联系我们", link="/contact", sort_order=5, is_enabled=True),
|
|
]
|
|
for menu in default_menus:
|
|
db.add(menu)
|
|
|
|
print("Creating default settings...")
|
|
default_settings = [
|
|
Setting(key="site_name", value="飞点健康", group="general", description="网站名称"),
|
|
Setting(key="site_logo", value="/logo.png", group="general", description="网站Logo"),
|
|
Setting(key="company_name", value="深圳飞点健康科技有限公司", group="company", description="公司名称"),
|
|
Setting(key="copyright", value="© 2024 飞点健康 版权所有", group="general", description="版权信息"),
|
|
]
|
|
for setting in default_settings:
|
|
db.add(setting)
|
|
|
|
db.commit()
|
|
print("✅ Database initialized successfully!")
|
|
print("\nDefault admin credentials:")
|
|
print(" Username: admin")
|
|
print(" Password: abcd1234")
|
|
|
|
except Exception as e:
|
|
db.rollback()
|
|
print(f"❌ Error: {e}")
|
|
raise
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
init_database()
|