Compare commits
1 Commits
692c0794c5
...
62c33c47c6
| Author | SHA1 | Date | |
|---|---|---|---|
| 62c33c47c6 |
@@ -268,7 +268,8 @@ def delete_markdown(markdown_id):
|
||||
"""
|
||||
Delete a markdown document.
|
||||
|
||||
This endpoint deletes an existing markdown document.
|
||||
This endpoint deletes an existing markdown document and cascades the deletion
|
||||
to related settings to avoid foreign key conflicts.
|
||||
It requires authentication with the 'admin' role.
|
||||
|
||||
Request:
|
||||
@@ -280,19 +281,55 @@ def delete_markdown(markdown_id):
|
||||
Response Codes:
|
||||
- 200: Deleted successfully
|
||||
- 404: Markdown not found
|
||||
- 500: Server error during cascade deletion
|
||||
"""
|
||||
with get_db() as session:
|
||||
try:
|
||||
markdown = session.get(Markdown, markdown_id)
|
||||
if markdown is None:
|
||||
logger.error(f"failed to delete markdown: {markdown_id}")
|
||||
errno = RequestContext.get_error_id()
|
||||
return jsonify({"error": f"file not found - {errno}"}), 404
|
||||
|
||||
md = markdown.to_dict()
|
||||
|
||||
|
||||
if markdown.setting_id:
|
||||
markdown_setting = session.query(MarkdownSetting).get(markdown.setting_id)
|
||||
if markdown_setting:
|
||||
template_setting_id = markdown_setting.template_setting_id
|
||||
permission_setting_id = markdown_setting.permission_setting_id
|
||||
|
||||
markdown_setting.template_setting_id = None
|
||||
markdown_setting.permission_setting_id = None
|
||||
session.flush()
|
||||
|
||||
if template_setting_id:
|
||||
from db.models.MarkdownTemplateSetting import MarkdownTemplateSetting
|
||||
template_setting = session.query(MarkdownTemplateSetting).get(template_setting_id)
|
||||
if template_setting:
|
||||
session.delete(template_setting)
|
||||
|
||||
if permission_setting_id:
|
||||
permission_setting = session.query(MarkdownPermissionSetting).get(permission_setting_id)
|
||||
if permission_setting:
|
||||
session.delete(permission_setting)
|
||||
|
||||
session.delete(markdown_setting)
|
||||
|
||||
session.delete(markdown)
|
||||
session.commit()
|
||||
|
||||
markdown_deleted.send(None, payload=md)
|
||||
logger.info(f"Successfully deleted markdown {markdown_id} with cascade deletion")
|
||||
return jsonify(md), 200
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to delete markdown {markdown_id}: {e}")
|
||||
errno = RequestContext.get_error_id()
|
||||
session.rollback()
|
||||
return jsonify({"error": f"delete failed - {errno}"}), 500
|
||||
|
||||
|
||||
@markdown_bp.route('/move_forward/<int:markdown_id>', methods=['PATCH'])
|
||||
@require_auth(roles=['admin'])
|
||||
|
||||
Reference in New Issue
Block a user