seitime-frappe/frappe/templates/includes/feedback/feedback.py
Gavin D'souza 3446026555 chore: Update header: license.txt => LICENSE
The license.txt file has been replaced with LICENSE for quite a while
now. INAL but it didn't seem accurate to say "hey, checkout license.txt
although there's no such file". Apart from this, there were
inconsistencies in the headers altogether...this change brings
consistency.
2021-09-03 12:02:59 +05:30

75 lines
2.2 KiB
Python

# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: MIT. See LICENSE
from __future__ import unicode_literals
import frappe
from frappe.utils import add_to_date, now
from frappe import _
@frappe.whitelist(allow_guest=True)
def add_feedback(reference_doctype, reference_name, rating, feedback):
doc = frappe.get_doc(reference_doctype, reference_name)
if doc.disable_feedback == 1:
return
feedback_count = frappe.db.count("Feedback", {
"reference_doctype": reference_doctype,
"reference_name": reference_name,
"ip_address": frappe.local.request_ip,
"creation": (">", add_to_date(now(), hours=-1))
})
if feedback_count > 20:
frappe.msgprint(_('Hourly feedback limit reached'))
return
doc = frappe.new_doc('Feedback')
doc.reference_doctype = reference_doctype
doc.reference_name = reference_name
doc.rating = rating
doc.feedback = feedback
doc.ip_address = frappe.local.request_ip
doc.save(ignore_permissions=True)
subject = _('New Feedback on {0}: {1}').format(reference_doctype, reference_name)
send_mail(doc, subject)
return doc
@frappe.whitelist()
def update_feedback(reference_doctype, reference_name, rating, feedback):
doc = frappe.get_doc(reference_doctype, reference_name)
if doc.disable_feedback == 1:
return
filters = {
"owner": frappe.session.user,
"reference_doctype": reference_doctype,
"reference_name": reference_name
}
d = frappe.get_all('Feedback', filters=filters, limit=1)
doc = frappe.get_doc('Feedback', d[0].name)
doc.rating = rating
doc.feedback = feedback
doc.save(ignore_permissions=True)
subject = _('Feedback updated on {0}: {1}').format(reference_doctype, reference_name)
send_mail(doc, subject)
return doc
def send_mail(feedback, subject):
doc = frappe.get_doc(feedback.reference_doctype, feedback.reference_name)
message = ("<p>{0} ({1})</p>".format(feedback.feedback, feedback.rating)
+ "<p><a href='{0}/app/feedback/{1}' style='font-size: 80%'>{2}</a></p>".format(frappe.utils.get_request_site_address(),
feedback.name,
_("View Feedback")))
# notify creator
frappe.sendmail(
recipients=frappe.db.get_value('User', doc.owner, 'email') or doc.owner,
subject=subject,
message=message,
reference_doctype=doc.doctype,
reference_name=doc.name
)