diff --git a/frappe/__init__.py b/frappe/__init__.py index fd634ff1a0..3700201d03 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -854,21 +854,40 @@ def call(fn, *args, **kwargs): return fn(*args, **newargs) def make_property_setter(args, ignore_validate=False, validate_fields_for_doctype=True): - """Create a new **Property Setter** (for overriding DocType and DocField properties).""" + """Create a new **Property Setter** (for overriding DocType and DocField properties). + + If doctype is not specified, it will create a property setter for all fields with the + given fieldname""" args = _dict(args) - ps = get_doc({ - 'doctype': "Property Setter", - 'doctype_or_field': args.doctype_or_field or "DocField", - 'doc_type': args.doctype, - 'field_name': args.fieldname, - 'property': args.property, - 'value': args.value, - 'property_type': args.property_type or "Data", - '__islocal': 1 - }) - ps.flags.ignore_validate = ignore_validate - ps.flags.validate_fields_for_doctype = validate_fields_for_doctype - ps.insert() + if not args.doctype_or_field: + args.doctype_or_field = 'DocField' + if not args.property_type: + args.property_type = db.get_value('DocField', + {'parent': 'DocField', 'fieldname': args.property}, 'fieldtype') or 'Data' + + if not args.doctype: + doctype_list = db.sql_list('select distinct parent from tabDocField where fieldname=%s', args.fieldname) + else: + doctype_list = [args.doctype] + + for doctype in doctype_list: + if not args.property_type: + args.property_type = db.get_value('DocField', + {'parent': doctype, 'fieldname': args.fieldname}, 'fieldtype') or 'Data' + + ps = get_doc({ + 'doctype': "Property Setter", + 'doctype_or_field': args.doctype_or_field, + 'doc_type': doctype, + 'field_name': args.fieldname, + 'property': args.property, + 'value': args.value, + 'property_type': args.property_type or "Data", + '__islocal': 1 + }) + ps.flags.ignore_validate = ignore_validate + ps.flags.validate_fields_for_doctype = validate_fields_for_doctype + ps.insert() def import_doc(path, ignore_links=False, ignore_insert=False, insert=False): """Import a file using Data Import Tool.""" diff --git a/frappe/custom/doctype/custom_field/custom_field.py b/frappe/custom/doctype/custom_field/custom_field.py index 4c62777caa..274ff2f8c7 100644 --- a/frappe/custom/doctype/custom_field/custom_field.py +++ b/frappe/custom/doctype/custom_field/custom_field.py @@ -80,15 +80,16 @@ def create_custom_field_if_values_exist(doctype, df): def create_custom_field(doctype, df): + df = frappe._dict(df) if not frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": df.fieldname}): frappe.get_doc({ "doctype":"Custom Field", "dt": doctype, - "permlevel": df.get("permlevel") or 0, - "label": df.get("label"), - "fieldname": df.get("fieldname"), - "fieldtype": df.get("fieldtype"), - "options": df.get("options"), - "insert_after": df.get("insert_after"), - "print_hide": df.get("print_hide") + "permlevel": df.permlevel or 0, + "label": df.label, + "fieldname": df.fieldname or df.label.lower().replace(' ', '_'), + "fieldtype": df.fieldtype, + "options": df.options, + "insert_after": df.insert_after, + "print_hide": df.print_hide }).insert() diff --git a/frappe/desk/doctype/desktop_icon/test_desktop_icon.py b/frappe/desk/doctype/desktop_icon/test_desktop_icon.py index 67b74d7cd3..b0e29a0660 100644 --- a/frappe/desk/doctype/desktop_icon/test_desktop_icon.py +++ b/frappe/desk/doctype/desktop_icon/test_desktop_icon.py @@ -33,7 +33,7 @@ class TestDesktopIcon(unittest.TestCase): def test_add_desktop_icon(self): self.assertEquals(self.get_icon('User'), None) - add_user_icon('User', '#List/User', 'link', 'User') + add_user_icon('User') icon = self.get_icon('User') self.assertEquals(icon.custom, 1)