[minor] workflow in non-single, non-table & get_query fix

This commit is contained in:
Rushabh Mehta 2015-08-24 10:52:12 +05:30
parent acc4252ce7
commit 2f7f4542e8
4 changed files with 31 additions and 18 deletions

View file

@ -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:

View file

@ -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;
}
}
}

View file

@ -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])

View file

@ -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});