55from __future__ import unicode_literals
66import frappe
77
8+
89def run_webhooks (doc , method ):
910 '''Run webhooks for this method'''
1011 if frappe .flags .in_import or frappe .flags .in_patch or frappe .flags .in_install :
@@ -13,13 +14,13 @@ def run_webhooks(doc, method):
1314 if frappe .flags .webhooks_executed is None :
1415 frappe .flags .webhooks_executed = {}
1516
16- if frappe .flags .webhooks == None :
17+ if frappe .flags .webhooks is None :
1718 # load webhooks from cache
1819 webhooks = frappe .cache ().get_value ('webhooks' )
19- if webhooks == None :
20+ if webhooks is None :
2021 # query webhooks
2122 webhooks_list = frappe .get_all ('Webhook' ,
22- fields = ["name" , "webhook_docevent" , "webhook_doctype" ])
23+ fields = ["name" , "`condition`" , " webhook_docevent" , "webhook_doctype" ])
2324
2425 # make webhooks map for cache
2526 webhooks = {}
@@ -37,7 +38,7 @@ def run_webhooks(doc, method):
3738 return
3839
3940 def _webhook_request (webhook ):
40- if not webhook .name in frappe .flags .webhooks_executed .get (doc .name , []):
41+ if webhook .name not in frappe .flags .webhooks_executed .get (doc .name , []):
4142 frappe .enqueue ("frappe.integrations.doctype.webhook.webhook.enqueue_webhook" ,
4243 enqueue_after_commit = True , doc = doc , webhook = webhook )
4344
@@ -55,5 +56,7 @@ def _webhook_request(webhook):
5556
5657 for webhook in webhooks_for_doc :
5758 event = method if method in event_list else None
58- if event and webhook .webhook_docevent == event :
59- _webhook_request (webhook )
59+
60+ if webhook .condition and frappe .safe_eval (webhook .condition , None , {"doc" : doc }):
61+ if event and webhook .webhook_docevent == event :
62+ _webhook_request (webhook )
0 commit comments