seitime-frappe/frappe/www/feedback.py
Aditya Hase 837bfc0995 fix(unicode): Import unicode_literals in every file (#6805)
* fix(unicode): Import unicode_literals in every file

* fix(unicode): Test if safe_json_loads return unicode instead of bytes
2019-01-25 11:56:27 +05:30

74 lines
2.3 KiB
Python

from __future__ import unicode_literals
import frappe
from frappe import _
from frappe.core.doctype.feedback_request.feedback_request import is_valid_feedback_request
no_cache = True
def get_context(context):
reference_doctype = frappe.form_dict.get("reference_doctype")
reference_name = frappe.form_dict.get("reference_name")
if not all([reference_name, reference_doctype]) or \
not frappe.db.get_value(reference_doctype, reference_name):
return {
"is_valid_request": False,
"error_message": "Invalid reference doctype and reference name"
}
communications = frappe.get_all("Communication", filters={
"reference_doctype": reference_doctype,
"reference_name": reference_name,
"communication_type": "Communication"
}, fields=["*"], limit_page_length=10, order_by="creation desc")
return {
"reference_doctype": reference_doctype,
"reference_name": reference_name,
"comment_list": communications,
"is_communication": True,
"is_valid_request": True
}
@frappe.whitelist(allow_guest=True)
def accept(key, sender, reference_doctype, reference_name, feedback, rating, fullname):
""" save the feedback in communication """
if not reference_doctype and not reference_name or \
not frappe.db.get_value(reference_doctype, reference_name):
frappe.throw(_("Invalid Reference"))
if not rating:
frappe.throw(_("Please add a rating"))
if not is_valid_feedback_request(key):
frappe.throw(_("Expired link"))
try:
feedback_request = frappe.db.get_value("Feedback Request", {"key": key})
communication = frappe.get_doc({
"rating": rating,
"status": "Closed",
"content": feedback or "",
"doctype": "Communication",
"sender": sender or "Guest",
"sent_or_received": "Received",
"communication_type": "Feedback",
"reference_name": reference_name,
"sender_full_name": fullname or "",
"feedback_request": feedback_request,
"reference_doctype": reference_doctype,
"subject": "Feedback for {0} {1}".format(reference_doctype, reference_name),
}).insert(ignore_permissions=True)
doc = frappe.get_doc("Feedback Request", feedback_request)
doc.is_feedback_submitted = 1
doc.rating = rating
doc.reference_communication = communication.name
doc.save(ignore_permissions=True)
return True
except Exception:
frappe.log_error()
frappe.throw(_("Cannot submit feedback, please try again later"))