Merge pull request #1472 from nabinhait/defaults
[fix] Get defaults based on doctype or fieldname
This commit is contained in:
commit
b47d49311a
6 changed files with 37 additions and 20 deletions
|
|
@ -650,18 +650,17 @@ class Database:
|
|||
|
||||
def get_default(self, key, parent="__default"):
|
||||
"""Returns default value as a list if multiple or single"""
|
||||
d = frappe.defaults.get_defaults(parent).get(key)
|
||||
d = self.get_defaults(key, parent)
|
||||
return isinstance(d, list) and d[0] or d
|
||||
|
||||
def get_defaults_as_list(self, key, parent="__default"):
|
||||
"""Returns default values as a list."""
|
||||
d = frappe.defaults.get_default(key, parent)
|
||||
return isinstance(d, basestring) and [d] or d
|
||||
|
||||
def get_defaults(self, key=None, parent="__default"):
|
||||
"""Get all defaults"""
|
||||
if key:
|
||||
return frappe.defaults.get_defaults(parent).get(key)
|
||||
defaults = frappe.defaults.get_defaults(parent)
|
||||
d = defaults.get(key, None)
|
||||
if(not d and key != frappe.scrub(key)):
|
||||
d = defaults.get(frappe.scrub(key), None)
|
||||
return d
|
||||
else:
|
||||
return frappe.defaults.get_defaults(parent)
|
||||
|
||||
|
|
|
|||
|
|
@ -17,11 +17,17 @@ def add_user_default(key, value, user=None, parenttype=None):
|
|||
add_default(key, value, user or frappe.session.user, parenttype)
|
||||
|
||||
def get_user_default(key, user=None):
|
||||
d = get_defaults(user or frappe.session.user).get(key, None)
|
||||
user_defaults = get_defaults(user or frappe.session.user)
|
||||
d = user_defaults.get(key, None)
|
||||
if(not d and key != frappe.scrub(key)):
|
||||
d = user_defaults.get(frappe.scrub(key), None)
|
||||
return isinstance(d, list) and d[0] or d
|
||||
|
||||
def get_user_default_as_list(key, user=None):
|
||||
d = get_defaults(user or frappe.session.user).get(key, None)
|
||||
user_defaults = get_defaults(user or frappe.session.user)
|
||||
d = user_defaults.get(key, None)
|
||||
if(not d and key != frappe.scrub(key)):
|
||||
d = user_defaults.get(frappe.scrub(key), None)
|
||||
return (not isinstance(d, list)) and [d] or d
|
||||
|
||||
def get_user_permissions(user=None):
|
||||
|
|
@ -149,7 +155,7 @@ def get_defaults_for(parent="__default"):
|
|||
"""get all defaults"""
|
||||
defaults = frappe.cache().hget("defaults", parent)
|
||||
if defaults==None:
|
||||
# sort descending because first default must get preceedence
|
||||
# sort descending because first default must get precedence
|
||||
res = frappe.db.sql("""select defkey, defvalue from `tabDefaultValue`
|
||||
where parent = %s order by creation""", (parent,), as_dict=1)
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ def getdoctype(doctype, with_parent=False, cached_timestamp=None):
|
|||
if not docs:
|
||||
docs = get_meta_bundle(doctype)
|
||||
|
||||
frappe.response['user_permissions'] = get_user_permissions(docs[0])
|
||||
frappe.response['user_permissions'] = get_user_permissions(docs)
|
||||
|
||||
if cached_timestamp and docs[0].modified==cached_timestamp:
|
||||
return "use_cache"
|
||||
|
|
@ -95,8 +95,11 @@ def get_docinfo(doc=None, doctype=None, name=None):
|
|||
def get_user_permissions(meta):
|
||||
out = {}
|
||||
all_user_permissions = frappe.defaults.get_user_permissions()
|
||||
for df in meta.get_fields_to_check_permissions(all_user_permissions):
|
||||
out[df.options] = list(set(all_user_permissions[df.options]))
|
||||
|
||||
for m in meta:
|
||||
for df in m.get_fields_to_check_permissions(all_user_permissions):
|
||||
out[df.options] = list(set(all_user_permissions[df.options]))
|
||||
|
||||
return out
|
||||
|
||||
def get_attachments(dt, dn):
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ def get_user_default_value(df, defaults, user_permissions):
|
|||
return user_permissions[df.options][0]
|
||||
|
||||
# 2 - Look in user defaults
|
||||
user_default = defaults.get(df.fieldname)
|
||||
user_default = defaults.get(df.options)
|
||||
is_allowed_user_default = user_default and (not user_permissions_exist(df, user_permissions)
|
||||
or (user_default in user_permissions.get(df.options, [])))
|
||||
|
||||
|
|
|
|||
|
|
@ -3,12 +3,18 @@
|
|||
|
||||
frappe.defaults = {
|
||||
get_user_default: function(key) {
|
||||
var d = frappe.boot.user.defaults[key];
|
||||
var defaults = frappe.boot.user.defaults;
|
||||
var d = defaults[key];
|
||||
if(!d && (key !== frappe.model.scrub(key)))
|
||||
d = defaults[frappe.model.scrub(key)];
|
||||
if($.isArray(d)) d = d[0];
|
||||
return d;
|
||||
},
|
||||
get_user_defaults: function(key) {
|
||||
var d = frappe.boot.user.defaults[key];
|
||||
var defaults = frappe.boot.user.defaults;
|
||||
var d = defaults[key];
|
||||
if(!d && (key !== frappe.model.scrub(key)))
|
||||
d = defaults[frappe.model.scrub(key)];
|
||||
if(!$.isArray(d)) d = [d];
|
||||
return d;
|
||||
},
|
||||
|
|
@ -37,7 +43,10 @@ frappe.defaults = {
|
|||
});
|
||||
},
|
||||
get_default: function(key) {
|
||||
var value = frappe.boot.user.defaults[key];
|
||||
var defaults = frappe.boot.user.defaults;
|
||||
var value = defaults[key];
|
||||
if(!value && (key !== frappe.model.scrub(key)))
|
||||
value = defaults[frappe.model.scrub(key)];
|
||||
if(value) {
|
||||
try {
|
||||
return JSON.parse(value)
|
||||
|
|
|
|||
|
|
@ -95,13 +95,13 @@ $.extend(frappe.model, {
|
|||
}
|
||||
|
||||
// 2 - look in user defaults
|
||||
var user_default = frappe.defaults.get_user_default(df.fieldname);
|
||||
var user_default = frappe.defaults.get_user_default(df.options);
|
||||
var is_allowed_user_default = user_default &&
|
||||
(!has_user_permissions || user_permissions[df.options].indexOf(user_default)!==-1);
|
||||
|
||||
// is this user default also allowed as per user permissions?
|
||||
if (is_allowed_user_default) {
|
||||
return frappe.defaults.get_user_default(df.fieldname);
|
||||
return user_default;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ $.extend(frappe.model, {
|
|||
var is_allowed_boot_doc = !has_user_permissions || user_permissions[df.options].indexOf(boot_doc)!==-1;
|
||||
|
||||
if (is_allowed_boot_doc) {
|
||||
return frappe.model.get_default_from_boot_docs(df, doc, parent_doc);
|
||||
return boot_doc;
|
||||
}
|
||||
} else if (df.fieldname===meta.title_field) {
|
||||
// ignore defaults for title field
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue