Files
SMANAGE/_api_backup/TempLateAPI/GERP/API/FormAPI/Delete.api
T
2026-06-16 11:55:14 +08:00

64 lines
2.1 KiB
Plaintext

from PDAPI import *
import TempLateAPI.GERP.API.FormAPI.FormData as FormData
__metadata__ = {
"route": "{DEFAULT_ROUTE}/<TableName>/<id>",
"methods": ["DELETE"],
"blueprint": "GERP",
"permission": 3.0,
"attributes": [],
"limit": "1 per second"
}
def HandleRequest(_CleanedData):
Table = FormData.GetTable(_CleanedData["params"]["TableName"])
if not Table:
return {"code": 1, "msg": "找不到表格"}, 404
ctx = FormData.PM._build_context(Table, _CleanedData["params"]["TableName"], _CleanedData)
if not FormData.PM.check_permission("delete", ctx):
return {"code": 403, "msg": "无删除权限"}, 403
skip, custom_result = FormData.PM.run_before_delete(ctx)
if skip:
return custom_result
extension = FormData.get_table_extension(_CleanedData["params"]["TableName"])
if extension and hasattr(extension, "delete"):
extension_result = extension.delete(Table, _CleanedData)
if extension_result:
return extension_result
if Table.IsCompositeKey:
pk_filter = []
for pk in Table.PrimaryKeys:
pk_val = _CleanedData["params"].get(pk) or _CleanedData["form"].get(pk)
if not pk_val:
return {"code": 1, "msg": f"缺少参数: {pk}"}, 400
pk_filter.append(
getattr(Table.Model, pk) == Table.KeyToUUIDConversion(pk, pk_val, bytes)
)
Model = Table.Model.query.filter(*pk_filter).first()
else:
_id = _CleanedData["params"]["id"]
Model = Table.Model.query.filter(
getattr(Table.Model, Table.PrimaryKey) == Table.KeyToUUIDConversion(Table.PrimaryKey, _id, bytes)
).first()
if not Model:
return {"code": 1, "msg": "找不到模型"}, 404
try:
db.session.delete(Model)
db.session.commit()
result = {"code": 0, "msg": "删除成功"}, 200
except:
result = {"code": 1, "msg": "SQL 提交失败"}, 500
modified_result, skip_response = FormData.PM.run_after_delete(ctx, result)
if skip_response:
return modified_result
return result