@app.callback(
[Output("my-modal", "is_open"),
Output("success-model", "is_open")],
[Input("submit-btn", "n_clicks"),
Input("custom-close-icon", "n_clicks"),
Input("close-modal", "n_clicks")],
[State("my-modal", "is_open"),
State("sn", "value"),
State("ip", "value"),
State("fp", "value"),
State("type", "value"),
State("pi-ip", "value")],
prevent_initial_call=True
)
def handle_modal_actions(submit_clicks, close_clicks, is_open, sn, ip, fp, device_type, pi_ip):
ctx = dash.callback_context
if not ctx.triggered:
return dash.no_update
trigger_id = ctx.triggered[0]["prop_id"].split(".")[0]
print(f"trigger_id={trigger_id}")
if trigger_id == "custom-close-icon":
return not is_open
if trigger_id == "submit-btn":
if not all([sn, ip, fp, device_type]):
logging.warning("Missing required fields")
return dash.no_update
if not pi_ip:
query = """
INSERT INTO devices
(serialnumber, dut_ip, floorplan, device_type, team, available)
VALUES (%s, %s, %s, %s, %s, %s)
"""
success = db_execute(query, (sn, ip, fp, device_type, "local", "1"))
if pi_ip:
query = """
INSERT INTO devices
(serialnumber, dut_ip, floorplan, device_type, pi_ip, team, available)
VALUES (%s, %s, %s, %s, %s, %s, %s)
"""
success = db_execute(query, (sn, ip, fp, device_type, pi_ip, "local", "1"))
return not success if success else False
return dash.no_update
把刚刚的方法合到这里面