feat: add docstrings

This commit is contained in:
Shivam Mishra 2020-12-24 17:58:18 +05:30
parent 293f483cb4
commit 419c889a9a

View File

@ -1,4 +1,4 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
@ -10,13 +10,17 @@ class ProductQuery:
Attributes:
cart_settings (Document): Settings for Cart
fields (list): Fields to fetch in query
filters (list)
or_filters (list)
filters (TYPE): Description
or_filters (list): Description
page_length (Int): Length of page for the query
settings (Document): Products Settings DocType
filters (list)
or_filters (list)
"""
def __init__(self):
"""Summary
"""
self.settings = frappe.get_doc("Products Settings")
self.cart_settings = frappe.get_doc("Shopping Cart Settings")
self.page_length = self.settings.products_per_page or 20
@ -25,6 +29,17 @@ class ProductQuery:
self.or_filters = []
def query(self, attributes=None, fields=None, search_term=None, start=0):
"""Summary
Args:
attributes (dict, optional): Item Attribute filters
fields (dict, optional): Field level filters
search_term (str, optional): Search term to lookup
start (int, optional): Page start
Returns:
list: List of results with set fields
"""
if fields: self.build_fields_filters(fields)
if search_term: self.build_search_filters(search_term)
@ -49,6 +64,7 @@ class ProductQuery:
)
items_dict = {item.name: item for item in items}
# TODO: Replace Variants by their parent templates
all_items.append(set(items.keys()))
@ -59,16 +75,28 @@ class ProductQuery:
return result
def build_fields_filters(self, filters):
"""Build filters for field values
Args:
filters (dict): Filters
"""
for field, values in filters.items():
if not values:
continue
if isinstance(values, list):
# If value is a list use `IN` query
self.filters.append([field, 'IN', values])
else:
# `=` will be faster than `IN` for most cases
self.filters.append([field, '=', values])
def build_search_filters(self, search_term):
"""Query search term in specified fields
Args:
search_term (str): Search candidate
"""
# Default fields to search from
default_fields = {'name', 'item_name', 'description', 'item_group'}