From e5f296b78d503f0cd702a3646a419ff08f9b13f5 Mon Sep 17 00:00:00 2001 From: mbauskar Date: Wed, 22 Feb 2017 15:36:35 +0530 Subject: [PATCH] [minor] delete feedback and open feedback request if document is deleted --- .../feedback_trigger/feedback_trigger.py | 37 +++++++++++++++--- .../feedback_trigger/test_feedback_trigger.py | 16 ++++++++ frappe/model/delete_doc.py | 1 + frappe/public/images/star.png | Bin 462 -> 0 bytes .../emails/feedback_request_url.html | 35 ++++++----------- 5 files changed, 60 insertions(+), 29 deletions(-) delete mode 100644 frappe/public/images/star.png 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 3f2c6a53659fd052dd9b8153195f4207bf266942..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)u;U6bA4x1CF`YWe$nlpU}C^MKXs(f}EqS5=mWU=Q>9nGLpHrYPi%TQ*WZTLCZ^d zQ;W>K`yJ%_E^z>W5tca_@7|+K-cg1aJMFS;XK1rPS!y%$eNk!3EJ;+`xyu-lq=;vb zN)p5$kTE|ZkmF(p(#TO!ZH3?ENFc{VRrNu}CQ&^?Ism}T;VpZ4eQ$?_Gv;tSeqC(& zJeVR?_a2@XtHsl_>!Ygj*@RZ%;hM~swZi^d)yw&xRW1stddT1$l`I6OYJn)_^|7MK zXjzJ2REyRP7Lqkq=k5*Y#h;Z|MVSOq$Ml=l}o!07*qoM6N<$ Ef)xbLDF6Tf 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 +