From 1f4ca52a1052610f4ae7c76f072dc1a84ca6a7cc Mon Sep 17 00:00:00 2001 From: hzhang Date: Fri, 27 Jun 2025 12:06:28 +0100 Subject: [PATCH] add: markdown deletion --- api/markdown.py | 8 +++++++- events/WebhookEventHandlers/__init__.py | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/api/markdown.py b/api/markdown.py index cc2166b..9c09184 100644 --- a/api/markdown.py +++ b/api/markdown.py @@ -317,15 +317,21 @@ def delete_markdown(markdown_id): 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 diff --git a/events/WebhookEventHandlers/__init__.py b/events/WebhookEventHandlers/__init__.py index 6cf704d..feac0be 100644 --- a/events/WebhookEventHandlers/__init__.py +++ b/events/WebhookEventHandlers/__init__.py @@ -59,6 +59,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: