diff --git a/frappe/core/doctype/feedback_trigger/feedback_trigger.py b/frappe/core/doctype/feedback_trigger/feedback_trigger.py index 55ed2f801b..ba2d885c74 100644 --- a/frappe/core/doctype/feedback_trigger/feedback_trigger.py +++ b/frappe/core/doctype/feedback_trigger/feedback_trigger.py @@ -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}
{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) \ No newline at end of file diff --git a/frappe/core/doctype/feedback_trigger/test_feedback_trigger.py b/frappe/core/doctype/feedback_trigger/test_feedback_trigger.py index 2bb30aba08..4f3046d83b 100644 --- a/frappe/core/doctype/feedback_trigger/test_feedback_trigger.py +++ b/frappe/core/doctype/feedback_trigger/test_feedback_trigger.py @@ -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) + \ No newline at end of file diff --git a/frappe/model/delete_doc.py b/frappe/model/delete_doc.py index 6676dd591c..5125f9d5e0 100644 --- a/frappe/model/delete_doc.py +++ b/frappe/model/delete_doc.py @@ -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, diff --git a/frappe/public/images/star.png b/frappe/public/images/star.png deleted file mode 100644 index 3f2c6a5365..0000000000 Binary files a/frappe/public/images/star.png and /dev/null differ diff --git a/frappe/templates/emails/feedback_request_url.html b/frappe/templates/emails/feedback_request_url.html index 87988171e1..0b9bebb9c3 100644 --- a/frappe/templates/emails/feedback_request_url.html +++ b/frappe/templates/emails/feedback_request_url.html @@ -1,25 +1,12 @@ - - -
- Please take a few minute to leave a feedback - we would really appreciate it!
- Rating (select a star) -
- - - - - - - - - - - - - - - -
+
+

Please take a few minute to leave a feedback - we would really appreciate it!
+ Rating (select a star)

+ +
+ + + + +
- - \ No newline at end of file +