From fadb45e369dcdb9697fb63fdd8a6c7d77a8272bc Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Mon, 18 Sep 2017 17:10:53 +0530 Subject: [PATCH] enqueue webhook request --- .../integrations/doctype/webhook/webhook.py | 8 +++-- frappe/integrations/webhooks.py | 33 ------------------- 2 files changed, 5 insertions(+), 36 deletions(-) delete mode 100644 frappe/integrations/webhooks.py diff --git a/frappe/integrations/doctype/webhook/webhook.py b/frappe/integrations/doctype/webhook/webhook.py index 10b07adcba..1fe9161f51 100644 --- a/frappe/integrations/doctype/webhook/webhook.py +++ b/frappe/integrations/doctype/webhook/webhook.py @@ -51,10 +51,12 @@ class Webhook(Document): r = requests.post(self.request_url, data=json.dumps(data), headers=headers, timeout=5) frappe.logger().debug({"webhook_success":r.text}) -def evaluate_webhook(doc, webhook): +def enqueue_webhook(doc, webhook): webhook = frappe.get_doc("Webhook", webhook.get("name")) try: webhook.request(doc) except Exception as e: - frappe.log_error(message=frappe.get_traceback(), title=e) - frappe.throw(_("Error in Webhook")) + frappe.throw(_("Error in Webhook"), exc=e) + +def evaluate_webhook(doc, webhook): + frappe.enqueue('frappe.integrations.doctype.webhook.webhook.enqueue_webhook', doc=doc, webhook=webhook) diff --git a/frappe/integrations/webhooks.py b/frappe/integrations/webhooks.py deleted file mode 100644 index 466a0f0470..0000000000 --- a/frappe/integrations/webhooks.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe, requests, json -from frappe import _ - -# Doc Events Webhook -def doc_event_webhook(doc, method=None, *args, **kwargs): - headers = {} - data = {} - filters = { - "webhook_doctype": doc.get("doctype"), - "webhook_docevent": method - } - webhooks = frappe.get_all("Webhook", filters=filters) - webhook = frappe.get_doc("Webhook", webhooks[0].get("name")) if webhooks and len(webhooks) > 0 else None - if webhook: - if webhook.webhook_headers: - for h in webhook.webhook_headers: - if h.get("key") and h.get("value"): - headers[h.get("key")] = h.get("value") - if webhook.webhook_data: - for k, v in doc.as_dict().items(): - for w in webhook.webhook_data: - if k == w.fieldname: - data[w.key] = v - try: - r = requests.post(webhook.request_url, data=json.dumps(data), headers=headers, timeout=5) - frappe.logger().debug({"webhook_success":r.text, "webhook": webhook.as_json()}) - except Exception as e: - frappe.logger().debug({"webhook_error":r.text, "webhook": webhook.as_json()}) - frappe.throw(_("Unable to make request"), exc=e)