From e432f8284bd8d78670a42600452e180584ecc88e Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 24 Jun 2026 20:37:33 +0530 Subject: [PATCH] refactor: parse native JSON request args in projects/doctype/project/project.py Use frappe.parse_json instead of json.loads so the whitelisted endpoints accept native JSON types (list/dict/bool) in addition to JSON strings. --- erpnext/projects/doctype/project/project.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index 037e46de78f..2b567ce44e1 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -629,11 +629,11 @@ def allow_to_make_project_update(project, time, frequency): @frappe.whitelist() -def create_duplicate_project(prev_doc: str, project_name: str): +def create_duplicate_project(prev_doc: str | dict, project_name: str): """Create duplicate project based on the old project""" import json - prev_doc = json.loads(prev_doc) + prev_doc = frappe.parse_json(prev_doc) if project_name == prev_doc.get("name"): frappe.throw(_("Use a name that is different from previous project name"))