diff --git a/frappe/desk/search.py b/frappe/desk/search.py index a03b2352a7..a4554f0ab7 100644 --- a/frappe/desk/search.py +++ b/frappe/desk/search.py @@ -56,6 +56,7 @@ def search_widget(doctype, txt, query=None, searchfield=None, start=0, filters = [] or_filters = [] + # build from doctype if txt: if meta.search_fields: diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index d86ccea76c..a7678a4c8e 100644 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -1144,7 +1144,7 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ var set_nulls = function(obj) { $.each(obj, function(key, value) { if(value!==undefined) { - obj[key] = value || null; + obj[key] = value; } }); return obj; @@ -1152,7 +1152,13 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ if(this.get_query || this.df.get_query) { var get_query = this.get_query || this.df.get_query; if($.isPlainObject(get_query)) { - $.extend(args, set_nulls(get_query)); + var filters = set_nulls(get_query); + + // extend args for custom functions + $.extend(args, filters); + + // add "filters" for standard query (search.py) + args.filters = filters; } else if(typeof(get_query)==="string") { args.query = get_query; } else { @@ -1164,7 +1170,11 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ if(q.filters) { set_nulls(q.filters); } + // extend args for custom functions $.extend(args, q); + + // add "filters" for standard query (search.py) + args.filters = q.filters; } } } diff --git a/frappe/tests/test_data_import.py b/frappe/tests/test_data_import.py index af7cc4fc15..256fc15244 100644 --- a/frappe/tests/test_data_import.py +++ b/frappe/tests/test_data_import.py @@ -35,7 +35,7 @@ class TestDataImport(unittest.TestCase): exporter.get_template("Blog Category", all_doctypes="No", with_data="No") content = read_csv_content(frappe.response.result) content.append(["", "", "test-category", "Test Cateogry"]) - importer.upload(content) + importer.upload.queue(content) self.assertTrue(frappe.db.get_value("Blog Category", "test-category", "title"), "Test Category") # export with data @@ -44,7 +44,7 @@ class TestDataImport(unittest.TestCase): # overwrite content[-1][3] = "New Title" - importer.upload(content, overwrite=True) + importer.upload.queue(content, overwrite=True) self.assertTrue(frappe.db.get_value("Blog Category", "test-category", "title"), "New Title") def test_import_only_children(self): @@ -57,7 +57,7 @@ class TestDataImport(unittest.TestCase): exporter.get_template("UserRole", "User", all_doctypes="No", with_data="No") content = read_csv_content(frappe.response.result) content.append(["", "test_import_userrole@example.com", "Blogger"]) - importer.upload(content) + importer.upload.queue(content) user = frappe.get_doc("User", user_email) self.assertEquals(len(user.get("user_roles")), 1) @@ -67,7 +67,7 @@ class TestDataImport(unittest.TestCase): exporter.get_template("UserRole", "User", all_doctypes="No", with_data="No") content = read_csv_content(frappe.response.result) content.append(["", "test_import_userrole@example.com", "Website Manager"]) - importer.upload(content, overwrite=True) + importer.upload.queue(content, overwrite=True) user = frappe.get_doc("User", user_email) self.assertEquals(len(user.get("user_roles")), 1) @@ -81,7 +81,7 @@ class TestDataImport(unittest.TestCase): content[-1][3] = "Private" content[-1][4] = "2014-01-01 10:00:00.000000" content[-1][content[15].index("role")] = "System Manager" - importer.upload(content) + importer.upload.queue(content) ev = frappe.get_doc("Event", {"subject":"__Test Event"}) self.assertTrue("System Manager" in [d.role for d in ev.roles]) diff --git a/frappe/workflow/doctype/workflow/workflow.js b/frappe/workflow/doctype/workflow/workflow.js index 617c5da97d..53e7decb22 100644 --- a/frappe/workflow/doctype/workflow/workflow.js +++ b/frappe/workflow/doctype/workflow/workflow.js @@ -1,25 +1,27 @@ frappe.provide("frappe.core") -frappe.core.Workflow = frappe.ui.form.Controller.extend({ - refresh: function(doc) { - this.update_field_options(doc); +frappe.ui.form.on("Workflow", { + onload: function(frm) { + frm.set_query("document_type", {"issingle": 0, "istable": 0}); }, - document_type: function(doc) { - this.update_field_options(doc); + refresh: function(frm) { + frm.events.update_field_options(frm); }, - update_field_options: function(doc) { - var me = this; + document_type: function(frm) { + frm.events.update_field_options(frm); + }, + update_field_options: function(frm) { + var doc = frm.doc; if(doc.document_type) { frappe.model.with_doctype(doc.document_type, function() { var fields = $.map(frappe.get_doc("DocType", - me.frm.doc.document_type).fields, function(d) { + frm.doc.document_type).fields, function(d) { return frappe.model.no_value_type.indexOf(d.fieldtype)===-1 ? d.fieldname : null; }) - frappe.meta.get_docfield("Workflow Document State", "update_field", me.frm.doc.name).options + frappe.meta.get_docfield("Workflow Document State", "update_field", frm.doc.name).options = [""].concat(fields); }); } } -}); +}) -cur_frm.cscript = new frappe.core.Workflow({frm:cur_frm});