Browse Source

[fixes] tests and enhancement to frappe.make_property_setter

version-14
Rushabh Mehta 9 years ago
parent
commit
298f013c66
3 changed files with 42 additions and 22 deletions
  1. +33
    -14
      frappe/__init__.py
  2. +8
    -7
      frappe/custom/doctype/custom_field/custom_field.py
  3. +1
    -1
      frappe/desk/doctype/desktop_icon/test_desktop_icon.py

+ 33
- 14
frappe/__init__.py View File

@@ -854,21 +854,40 @@ def call(fn, *args, **kwargs):
return fn(*args, **newargs) return fn(*args, **newargs)


def make_property_setter(args, ignore_validate=False, validate_fields_for_doctype=True): 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) 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): def import_doc(path, ignore_links=False, ignore_insert=False, insert=False):
"""Import a file using Data Import Tool.""" """Import a file using Data Import Tool."""


+ 8
- 7
frappe/custom/doctype/custom_field/custom_field.py View File

@@ -80,15 +80,16 @@ def create_custom_field_if_values_exist(doctype, df):




def create_custom_field(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}): if not frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": df.fieldname}):
frappe.get_doc({ frappe.get_doc({
"doctype":"Custom Field", "doctype":"Custom Field",
"dt": doctype, "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() }).insert()

+ 1
- 1
frappe/desk/doctype/desktop_icon/test_desktop_icon.py View File

@@ -33,7 +33,7 @@ class TestDesktopIcon(unittest.TestCase):


def test_add_desktop_icon(self): def test_add_desktop_icon(self):
self.assertEquals(self.get_icon('User'), None) self.assertEquals(self.get_icon('User'), None)
add_user_icon('User', '#List/User', 'link', 'User')
add_user_icon('User')


icon = self.get_icon('User') icon = self.get_icon('User')
self.assertEquals(icon.custom, 1) self.assertEquals(icon.custom, 1)


Loading…
Cancel
Save