@@ -32,9 +32,19 @@ def get_value(doctype, fieldname, filters=None, as_dict=True, debug=False): | |||||
if not frappe.has_permission(doctype): | if not frappe.has_permission(doctype): | ||||
frappe.throw(_("Not permitted"), frappe.PermissionError) | frappe.throw(_("Not permitted"), frappe.PermissionError) | ||||
if fieldname and fieldname.startswith("["): | |||||
try: | |||||
filters = json.loads(filters) | |||||
except ValueError: | |||||
# name passed, not json | |||||
pass | |||||
try: | |||||
fieldname = json.loads(fieldname) | fieldname = json.loads(fieldname) | ||||
return frappe.db.get_value(doctype, json.loads(filters), fieldname, as_dict=as_dict, debug=debug) | |||||
except ValueError: | |||||
# name passed, not json | |||||
pass | |||||
return frappe.db.get_value(doctype, filters, fieldname, as_dict=as_dict, debug=debug) | |||||
@frappe.whitelist() | @frappe.whitelist() | ||||
def set_value(doctype, name, fieldname, value): | def set_value(doctype, name, fieldname, value): | ||||
@@ -80,7 +80,7 @@ frappe.ui.form.ScriptManager = Class.extend({ | |||||
// setup add fetch | // setup add fetch | ||||
$.each(this.frm.fields, function(i, field) { | $.each(this.frm.fields, function(i, field) { | ||||
var df = field.df; | var df = field.df; | ||||
if(df.fieldtype==="Read Only" && df.options && df.options.indexOf(".")!=-1) { | |||||
if((df.fieldtype==="Read Only" || df.read_only==1) && df.options && df.options.indexOf(".")!=-1) { | |||||
var parts = df.options.split("."); | var parts = df.options.split("."); | ||||
me.frm.add_fetch(parts[0], parts[1], df.fieldname); | me.frm.add_fetch(parts[0], parts[1], df.fieldname); | ||||
} | } | ||||
@@ -242,12 +242,28 @@ $.extend(frappe.model, { | |||||
return frappe.utils.filter_dict(docsdict, filters); | return frappe.utils.filter_dict(docsdict, filters); | ||||
}, | }, | ||||
get_value: function(doctype, filters, fieldname) { | |||||
if(typeof filters==="string" && locals[doctype] && locals[doctype][filters]) { | |||||
return locals[doctype][filters][fieldname]; | |||||
get_value: function(doctype, filters, fieldname, callback) { | |||||
if(callback) { | |||||
frappe.call({ | |||||
method:"frappe.client.get_value", | |||||
args: { | |||||
doctype: doctype, | |||||
fieldname: fieldname, | |||||
filters: filters | |||||
}, | |||||
callback: function(r) { | |||||
if(!r.exc) { | |||||
callback(r.message); | |||||
} | |||||
} | |||||
}); | |||||
} else { | } else { | ||||
var l = frappe.get_list(doctype, filters); | |||||
return (l.length && l[0]) ? l[0][fieldname] : null; | |||||
if(typeof filters==="string" && locals[doctype] && locals[doctype][filters]) { | |||||
return locals[doctype][filters][fieldname]; | |||||
} else { | |||||
var l = frappe.get_list(doctype, filters); | |||||
return (l.length && l[0]) ? l[0][fieldname] : null; | |||||
} | |||||
} | } | ||||
}, | }, | ||||
@@ -113,7 +113,7 @@ | |||||
<div class="print-heading"> | <div class="print-heading"> | ||||
<h2>{{ doc.select_print_heading or (doc.print_heading if doc.print_heading != None | <h2>{{ doc.select_print_heading or (doc.print_heading if doc.print_heading != None | ||||
else _(doc.doctype)) }} | else _(doc.doctype)) }} | ||||
<small>{{ doc.sub_heading if doc.sub_heading != None | |||||
<small><br>{{ doc.sub_heading if doc.sub_heading != None | |||||
else doc.name }}</small> | else doc.name }}</small> | ||||
</h2> | </h2> | ||||
</div> | </div> | ||||
@@ -148,7 +148,7 @@ class WebsiteGenerator(Document): | |||||
if context.parents: | if context.parents: | ||||
return context.parents | return context.parents | ||||
# home_page = get_home_page() | |||||
home_page = get_home_page() | |||||
parents = [] | parents = [] | ||||
me = self | me = self | ||||
@@ -157,8 +157,8 @@ class WebsiteGenerator(Document): | |||||
_parent_val = me.get(_parent_field) if _parent_field else None | _parent_val = me.get(_parent_field) if _parent_field else None | ||||
# if no parent and not home page, then parent is home page | # if no parent and not home page, then parent is home page | ||||
# if not _parent_val and me.get_route() != home_page: | |||||
# _parent_val = home_page | |||||
if not _parent_val and me.get_route() != home_page: | |||||
_parent_val = home_page | |||||
if _parent_val: | if _parent_val: | ||||
df = me.meta.get_field(_parent_field) | df = me.meta.get_field(_parent_field) | ||||