refactor: Cache Item Reviews and other review feedback
- `get_doc` -> `get_values` and `db.sql` -> `db.delete` in Wishlist Item deletion
- cache first page of Item Reviews and burst cache on addition and deletion of reviews
- Update redisearch docs link in E Commerce Settings
- Removed unused cint import
- Broke setting attribute context into smaller functions and code cleanup
- Minor recommended items padding tweak
- Item reviews form dict now uses website item as key
- Customer reviews rendered from UI style consistency
- Stock status consistency in listing and full page
- Handle no price in variant dialog for matched item
diff --git a/erpnext/templates/pages/customer_reviews.js b/erpnext/templates/pages/customer_reviews.js
index 9be12c7..e13ded6 100644
--- a/erpnext/templates/pages/customer_reviews.js
+++ b/erpnext/templates/pages/customer_reviews.js
@@ -96,23 +96,25 @@
reviews.forEach((review) => {
$content.append(`
<div class="mb-3 review">
- <div style="display: flex;">
+ <div class="d-flex">
+ <p class="mr-4 user-review-title">
+ <span>${__(review.review_title)}</span>
+ </p>
<div class="rating">
${me.get_review_stars(review.rating)}
</div>
- <p class="ml-4 user-review-title">
- <span>${__(review.review_title)}</span>
- </p>
</div>
- <div class="review-signature">
- <span class="reviewer">${__(review.customer)}</span>
- <span>${__(review.published_on)}</span>
- </div>
- <div class="product-description mb-4 mt-4">
+
+ <div class="product-description mb-4">
<p>
${__(review.comment)}
</p>
</div>
+ <div class="review-signature mb-2">
+ <span class="reviewer">${__(review.customer)}</span>
+ <span class="indicator grey" style="--text-on-gray: var(--gray-300);"></span>
+ <span class="reviewer">${__(review.published_on)}</span>
+ </div>
</div>
`);
});
@@ -122,9 +124,11 @@
let stars = ``;
for (let i = 1; i < 6; i++) {
let fill_class = i <= rating ? 'star-click' : '';
- stars += `<svg class="icon icon-md ${fill_class}">
+ stars += `
+ <svg class="icon icon-sm ${fill_class}">
<use href="#icon-star"></use>
- </svg>`;
+ </svg>
+ `;
}
return stars;
}
diff --git a/erpnext/templates/pages/customer_reviews.py b/erpnext/templates/pages/customer_reviews.py
index 696ecea..02c03d3 100644
--- a/erpnext/templates/pages/customer_reviews.py
+++ b/erpnext/templates/pages/customer_reviews.py
@@ -10,10 +10,10 @@
context.full_page = True
context.reviews = None
- if frappe.form_dict and frappe.form_dict.get("item_code"):
- context.item_code = frappe.form_dict.get("item_code")
- context.web_item = frappe.db.get_value("Website Item", {"item_code": context.item_code}, "name")
+ if frappe.form_dict and frappe.form_dict.get("web_item"):
+ context.web_item = frappe.form_dict.get("web_item")
context.user_is_customer = check_if_user_is_customer()
context.enable_reviews = get_shopping_cart_settings().enable_reviews
if context.enable_reviews:
- get_item_reviews(context.web_item, 0, 10, context)
+ reviews_data = get_item_reviews(context.web_item)
+ context.update(reviews_data)