Преглед на файлове

[api] add frappe.model.get_value in js (gets value from serverside)

version-14
Rushabh Mehta преди 10 години
родител
ревизия
5034e7e660
променени са 5 файла, в които са добавени 38 реда и са изтрити 12 реда
  1. +12
    -2
      frappe/client.py
  2. +1
    -1
      frappe/public/js/frappe/form/script_manager.js
  3. +21
    -5
      frappe/public/js/frappe/model/model.js
  4. +1
    -1
      frappe/templates/print_formats/standard_macros.html
  5. +3
    -3
      frappe/website/website_generator.py

+ 12
- 2
frappe/client.py Целия файл

@@ -32,9 +32,19 @@ def get_value(doctype, fieldname, filters=None, as_dict=True, debug=False):
if not frappe.has_permission(doctype):
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)
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()
def set_value(doctype, name, fieldname, value):


+ 1
- 1
frappe/public/js/frappe/form/script_manager.js Целия файл

@@ -80,7 +80,7 @@ frappe.ui.form.ScriptManager = Class.extend({
// setup add fetch
$.each(this.frm.fields, function(i, field) {
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(".");
me.frm.add_fetch(parts[0], parts[1], df.fieldname);
}


+ 21
- 5
frappe/public/js/frappe/model/model.js Целия файл

@@ -242,12 +242,28 @@ $.extend(frappe.model, {
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 {
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;
}
}
},



+ 1
- 1
frappe/templates/print_formats/standard_macros.html Целия файл

@@ -113,7 +113,7 @@
<div class="print-heading">
<h2>{{ doc.select_print_heading or (doc.print_heading if doc.print_heading != None
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>
</h2>
</div>


+ 3
- 3
frappe/website/website_generator.py Целия файл

@@ -148,7 +148,7 @@ class WebsiteGenerator(Document):
if context.parents:
return context.parents

# home_page = get_home_page()
home_page = get_home_page()

parents = []
me = self
@@ -157,8 +157,8 @@ class WebsiteGenerator(Document):
_parent_val = me.get(_parent_field) if _parent_field else None

# 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:
df = me.meta.get_field(_parent_field)


Зареждане…
Отказ
Запис