fix: manually delete dependent records before forum topic deletion
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
forum_topic_reads FK lacks CASCADE in DB, causing NotNullViolation. Delete reads, replies, attachments, reports, subscriptions manually. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
155577b985
commit
8f0cfba516
@ -593,7 +593,22 @@ def admin_forum_delete_topic(topic_id):
|
||||
return jsonify({'success': False, 'error': 'Temat nie istnieje'}), 404
|
||||
|
||||
topic_title = topic.title
|
||||
db.delete(topic) # Cascade deletes replies
|
||||
|
||||
# Manually delete dependent records (FK may lack CASCADE in DB)
|
||||
from database import ForumTopicRead, ForumReplyRead, ForumAttachment, ForumReport, ForumEditHistory, ForumReply, ForumTopicSubscription
|
||||
for reply in topic.replies:
|
||||
db.query(ForumReplyRead).filter(ForumReplyRead.reply_id == reply.id).delete()
|
||||
db.query(ForumAttachment).filter(ForumAttachment.reply_id == reply.id).delete()
|
||||
db.query(ForumReport).filter(ForumReport.reply_id == reply.id).delete()
|
||||
db.query(ForumEditHistory).filter(ForumEditHistory.reply_id == reply.id).delete()
|
||||
db.query(ForumReply).filter(ForumReply.topic_id == topic_id).delete()
|
||||
db.query(ForumTopicRead).filter(ForumTopicRead.topic_id == topic_id).delete()
|
||||
db.query(ForumAttachment).filter(ForumAttachment.topic_id == topic_id).delete()
|
||||
db.query(ForumReport).filter(ForumReport.topic_id == topic_id).delete()
|
||||
db.query(ForumEditHistory).filter(ForumEditHistory.topic_id == topic_id).delete()
|
||||
db.query(ForumTopicSubscription).filter(ForumTopicSubscription.topic_id == topic_id).delete()
|
||||
|
||||
db.delete(topic)
|
||||
db.commit()
|
||||
|
||||
logger.info(f"Admin {current_user.email} deleted topic #{topic_id}: {topic_title}")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user