Merge pull request #20375 from deepeshgarg007/user_defaults
This commit is contained in:
commit
822fd4e37e
3 changed files with 89 additions and 4 deletions
|
|
@ -25,9 +25,12 @@ def get_user_default(key, user=None):
|
|||
if d and isinstance(d, (list, tuple)) and len(d) == 1:
|
||||
# Use User Permission value when only when it has a single value
|
||||
d = d[0]
|
||||
|
||||
else:
|
||||
d = user_defaults.get(frappe.scrub(key), None)
|
||||
user_permission_default = get_user_permission_default(key, user_defaults)
|
||||
if not d:
|
||||
# If no default value is found, use the User Permission value
|
||||
d = user_permission_default
|
||||
|
||||
value = isinstance(d, (list, tuple)) and d[0] or d
|
||||
if not_in_user_permission(key, value, user):
|
||||
|
|
@ -36,6 +39,24 @@ def get_user_default(key, user=None):
|
|||
return value
|
||||
|
||||
|
||||
def get_user_permission_default(key, defaults):
|
||||
permissions = get_user_permissions()
|
||||
user_default = ""
|
||||
if permissions.get(key):
|
||||
# global default in user permission
|
||||
for item in permissions.get(key):
|
||||
doc = item.get("doc")
|
||||
if defaults.get(key) == doc:
|
||||
user_default = doc
|
||||
|
||||
for item in permissions.get(key):
|
||||
if item.get("is_default"):
|
||||
user_default = item.get("doc")
|
||||
break
|
||||
|
||||
return user_default
|
||||
|
||||
|
||||
def get_user_default_as_list(key, user=None):
|
||||
user_defaults = get_defaults(user or frappe.session.user)
|
||||
d = user_defaults.get(key, None)
|
||||
|
|
|
|||
|
|
@ -3,10 +3,14 @@
|
|||
|
||||
frappe.defaults = {
|
||||
get_user_default: function (key) {
|
||||
var defaults = frappe.boot.user.defaults;
|
||||
var d = defaults[key];
|
||||
if (!d && frappe.defaults.is_a_user_permission_key(key))
|
||||
let defaults = frappe.boot.user.defaults;
|
||||
let d = defaults[key];
|
||||
if (!d && frappe.defaults.is_a_user_permission_key(key)) {
|
||||
d = defaults[frappe.model.scrub(key)];
|
||||
// Check for default user permission values
|
||||
user_default = this.get_user_permission_default(key, defaults);
|
||||
if (user_default) d = user_default;
|
||||
}
|
||||
if ($.isArray(d)) d = d[0];
|
||||
|
||||
if (!frappe.defaults.in_user_permission(key, d)) {
|
||||
|
|
@ -15,6 +19,27 @@ frappe.defaults = {
|
|||
|
||||
return d;
|
||||
},
|
||||
|
||||
get_user_permission_default: function (key, defaults) {
|
||||
let permissions = this.get_user_permissions();
|
||||
let user_default = null;
|
||||
if (permissions[key]) {
|
||||
permissions[key].forEach((item) => {
|
||||
if (defaults[key] == item.doc) {
|
||||
user_default = item.doc;
|
||||
}
|
||||
});
|
||||
|
||||
permissions[key].forEach((item) => {
|
||||
if (item.is_default) {
|
||||
user_default = item.doc;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return user_default;
|
||||
},
|
||||
|
||||
get_user_defaults: function (key) {
|
||||
var defaults = frappe.boot.user.defaults;
|
||||
var d = defaults[key];
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: MIT. See LICENSE
|
||||
import frappe
|
||||
from frappe.core.doctype.user_permission.test_user_permission import create_user
|
||||
from frappe.defaults import *
|
||||
from frappe.query_builder.utils import db_type_is
|
||||
from frappe.tests.test_query_builder import run_only_if
|
||||
from frappe.tests.utils import FrappeTestCase
|
||||
|
||||
|
||||
|
|
@ -71,3 +74,39 @@ class TestDefaults(FrappeTestCase):
|
|||
|
||||
frappe.delete_doc("User Permission", perm_doc.name)
|
||||
frappe.set_user(old_user)
|
||||
|
||||
@run_only_if(db_type_is.MARIADB)
|
||||
def test_user_permission_defaults(self):
|
||||
# Create user permission
|
||||
create_user("user_default_test@example.com", "Blogger")
|
||||
frappe.set_user("user_default_test@example.com")
|
||||
set_global_default("Country", "")
|
||||
clear_user_default("Country")
|
||||
|
||||
perm_doc = frappe.get_doc(
|
||||
dict(
|
||||
doctype="User Permission",
|
||||
user=frappe.session.user,
|
||||
allow="Country",
|
||||
for_value="India",
|
||||
)
|
||||
).insert(ignore_permissions=True)
|
||||
|
||||
frappe.db.set_value("User Permission", perm_doc.name, "is_default", 1)
|
||||
set_global_default("Country", "United States")
|
||||
self.assertEqual(get_user_default("Country"), "India")
|
||||
|
||||
frappe.db.set_value("User Permission", perm_doc.name, "is_default", 0)
|
||||
clear_user_default("Country")
|
||||
self.assertEqual(get_user_default("Country"), None)
|
||||
|
||||
perm_doc = frappe.get_doc(
|
||||
dict(
|
||||
doctype="User Permission",
|
||||
user=frappe.session.user,
|
||||
allow="Country",
|
||||
for_value="United States",
|
||||
)
|
||||
).insert(ignore_permissions=True)
|
||||
|
||||
self.assertEqual(get_user_default("Country"), "United States")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue