Compare commits
2 Commits
692c0794c5
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f4ca52a10 | |||
| 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,61 @@ 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)
|
||||
|
||||
# Send webhook event before committing the transaction
|
||||
# This ensures webhook handlers can still access related data
|
||||
markdown_deleted.send(None, payload=md)
|
||||
|
||||
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:
|
||||
import traceback
|
||||
logger.error(f"Failed to delete markdown {markdown_id}: {e}")
|
||||
logger.error(f"Exception type: {type(e).__name__}")
|
||||
logger.error(f"Full traceback:\n{traceback.format_exc()}")
|
||||
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'])
|
||||
|
||||
@@ -60,6 +60,10 @@ class WebhookEventHandler(abc.ABC):
|
||||
if webhook_setting is None and p["parent_id"] != 1:
|
||||
return self.get_setting(session, p["parent_id"])
|
||||
|
||||
# Check if webhook_setting is still None (e.g., when parent_id == 1 or no parent found)
|
||||
if webhook_setting is None:
|
||||
return None
|
||||
|
||||
setting = webhook_setting.to_dict()
|
||||
if not setting["enabled"] or setting["on_events"] & self.event_type == 0:
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user