# 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 = ("
{0} ({1})
".format(feedback.feedback, feedback.rating) + "".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 )