Skip to content

Commit

Permalink
[fix] feedback trigger on delete frappe#2988
Browse files Browse the repository at this point in the history
  • Loading branch information
rmehta committed Apr 6, 2017
1 parent e754a22 commit 5802e9d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
34 changes: 22 additions & 12 deletions frappe/core/doctype/feedback_trigger/feedback_trigger.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,14 @@

class FeedbackTrigger(Document):
def validate(self):
frappe.cache().delete_value('feedback_triggers')
validate_template(self.subject)
validate_template(self.message)
self.validate_condition()

def on_trash(self):
frappe.cache().delete_value('feedback_triggers')

def validate_condition(self):
temp_doc = frappe.new_doc(self.document_type)
if self.condition:
Expand All @@ -25,16 +29,24 @@ def validate_condition(self):
frappe.throw(_("The condition '{0}' is invalid").format(self.condition))

def trigger_feedback_request(doc, method):
""" trigger the feedback alert"""
"""Trigger the feedback alert, or delete feedback requests on delete"""

if doc.flags.in_delete:
frappe.enqueue('frappe.core.doctype.feedback_trigger.feedback_trigger.delete_feedback_request_and_feedback',
reference_doctype=doc.doctype, reference_name=doc.name, now=frappe.flags.in_test)
else:
feedback_trigger = frappe.db.get_value("Feedback Trigger", { "enabled": 1, "document_type": doc.doctype })
if feedback_trigger:
def _get():
triggers = {}
for d in frappe.get_all('Feedback Trigger', dict(enabled=1), ['name', 'document_type']):
triggers[d.document_type] = d.name

return triggers

feedback_triggers = frappe.cache().get_value('feedback_triggers', _get)
if doc.doctype in feedback_triggers:
if doc.flags.in_delete:
frappe.enqueue('frappe.core.doctype.feedback_trigger.feedback_trigger.delete_feedback_request_and_feedback',
reference_doctype=doc.doctype, reference_name=doc.name, now=frappe.flags.in_test)
else:
frappe.enqueue('frappe.core.doctype.feedback_trigger.feedback_trigger.send_feedback_request',
trigger=feedback_trigger, reference_doctype=doc.doctype, reference_name=doc.name, now=frappe.flags.in_test)
trigger=feedback_triggers[doc.doctype], reference_doctype=doc.doctype,
reference_name=doc.name, now=frappe.flags.in_test)

@frappe.whitelist()
def send_feedback_request(reference_doctype, reference_name, trigger="Manual", details=None, is_manual=False):
Expand Down Expand Up @@ -68,8 +80,6 @@ def send_feedback_request(reference_doctype, reference_name, trigger="Manual", d

@frappe.whitelist()
def get_feedback_request_details(reference_doctype, reference_name, trigger="Manual", request=None):
feedback_url = ""

if not frappe.db.get_value(reference_doctype, reference_name):
# reference document is either deleted or renamed
return
Expand Down Expand Up @@ -132,7 +142,7 @@ def get_feedback_request_url(reference_doctype, reference_name, recipients, trig
"reference_doctype": reference_doctype,
}).insert(ignore_permissions=True)

feedback_url = "{base_url}/feedback?reference_doctype={doctype}&reference_name={docname}&email={email_id}&key={nonce}".format(
feedback_url = "{base_url}/feedback?reference_doctype={doctype}&reference_name={docname}&email={email_id}&key={nonce}".format(
base_url=get_url(),
doctype=reference_doctype,
docname=reference_name,
Expand All @@ -143,7 +153,7 @@ def get_feedback_request_url(reference_doctype, reference_name, recipients, trig
return [ feedback_request.name, feedback_url ]

def is_feedback_request_already_sent(reference_doctype, reference_name, is_manual=False):
"""
"""
check if feedback request mail is already sent but feedback is not submitted
to avoid sending multiple feedback request mail
"""
Expand Down
2 changes: 1 addition & 1 deletion frappe/utils/background_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def enqueue(method, queue='default', timeout=300, event=None,
:param now: if now=True, the method is executed via frappe.call
:param kwargs: keyword arguments to be passed to the method
'''
if now:
if now or frappe.flags.in_migrate:
return frappe.call(method, **kwargs)

q = get_queue(queue, async=async)
Expand Down

0 comments on commit 5802e9d

Please sign in to comment.