refactor(client): add stronger checks

Previous code was very passive for dicts., this fixes that by parsing and then checking membership.
This commit is contained in:
AarDG10 2026-04-22 21:13:38 +05:30
parent e9d579125d
commit 616a17c3ec

View file

@ -189,18 +189,21 @@ def set_value(doctype: str, name: str | int, fieldname: str | dict[str, Any], va
:param fieldname: fieldname string or JSON / dict with key value pair
:param value: value if fieldname is JSON / dict"""
if fieldname in (frappe.model.default_fields + frappe.model.child_table_fields):
frappe.throw(_("Cannot edit standard fields"))
if not value:
values = fieldname
if isinstance(fieldname, str):
try:
values = json.loads(fieldname)
except ValueError:
values = {fieldname: ""}
else:
values = {}
if value is not None:
values = {fieldname: value}
elif isinstance(fieldname, dict):
values = fieldname
elif isinstance(fieldname, str):
try:
values = json.loads(fieldname)
except ValueError:
values = {fieldname: ""}
forbidden = set(frappe.model.default_fields + frappe.model.child_table_fields)
for field in values:
if field in forbidden:
frappe.throw(_("Cannot edit standard fields"))
# check for child table doctype
if not frappe.get_meta(doctype).istable: