1
0
forked from test/crm
jcrm/crm/api/doc.py

48 lines
897 B
Python

import frappe
from frappe.model.document import get_controller
from pypika import Criterion
@frappe.whitelist()
def sort_options(doctype: str):
c = get_controller(doctype)
if not hasattr(c, "sort_options"):
return []
return c.sort_options()
@frappe.whitelist()
def get_filterable_fields(doctype: str):
DocField = frappe.qb.DocType("DocField")
allowed_fieldtypes = [
"Check",
"Data",
"Float",
"Int",
"Link",
"Long Text",
"Select",
"Small Text",
"Text Editor",
"Text",
]
from_doc_fields = (
frappe.qb.from_(DocField)
.select(
DocField.fieldname,
DocField.fieldtype,
DocField.label,
DocField.name,
DocField.options,
)
.where(DocField.parent == doctype)
.where(DocField.hidden == False)
.where(Criterion.any([DocField.fieldtype == i for i in allowed_fieldtypes]))
.run(as_dict=True)
)
res = []
res.extend(from_doc_fields)
return res