blob: c6d27bd7b956eec820cba1f8bf4e554118486ca5 [file] [log] [blame]
marination0dadf532021-06-29 11:22:27 +05301# -*- coding: utf-8 -*-
2# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
3# For license information, please see license.txt
4
5import frappe
6from frappe.utils import cint
7
8from erpnext.e_commerce.product_query import ProductQuery
9from erpnext.e_commerce.filters import ProductFiltersBuilder
10from erpnext.setup.doctype.item_group.item_group import get_child_groups
11
12@frappe.whitelist(allow_guest=True)
13def get_product_filter_data():
14 """Get pre-rendered filtered products and discount filters on load."""
15 if frappe.form_dict:
16 search = frappe.form_dict.search
17 field_filters = frappe.parse_json(frappe.form_dict.field_filters)
18 attribute_filters = frappe.parse_json(frappe.form_dict.attribute_filters)
19 start = cint(frappe.parse_json(frappe.form_dict.start)) if frappe.form_dict.start else 0
20 item_group = frappe.form_dict.item_group
21 else:
22 search, attribute_filters, item_group = None, None, None
23 field_filters = {}
24 start = 0
25
26 sub_categories = []
27 if item_group:
28 field_filters['item_group'] = item_group
29 sub_categories = get_child_groups(item_group)
30
31 engine = ProductQuery()
32 result = engine.query(attribute_filters, field_filters, search_term=search,
33 start=start, item_group=item_group)
34
35 # discount filter data
36 filters = {}
37 discounts = result["discounts"]
38
39 if discounts:
40 filter_engine = ProductFiltersBuilder()
41 filters["discount_filters"] = filter_engine.get_discount_filters(discounts)
42
43 return {
44 "items": result["items"] or [],
45 "filters": filters,
46 "settings": engine.settings,
47 "sub_categories": sub_categories,
48 "items_count": result["items_count"]
marination82f8f3c2021-07-08 10:57:01 +053049 }
50
51@frappe.whitelist(allow_guest=True)
52def get_guest_redirect_on_action():
53 return frappe.db.get_single_value("E Commerce Settings", "redirect_on_action")