Browse Source

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

version-14
mbauskar 8 years ago
parent
commit
e5f296b78d
5 changed files with 60 additions and 29 deletions
  1. +32
    -5
      frappe/core/doctype/feedback_trigger/feedback_trigger.py
  2. +16
    -0
      frappe/core/doctype/feedback_trigger/test_feedback_trigger.py
  3. +1
    -0
      frappe/model/delete_doc.py
  4. BIN
      frappe/public/images/star.png
  5. +11
    -24
      frappe/templates/emails/feedback_request_url.html

+ 32
- 5
frappe/core/doctype/feedback_trigger/feedback_trigger.py 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 }) feedback_url = frappe.render_template("templates/emails/feedback_request_url.html", { "url": url })


# appending feedback url to message body # 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"), message=details.get("message"),
feedback_url=feedback_url) 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): def trigger_feedback_request(doc, method):
""" trigger the feedback alert""" """ 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() @frappe.whitelist()
def get_feedback_request_details(reference_doctype, reference_name, trigger=None, request=None): 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): def get_context(doc):
return { "doc": 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)

+ 16
- 0
frappe/core/doctype/feedback_trigger/test_feedback_trigger.py View File

@@ -111,3 +111,19 @@ class TestFeedbackTrigger(unittest.TestCase):
reference_doctype="ToDo", reference_name=todo.name, feedback="Thank You !!", rating=4) reference_doctype="ToDo", reference_name=todo.name, feedback="Thank You !!", rating=4)


frappe.delete_doc("ToDo", todo.name) 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)

+ 1
- 0
frappe/model/delete_doc.py 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: if not ignore_on_trash:
doc.run_method("on_trash") doc.run_method("on_trash")
doc.flags.in_delete = True
doc.run_method('on_change') doc.run_method('on_change')


frappe.enqueue('frappe.model.delete_doc.delete_dynamic_links', doctype=doc.doctype, name=doc.name, frappe.enqueue('frappe.model.delete_doc.delete_dynamic_links', doctype=doc.doctype, name=doc.name,


BIN
frappe/public/images/star.png View File

Before After
Width: 27  |  Height: 26  |  Size: 462 B

+ 11
- 24
frappe/templates/emails/feedback_request_url.html 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> </div>
</body>
</html>
</div>

Loading…
Cancel
Save