64 lines
2.1 KiB
Plaintext
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
|