fix delete

This commit is contained in:
2026-04-16 01:32:42 -06:00
parent 6ca5e4b6ea
commit 99f680814e
4 changed files with 37 additions and 20 deletions

View File

@@ -39,6 +39,7 @@ def create_submission(request, payload: SubmissionIn):
"""
task = get_object_or_404(Task, id=payload.task_id)
manual_asst_msg = None
if payload.prompt:
conversation = (
Conversation.objects.filter(user=request.user, task=task)
@@ -53,7 +54,7 @@ def create_submission(request, payload: SubmissionIn):
Message.objects.create(
conversation=conversation, role="user", content=payload.prompt, source="manual"
)
Message.objects.create(
manual_asst_msg = Message.objects.create(
conversation=conversation,
role="assistant",
content="",
@@ -83,8 +84,11 @@ def create_submission(request, payload: SubmissionIn):
js=payload.js,
)
# Link assistant message if provided
if payload.message_id:
# Link assistant message to submission
if manual_asst_msg:
manual_asst_msg.submission = submission
manual_asst_msg.save(update_fields=["submission"])
elif payload.message_id:
try:
msg = Message.objects.get(
id=payload.message_id,
@@ -207,11 +211,12 @@ def clear_all_flags(request):
@login_required
def delete_submission(request, submission_id: UUID):
submission = get_object_or_404(Submission, id=submission_id)
if submission.user != request.user:
if submission.user != request.user and request.user.role != RoleChoices.SUPER:
raise HttpError(403, "只能删除自己的提交")
# Delete linked message pair if present
# 找到关联的助手消息,再找前一条用户消息
asst_msg = Message.objects.filter(submission=submission).first()
user_msg = None
if asst_msg:
user_msg = (
Message.objects.filter(
@@ -222,11 +227,12 @@ def delete_submission(request, submission_id: UUID):
.order_by("-created")
.first()
)
if user_msg:
user_msg.delete()
asst_msg.delete()
submission.delete()
submission.delete() # CASCADE 自动删除关联的 asst_msg
if user_msg:
user_msg.delete()
return {"message": "删除成功"}