fix: Use IP Address instead of Email field (#13553)

This commit is contained in:
Shariq Ansari 2021-08-18 13:21:10 +05:30 committed by GitHub
parent cf67f9d283
commit 3baa33d5da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 38 additions and 28 deletions

View file

@ -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",

View file

@ -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)

View file

@ -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('');

View file

@ -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")))

View file

@ -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 ''