[minor] delete feedback and open feedback request if document is deleted

This commit is contained in:
mbauskar 2017-02-22 15:36:35 +05:30
parent 82d01c1b83
commit e5f296b78d
5 changed files with 60 additions and 29 deletions

View file

@ -39,7 +39,7 @@ def send_feedback_request(reference_doctype, reference_name, trigger=None, detai
feedback_url = frappe.render_template("templates/emails/feedback_request_url.html", { "url": url })
# appending feedback url to message body
details.update({ "message": "{message}<br>{feedback_url}".format(
details.update({ "message": "{message}{feedback_url}".format(
message=details.get("message"),
feedback_url=feedback_url)
})
@ -51,10 +51,14 @@ def send_feedback_request(reference_doctype, reference_name, trigger=None, detai
def trigger_feedback_request(doc, method):
""" trigger the feedback alert"""
feedback_trigger = frappe.db.get_value("Feedback Trigger", { "enabled": 1, "document_type": doc.doctype })
if feedback_trigger:
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)
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:
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)
@frappe.whitelist()
def get_feedback_request_details(reference_doctype, reference_name, trigger=None, request=None):
@ -149,3 +153,26 @@ def get_enabled_feedback_trigger():
def get_context(doc):
return { "doc": doc }
def delete_feedback_request_and_feedback(reference_doctype, reference_name):
""" delete all the feedback request and feedback communication """
if not all([reference_doctype, reference_name]):
return
feedback_requests = frappe.get_all("Feedback Request", filters={
"is_feedback_submitted": 0,
"reference_doctype": reference_doctype,
"reference_name": reference_name
})
communications = frappe.get_all("Communication", {
"communication_type": "Feedback",
"reference_doctype": reference_doctype,
"reference_name": reference_name
})
for request in feedback_requests:
frappe.delete_doc("Feedback Request", request.get("name"), ignore_permissions=True)
for communication in communications:
frappe.delete_doc("Communication", communication.get("name"), ignore_permissions=True)

View file

@ -111,3 +111,19 @@ class TestFeedbackTrigger(unittest.TestCase):
reference_doctype="ToDo", reference_name=todo.name, feedback="Thank You !!", rating=4)
frappe.delete_doc("ToDo", todo.name)
# test if feedback requests and feedback communications are deleted?
communications = frappe.get_all("Communication", {
"reference_doctype": "ToDo",
"reference_name": todo.name,
"communication_type": "Feedback"
})
self.assertFalse(communications)
feedback_requests = frappe.get_all("Feedback Request", {
"reference_doctype": "ToDo",
"reference_name": todo.name,
"is_feedback_submitted": 0
})
self.assertFalse(feedback_requests)

View file

@ -71,6 +71,7 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa
if not ignore_on_trash:
doc.run_method("on_trash")
doc.flags.in_delete = True
doc.run_method('on_change')
frappe.enqueue('frappe.model.delete_doc.delete_dynamic_links', doctype=doc.doctype, name=doc.name,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

View file

@ -1,25 +1,12 @@
<html>
<body>
<div align="center">
Please take a few minute to leave a feedback - we would really appreciate it!<br>
Rating (select a star)
<div class="user-ratings">
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=1">
<img src="/assets/frappe/images/star.png">
</a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=2">
<img src="/assets/frappe/images/star.png">
</a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=3">
<img src="/assets/frappe/images/star.png">
</a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=4">
<img src="/assets/frappe/images/star.png">
</a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=5">
<img src="/assets/frappe/images/star.png">
</a>
</div>
<div align="center">
<p>Please take a few minute to leave a feedback - we would really appreciate it!<br>
Rating (select a star)</p>
<div class="user-ratings">
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=1"></a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=2"></a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=3"></a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=4"></a>
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=5"></a>
</div>
</body>
</html>
</div>