fix: Use IP Address instead of Email field (#13553)
This commit is contained in:
parent
cf67f9d283
commit
3baa33d5da
5 changed files with 38 additions and 28 deletions
|
|
@ -8,8 +8,8 @@
|
|||
"reference_doctype",
|
||||
"reference_name",
|
||||
"column_break_3",
|
||||
"email",
|
||||
"rating",
|
||||
"ip_address",
|
||||
"section_break_6",
|
||||
"feedback"
|
||||
],
|
||||
|
|
@ -18,12 +18,6 @@
|
|||
"fieldname": "column_break_3",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "email",
|
||||
"fieldtype": "Data",
|
||||
"label": "Email",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "rating",
|
||||
"fieldtype": "Float",
|
||||
|
|
@ -56,11 +50,18 @@
|
|||
"label": "Reference Name",
|
||||
"options": "reference_doctype",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "ip_address",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "IP Address",
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2021-06-14 15:11:26.005805",
|
||||
"modified": "2021-06-23 12:45:42.045696",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Feedback",
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ class TestFeedback(unittest.TestCase):
|
|||
frappe.db.sql("delete from `tabFeedback` where reference_doctype = 'Blog Post'")
|
||||
|
||||
from frappe.templates.includes.feedback.feedback import add_feedback, update_feedback
|
||||
feedback = add_feedback('Blog Post', test_blog.name, 5, 'New feedback','test@test.com')
|
||||
feedback = add_feedback('Blog Post', test_blog.name, 5, 'New feedback')
|
||||
|
||||
self.assertEqual(feedback.feedback, 'New feedback')
|
||||
self.assertEqual(feedback.rating, 5)
|
||||
|
||||
updated_feedback = update_feedback('Blog Post', test_blog.name, 6, 'Updated feedback', 'test@test.com')
|
||||
updated_feedback = update_feedback('Blog Post', test_blog.name, 6, 'Updated feedback')
|
||||
|
||||
self.assertEqual(updated_feedback.feedback, 'Updated feedback')
|
||||
self.assertEqual(updated_feedback.rating, 6)
|
||||
|
|
|
|||
|
|
@ -7,9 +7,6 @@
|
|||
<form>
|
||||
<fieldset>
|
||||
<div class="row" style="margin-bottom: 15px;">
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control feedback_email" name="feedback_email" placeholder="{{ _("Your Email Address") }}" type="email">
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="rating">
|
||||
{% for rating in [1, 2, 3, 4, 5 ,6, 7, 8, 9, 10] %}
|
||||
|
|
@ -41,7 +38,6 @@
|
|||
feedback && $("#submit-feedback").html(__("Update"));
|
||||
|
||||
if (frappe.is_user_logged_in()) {
|
||||
$(".feedback_email").parent().toggleClass("hidden");
|
||||
if (feedback) {
|
||||
$("[name='feedback']").val(feedback);
|
||||
toggle_feedback();
|
||||
|
|
@ -83,12 +79,12 @@
|
|||
|
||||
$('#submit-feedback').click((ev) => {
|
||||
let update = ev.target.innerText !== __("Submit");
|
||||
let rating = $('.rating').find('.rating-click').length;
|
||||
let args = {
|
||||
reference_doctype: "{{ reference_doctype or doctype }}",
|
||||
reference_name: "{{ reference_name or name }}",
|
||||
rating: rating,
|
||||
feedback: $("[name='feedback']").val(),
|
||||
feedback_email: $("[name='feedback_email']").val() || frappe.user_id
|
||||
feedback: $("[name='feedback']").val()
|
||||
}
|
||||
|
||||
if (args.rating == 0) {
|
||||
|
|
@ -101,16 +97,14 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
if (args.feedback_email!=='Administrator' && !validate_email(args.feedback_email)) {
|
||||
frappe.msgprint("{{ _("Please enter a valid email address.") }}");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!update) {
|
||||
frappe.call({
|
||||
method: "frappe.templates.includes.feedback.feedback.add_feedback",
|
||||
args: args,
|
||||
callback: function(r) {
|
||||
if (!r.message) {
|
||||
return
|
||||
}
|
||||
toggle_feedback();
|
||||
if (!frappe.is_user_logged_in()) {
|
||||
$("[name='feedback']").val('');
|
||||
|
|
|
|||
|
|
@ -3,21 +3,33 @@
|
|||
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, feedback_email):
|
||||
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.email = feedback_email
|
||||
doc.ip_address = frappe.local.request_ip
|
||||
doc.save(ignore_permissions=True)
|
||||
|
||||
subject = _('New Feedback on {0}: {1}').format(reference_doctype, reference_name)
|
||||
|
|
@ -25,13 +37,13 @@ def add_feedback(reference_doctype, reference_name, rating, feedback, feedback_e
|
|||
return doc
|
||||
|
||||
@frappe.whitelist()
|
||||
def update_feedback(reference_doctype, reference_name, rating, feedback, feedback_email):
|
||||
def update_feedback(reference_doctype, reference_name, rating, feedback):
|
||||
doc = frappe.get_doc(reference_doctype, reference_name)
|
||||
if doc.disable_feedback == 1:
|
||||
return
|
||||
|
||||
filters = {
|
||||
"email": feedback_email,
|
||||
"owner": frappe.session.user,
|
||||
"reference_doctype": reference_doctype,
|
||||
"reference_name": reference_name
|
||||
}
|
||||
|
|
@ -49,7 +61,7 @@ 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/marketing-asset-feedback/{1}' style='font-size: 80%'>{2}</a></p>".format(frappe.utils.get_request_site_address(),
|
||||
+ "<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")))
|
||||
|
||||
|
|
|
|||
|
|
@ -147,12 +147,15 @@ class BlogPost(WebsiteGenerator):
|
|||
context.comment_text = _('{0} comments').format(len(context.comment_list))
|
||||
|
||||
def load_feedback(self, context):
|
||||
user = frappe.session.user
|
||||
if user == 'Guest':
|
||||
user = ''
|
||||
feedback = frappe.get_all('Feedback',
|
||||
fields=['email', 'feedback', 'rating'],
|
||||
fields=['feedback', 'rating'],
|
||||
filters=dict(
|
||||
reference_doctype=self.doctype,
|
||||
reference_name=self.name,
|
||||
email=frappe.session.user
|
||||
owner=user
|
||||
)
|
||||
)
|
||||
context.user_feedback = feedback[0] if feedback else ''
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue