From fa46d65754a888dbcabbe96335f92d1960b5e2e2 Mon Sep 17 00:00:00 2001 From: Sunny Date: Wed, 14 Mar 2018 08:52:20 +0530 Subject: [PATCH] set fieldname for Section Break and Column Break, only if fieldname is not set, else it breaks existing custom fields. Also Use label for creating fieldname if user has entered label --- .../custom/doctype/custom_field/custom_field.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/frappe/custom/doctype/custom_field/custom_field.py b/frappe/custom/doctype/custom_field/custom_field.py index 1f2445eb13..dbab4eadcb 100644 --- a/frappe/custom/doctype/custom_field/custom_field.py +++ b/frappe/custom/doctype/custom_field/custom_field.py @@ -14,14 +14,17 @@ class CustomField(Document): self.name = self.dt + "-" + self.fieldname def set_fieldname(self): - if self.fieldtype in ["Section Break", "Column Break"]: - self.fieldname = self.fieldtype.lower().replace(" ","_") + "_" + str(self.idx) if not self.fieldname: - if not self.label: - frappe.throw(_("Label is mandatory")) + label = self.label + if not label: + if self.fieldtype in ["Section Break", "Column Break"]: + label = self.fieldtype + "_" + str(self.idx) + else: + frappe.throw(_("Label is mandatory")) + # remove special characters from fieldname self.fieldname = "".join(filter(lambda x: x.isdigit() or x.isalpha() or '_', - cstr(self.label).lower().replace(' ','_'))) + cstr(label).replace(' ','_'))) # fieldnames should be lowercase self.fieldname = self.fieldname.lower() @@ -130,4 +133,4 @@ def create_custom_fields(custom_fields): @frappe.whitelist() def add_custom_field(doctype, df): df = json.loads(df) - return create_custom_field(doctype, df) \ No newline at end of file + return create_custom_field(doctype, df)