from fastapi import APIRouter, Depends, Form, Request
from fastapi.responses import HTMLResponse, RedirectResponse
from sqlalchemy.orm import Session
from sqlalchemy import text
from database import SessionLocal
router = APIRouter(prefix="/admin/step1", tags=["step1"])
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@router.get("", response_class=HTMLResponse)
def step1_page(request: Request, db: Session = Depends(get_db)):
rows = db.execute(text("""
SELECT * FROM step1_attr
ORDER BY attr_key, sort_order
""")).fetchall()
html = """
Step1 模板配置
"""
last_tpl = None
for r in rows:
if r.base_template_id != last_tpl:
html += f"模板 {r.base_template_id}
"
last_tpl = r.base_template_id
html += f"""
[{r.attr_name}] {r.value_name}
"""
return html
@router.post("/add")
def add_step1(
base_template_id: int = Form(...),
attr_key: str = Form(...),
attr_name: str = Form(...),
value_id: int = Form(...),
value_name: str = Form(...),
required: int = Form(1),
is_multi: int = Form(0),
db: Session = Depends(get_db)
):
db.execute("""
INSERT INTO step1_attr
(base_template_id, attr_key, attr_name, value_id, value_name, required, is_multi)
VALUES
(:tpl,:k,:n,:vid,:vname,:r,:m)
""", {
"tpl": base_template_id,
"k": attr_key,
"n": attr_name,
"vid": value_id,
"vname": value_name,
"r": required,
"m": is_multi
})
db.commit()
return RedirectResponse("/admin/step1", status_code=302)