fix: whitelist all query functions for search widget

Signed-off-by: Chinmay D. Pai <chinmaydpai@gmail.com>
This commit is contained in:
Chinmay D. Pai
2020-07-07 16:46:04 +05:30
parent b9e4df557b
commit 75c2e28788
20 changed files with 47 additions and 11 deletions

View File

@@ -836,6 +836,7 @@ def get_opening_accounts(company):
return [{"account": a, "balance": get_balance_on(a)} for a in accounts] return [{"account": a, "balance": get_balance_on(a)} for a in accounts]
@frappe.whitelist()
def get_against_jv(doctype, txt, searchfield, start, page_len, filters): def get_against_jv(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql("""select jv.name, jv.posting_date, jv.user_remark return frappe.db.sql("""select jv.name, jv.posting_date, jv.user_remark
from `tabJournal Entry` jv, `tabJournal Entry Account` jv_detail from `tabJournal Entry` jv, `tabJournal Entry Account` jv_detail

View File

@@ -26,6 +26,7 @@ class PaymentOrder(Document):
for d in self.references: for d in self.references:
frappe.db.set_value(self.payment_order_type, d.get(frappe.scrub(self.payment_order_type)), ref_field, status) frappe.db.set_value(self.payment_order_type, d.get(frappe.scrub(self.payment_order_type)), ref_field, status)
@frappe.whitelist()
def get_mop_query(doctype, txt, searchfield, start, page_len, filters): def get_mop_query(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql(""" select mode_of_payment from `tabPayment Order Reference` return frappe.db.sql(""" select mode_of_payment from `tabPayment Order Reference`
where parent = %(parent)s and mode_of_payment like %(txt)s where parent = %(parent)s and mode_of_payment like %(txt)s
@@ -36,6 +37,7 @@ def get_mop_query(doctype, txt, searchfield, start, page_len, filters):
'txt': "%%%s%%" % txt 'txt': "%%%s%%" % txt
}) })
@frappe.whitelist()
def get_supplier_query(doctype, txt, searchfield, start, page_len, filters): def get_supplier_query(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql(""" select supplier from `tabPayment Order Reference` return frappe.db.sql(""" select supplier from `tabPayment Order Reference`
where parent = %(parent)s and supplier like %(txt)s and where parent = %(parent)s and supplier like %(txt)s and

View File

@@ -115,6 +115,7 @@ def get_item_groups(pos_profile):
def get_series(): def get_series():
return frappe.get_meta("Sales Invoice").get_field("naming_series").options or "" return frappe.get_meta("Sales Invoice").get_field("naming_series").options or ""
@frappe.whitelist()
def pos_profile_query(doctype, txt, searchfield, start, page_len, filters): def pos_profile_query(doctype, txt, searchfield, start, page_len, filters):
user = frappe.session['user'] user = frappe.session['user']
company = filters.get('company') or frappe.defaults.get_user_default('company') company = filters.get('company') or frappe.defaults.get_user_default('company')

View File

@@ -436,6 +436,7 @@ def make_pricing_rule(doctype, docname):
return doc return doc
@frappe.whitelist()
def get_item_uoms(doctype, txt, searchfield, start, page_len, filters): def get_item_uoms(doctype, txt, searchfield, start, page_len, filters):
items = [filters.get('value')] items = [filters.get('value')]
if filters.get('apply_on') != 'Item Code': if filters.get('apply_on') != 'Item Code':

View File

@@ -285,6 +285,7 @@ def get_matching_transactions_payments(description_matching):
else: else:
return [] return []
@frappe.whitelist()
def payment_entry_query(doctype, txt, searchfield, start, page_len, filters): def payment_entry_query(doctype, txt, searchfield, start, page_len, filters):
account = frappe.db.get_value("Bank Account", filters.get("bank_account"), "account") account = frappe.db.get_value("Bank Account", filters.get("bank_account"), "account")
if not account: if not account:
@@ -313,6 +314,7 @@ def payment_entry_query(doctype, txt, searchfield, start, page_len, filters):
} }
) )
@frappe.whitelist()
def journal_entry_query(doctype, txt, searchfield, start, page_len, filters): def journal_entry_query(doctype, txt, searchfield, start, page_len, filters):
account = frappe.db.get_value("Bank Account", filters.get("bank_account"), "account") account = frappe.db.get_value("Bank Account", filters.get("bank_account"), "account")
@@ -348,6 +350,7 @@ def journal_entry_query(doctype, txt, searchfield, start, page_len, filters):
} }
) )
@frappe.whitelist()
def sales_invoices_query(doctype, txt, searchfield, start, page_len, filters): def sales_invoices_query(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql(""" return frappe.db.sql("""
SELECT SELECT

View File

@@ -206,6 +206,7 @@ def get_list_context(context=None):
}) })
return list_context return list_context
@frappe.whitelist()
def get_supplier_contacts(doctype, txt, searchfield, start, page_len, filters): def get_supplier_contacts(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql("""select `tabContact`.name from `tabContact`, `tabDynamic Link` return frappe.db.sql("""select `tabContact`.name from `tabContact`, `tabDynamic Link`
where `tabDynamic Link`.link_doctype = 'Supplier' and (`tabDynamic Link`.link_name=%(name)s where `tabDynamic Link`.link_doctype = 'Supplier' and (`tabDynamic Link`.link_name=%(name)s

View File

@@ -10,7 +10,8 @@ from collections import defaultdict
from erpnext.stock.get_item_details import _get_item_tax_template from erpnext.stock.get_item_details import _get_item_tax_template
from frappe.utils import unique from frappe.utils import unique
# searches for active employees # searches for active employees
@frappe.whitelist()
def employee_query(doctype, txt, searchfield, start, page_len, filters): def employee_query(doctype, txt, searchfield, start, page_len, filters):
conditions = [] conditions = []
fields = get_fields("Employee", ["name", "employee_name"]) fields = get_fields("Employee", ["name", "employee_name"])
@@ -40,6 +41,7 @@ def employee_query(doctype, txt, searchfield, start, page_len, filters):
# searches for leads which are not converted # searches for leads which are not converted
@frappe.whitelist()
def lead_query(doctype, txt, searchfield, start, page_len, filters): def lead_query(doctype, txt, searchfield, start, page_len, filters):
fields = get_fields("Lead", ["name", "lead_name", "company_name"]) fields = get_fields("Lead", ["name", "lead_name", "company_name"])
@@ -68,7 +70,8 @@ def lead_query(doctype, txt, searchfield, start, page_len, filters):
}) })
# searches for customer # searches for customer
@frappe.whitelist()
def customer_query(doctype, txt, searchfield, start, page_len, filters): def customer_query(doctype, txt, searchfield, start, page_len, filters):
conditions = [] conditions = []
cust_master_name = frappe.defaults.get_user_default("cust_master_name") cust_master_name = frappe.defaults.get_user_default("cust_master_name")
@@ -106,6 +109,7 @@ def customer_query(doctype, txt, searchfield, start, page_len, filters):
# searches for supplier # searches for supplier
@frappe.whitelist()
def supplier_query(doctype, txt, searchfield, start, page_len, filters): def supplier_query(doctype, txt, searchfield, start, page_len, filters):
supp_master_name = frappe.defaults.get_user_default("supp_master_name") supp_master_name = frappe.defaults.get_user_default("supp_master_name")
if supp_master_name == "Supplier Name": if supp_master_name == "Supplier Name":
@@ -137,6 +141,7 @@ def supplier_query(doctype, txt, searchfield, start, page_len, filters):
}) })
@frappe.whitelist()
def tax_account_query(doctype, txt, searchfield, start, page_len, filters): def tax_account_query(doctype, txt, searchfield, start, page_len, filters):
company_currency = erpnext.get_company_currency(filters.get('company')) company_currency = erpnext.get_company_currency(filters.get('company'))
@@ -162,6 +167,7 @@ def tax_account_query(doctype, txt, searchfield, start, page_len, filters):
return tax_accounts return tax_accounts
@frappe.whitelist()
def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=False): def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=False):
conditions = [] conditions = []
@@ -224,6 +230,7 @@ def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=Fals
}, as_dict=as_dict) }, as_dict=as_dict)
@frappe.whitelist()
def bom(doctype, txt, searchfield, start, page_len, filters): def bom(doctype, txt, searchfield, start, page_len, filters):
conditions = [] conditions = []
fields = get_fields("BOM", ["name", "item"]) fields = get_fields("BOM", ["name", "item"])
@@ -250,6 +257,7 @@ def bom(doctype, txt, searchfield, start, page_len, filters):
}) })
@frappe.whitelist()
def get_project_name(doctype, txt, searchfield, start, page_len, filters): def get_project_name(doctype, txt, searchfield, start, page_len, filters):
cond = '' cond = ''
if filters.get('customer'): if filters.get('customer'):
@@ -276,6 +284,7 @@ def get_project_name(doctype, txt, searchfield, start, page_len, filters):
}) })
@frappe.whitelist()
def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters, as_dict): def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters, as_dict):
fields = get_fields("Delivery Note", ["name", "customer", "posting_date"]) fields = get_fields("Delivery Note", ["name", "customer", "posting_date"])
@@ -305,6 +314,7 @@ def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len,
}, {"txt": ("%%%s%%" % txt)}, as_dict=as_dict) }, {"txt": ("%%%s%%" % txt)}, as_dict=as_dict)
@frappe.whitelist()
def get_batch_no(doctype, txt, searchfield, start, page_len, filters): def get_batch_no(doctype, txt, searchfield, start, page_len, filters):
cond = "" cond = ""
if filters.get("posting_date"): if filters.get("posting_date"):
@@ -362,6 +372,7 @@ def get_batch_no(doctype, txt, searchfield, start, page_len, filters):
limit %(start)s, %(page_len)s""".format(cond, match_conditions=get_match_cond(doctype)), args) limit %(start)s, %(page_len)s""".format(cond, match_conditions=get_match_cond(doctype)), args)
@frappe.whitelist()
def get_account_list(doctype, txt, searchfield, start, page_len, filters): def get_account_list(doctype, txt, searchfield, start, page_len, filters):
filter_list = [] filter_list = []
@@ -385,6 +396,7 @@ def get_account_list(doctype, txt, searchfield, start, page_len, filters):
limit_start=start, limit_page_length=page_len, as_list=True) limit_start=start, limit_page_length=page_len, as_list=True)
@frappe.whitelist()
def get_blanket_orders(doctype, txt, searchfield, start, page_len, filters): def get_blanket_orders(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql("""select distinct bo.name, bo.blanket_order_type, bo.to_date return frappe.db.sql("""select distinct bo.name, bo.blanket_order_type, bo.to_date
from `tabBlanket Order` bo, `tabBlanket Order Item` boi from `tabBlanket Order` bo, `tabBlanket Order Item` boi

View File

@@ -223,6 +223,7 @@ def get_benefit_amount_based_on_pro_rata(sal_struct, component_max_benefit):
return benefit_amount return benefit_amount
@frappe.whitelist()
def get_earning_components(doctype, txt, searchfield, start, page_len, filters): def get_earning_components(doctype, txt, searchfield, start, page_len, filters):
if len(filters) < 2: if len(filters) < 2:
return {} return {}

View File

@@ -573,6 +573,7 @@ def submit_salary_slips_for_employees(payroll_entry, salary_slips, publish_progr
if not_submitted_ss: if not_submitted_ss:
frappe.msgprint(_("Could not submit some Salary Slips")) frappe.msgprint(_("Could not submit some Salary Slips"))
@frappe.whitelist()
def get_payroll_entries_for_jv(doctype, txt, searchfield, start, page_len, filters): def get_payroll_entries_for_jv(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql(""" return frappe.db.sql("""
select name from `tabPayroll Entry` select name from `tabPayroll Entry`

View File

@@ -562,6 +562,7 @@ class WorkOrder(Document):
bom.set_bom_material_details() bom.set_bom_material_details()
return bom return bom
@frappe.whitelist()
def get_bom_operations(doctype, txt, searchfield, start, page_len, filters): def get_bom_operations(doctype, txt, searchfield, start, page_len, filters):
if txt: if txt:
filters['operation'] = ('like', '%%%s%%' % txt) filters['operation'] = ('like', '%%%s%%' % txt)

View File

@@ -238,6 +238,7 @@ def get_list_context(context=None):
"row_template": "templates/includes/projects/project_row.html" "row_template": "templates/includes/projects/project_row.html"
} }
@frappe.whitelist()
def get_users_for_project(doctype, txt, searchfield, start, page_len, filters): def get_users_for_project(doctype, txt, searchfield, start, page_len, filters):
conditions = [] conditions = []
return frappe.db.sql("""select name, concat_ws(' ', first_name, middle_name, last_name) return frappe.db.sql("""select name, concat_ws(' ', first_name, middle_name, last_name)

View File

@@ -188,6 +188,7 @@ def check_if_child_exists(name):
return child_tasks return child_tasks
@frappe.whitelist()
def get_project(doctype, txt, searchfield, start, page_len, filters): def get_project(doctype, txt, searchfield, start, page_len, filters):
from erpnext.controllers.queries import get_match_cond from erpnext.controllers.queries import get_match_cond
return frappe.db.sql(""" select name from `tabProject` return frappe.db.sql(""" select name from `tabProject`

View File

@@ -65,6 +65,7 @@ def make_invoice(table, customer, mode_of_payment):
return invoice.name return invoice.name
@frappe.whitelist()
def item_query_restaurant(doctype='Item', txt='', searchfield='name', start=0, page_len=20, filters=None, as_dict=False): def item_query_restaurant(doctype='Item', txt='', searchfield='name', start=0, page_len=20, filters=None, as_dict=False):
'''Return items that are selected in active menu of the restaurant''' '''Return items that are selected in active menu of the restaurant'''
restaurant, menu = get_restaurant_and_menu_name(filters['table']) restaurant, menu = get_restaurant_and_menu_name(filters['table'])

View File

@@ -468,6 +468,7 @@ def make_address(args, is_primary_address=1):
return address return address
@frappe.whitelist()
def get_customer_primary_contact(doctype, txt, searchfield, start, page_len, filters): def get_customer_primary_contact(doctype, txt, searchfield, start, page_len, filters):
customer = filters.get('customer') customer = filters.get('customer')
return frappe.db.sql(""" return frappe.db.sql("""

View File

@@ -28,6 +28,8 @@ class ProductBundle(Document):
if frappe.db.exists("Product Bundle", item.item_code): if frappe.db.exists("Product Bundle", item.item_code):
frappe.throw(_("Child Item should not be a Product Bundle. Please remove item `{0}` and save").format(item.item_code)) frappe.throw(_("Child Item should not be a Product Bundle. Please remove item `{0}` and save").format(item.item_code))
@frappe.whitelist()
def get_new_item_code(doctype, txt, searchfield, start, page_len, filters): def get_new_item_code(doctype, txt, searchfield, start, page_len, filters):
from erpnext.controllers.queries import get_match_cond from erpnext.controllers.queries import get_match_cond

View File

@@ -167,6 +167,7 @@ def get_item_group_condition(pos_profile):
return cond % tuple(item_groups) return cond % tuple(item_groups)
@frappe.whitelist()
def item_group_query(doctype, txt, searchfield, start, page_len, filters): def item_group_query(doctype, txt, searchfield, start, page_len, filters):
item_groups = [] item_groups = []
cond = "1=1" cond = "1=1"

View File

@@ -42,6 +42,7 @@ class ItemAlternative(Document):
'alternative_item_code': self.alternative_item_code, 'name': ('!=', self.name)}): 'alternative_item_code': self.alternative_item_code, 'name': ('!=', self.name)}):
frappe.throw(_("Already record exists for the item {0}".format(self.item_code))) frappe.throw(_("Already record exists for the item {0}".format(self.item_code)))
@frappe.whitelist()
def get_alternative_items(doctype, txt, searchfield, start, page_len, filters): def get_alternative_items(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql(""" (select alternative_item_code from `tabItem Alternative` return frappe.db.sql(""" (select alternative_item_code from `tabItem Alternative`
where item_code = %(item_code)s and alternative_item_code like %(txt)s) where item_code = %(item_code)s and alternative_item_code like %(txt)s)

View File

@@ -385,6 +385,7 @@ def get_material_requests_based_on_supplier(supplier):
return material_requests, supplier_items return material_requests, supplier_items
@frappe.whitelist()
def get_default_supplier_query(doctype, txt, searchfield, start, page_len, filters): def get_default_supplier_query(doctype, txt, searchfield, start, page_len, filters):
doc = frappe.get_doc("Material Request", filters.get("doc")) doc = frappe.get_doc("Material Request", filters.get("doc"))
item_list = [] item_list = []

View File

@@ -175,6 +175,7 @@ class PackingSlip(Document):
self.update_item_details() self.update_item_details()
@frappe.whitelist()
def item_details(doctype, txt, searchfield, start, page_len, filters): def item_details(doctype, txt, searchfield, start, page_len, filters):
from erpnext.controllers.queries import get_match_cond from erpnext.controllers.queries import get_match_cond
return frappe.db.sql("""select name, item_name, description from `tabItem` return frappe.db.sql("""select name, item_name, description from `tabItem`

View File

@@ -58,6 +58,7 @@ class QualityInspection(Document):
.format(parent_doc=self.reference_type, child_doc=doctype), .format(parent_doc=self.reference_type, child_doc=doctype),
(quality_inspection, self.modified, self.reference_name, self.item_code)) (quality_inspection, self.modified, self.reference_name, self.item_code))
@frappe.whitelist()
def item_query(doctype, txt, searchfield, start, page_len, filters): def item_query(doctype, txt, searchfield, start, page_len, filters):
if filters.get("from"): if filters.get("from"):
from frappe.desk.reportview import get_match_cond from frappe.desk.reportview import get_match_cond
@@ -86,6 +87,7 @@ def item_query(doctype, txt, searchfield, start, page_len, filters):
page_len = page_len, qi_condition = qi_condition), page_len = page_len, qi_condition = qi_condition),
{'parent': filters.get('parent'), 'txt': "%%%s%%" % txt}) {'parent': filters.get('parent'), 'txt': "%%%s%%" % txt})
@frappe.whitelist()
def quality_inspection_query(doctype, txt, searchfield, start, page_len, filters): def quality_inspection_query(doctype, txt, searchfield, start, page_len, filters):
return frappe.get_all('Quality Inspection', return frappe.get_all('Quality Inspection',
limit_start=start, limit_start=start,