* perf: Optimize get_attribute_filters * fix: handle when filter attributes are undefined * chore: unused imports Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import frappe
 | |
| 
 | |
| from erpnext.portal.product_configurator.utils import get_product_settings
 | |
| from erpnext.shopping_cart.filters import ProductFiltersBuilder
 | |
| from erpnext.shopping_cart.product_query import ProductQuery
 | |
| 
 | |
| sitemap = 1
 | |
| 
 | |
| def get_context(context):
 | |
| 
 | |
| 	if frappe.form_dict:
 | |
| 		search = frappe.form_dict.search
 | |
| 		field_filters = frappe.parse_json(frappe.form_dict.field_filters)
 | |
| 		attribute_filters = frappe.parse_json(frappe.form_dict.attribute_filters)
 | |
| 		start = frappe.parse_json(frappe.form_dict.start)
 | |
| 	else:
 | |
| 		search = field_filters = attribute_filters = None
 | |
| 		start = 0
 | |
| 
 | |
| 	engine = ProductQuery()
 | |
| 	context.items = engine.query(attribute_filters, field_filters, search, start)
 | |
| 
 | |
| 	# Add homepage as parent
 | |
| 	context.parents = [{"name": frappe._("Home"), "route":"/"}]
 | |
| 
 | |
| 	product_settings = get_product_settings()
 | |
| 	filter_engine = ProductFiltersBuilder()
 | |
| 
 | |
| 	context.field_filters = filter_engine.get_field_filters()
 | |
| 	context.attribute_filters = filter_engine.get_attribute_filters()
 | |
| 
 | |
| 	context.product_settings = product_settings
 | |
| 	context.body_class = "product-page"
 | |
| 	context.page_length = product_settings.products_per_page or 20
 | |
| 
 | |
| 	context.no_cache = 1
 |