@@ -19,4 +19,28 @@ wn.defaults = { | |||||
if(!$.isArray(d)) d = [d]; | if(!$.isArray(d)) d = [d]; | ||||
return d; | return d; | ||||
}, | }, | ||||
set_default: function(key, value, callback) { | |||||
if(typeof value=="string") | |||||
value = JSON.stringify(value); | |||||
wn.boot.profile.defaults[key] = value; | |||||
wn.call({ | |||||
method: "webnotes.client.set_default", | |||||
args: { | |||||
key: key, | |||||
value: value | |||||
}, | |||||
callback: callback || function(r) {} | |||||
}); | |||||
}, | |||||
get_default: function(key) { | |||||
var value = wn.boot.profile.defaults[key]; | |||||
if(value) { | |||||
try { | |||||
return JSON.parse(value) | |||||
} catch(e) { | |||||
return value; | |||||
} | |||||
} | |||||
}, | |||||
} | } |
@@ -40,33 +40,9 @@ $.extend(wn.user, { | |||||
return true; | return true; | ||||
} | } | ||||
}, | }, | ||||
set_default: function(key, value, callback) { | |||||
if(typeof value=="string") | |||||
value = JSON.stringify(value); | |||||
wn.boot.profile.defaults[key] = value; | |||||
wn.call({ | |||||
method: "webnotes.client.set_default", | |||||
args: { | |||||
key: key, | |||||
value: value | |||||
}, | |||||
callback: callback || function(r) {} | |||||
}); | |||||
}, | |||||
get_default: function(key) { | |||||
var value = wn.boot.profile.defaults[key]; | |||||
if(value) { | |||||
try { | |||||
return JSON.parse(value) | |||||
} catch(e) { | |||||
return value; | |||||
} | |||||
} | |||||
}, | |||||
get_desktop_items: function() { | get_desktop_items: function() { | ||||
// get user sequence preference | // get user sequence preference | ||||
var user_list = wn.user.get_default("_desktop_items"); | |||||
var user_list = wn.defaults.get_default("_desktop_items"); | |||||
if(user_list && user_list.length) | if(user_list && user_list.length) | ||||
var modules_list = user_list; | var modules_list = user_list; | ||||
@@ -20,7 +20,7 @@ wn.ui.toolbar.Bookmarks = Class.extend({ | |||||
setup: function() { | setup: function() { | ||||
var me = this; | var me = this; | ||||
this.bookmarks = wn.user.get_default("_bookmarks") || []; | |||||
this.bookmarks = wn.defaults.get_default("_bookmarks") || []; | |||||
for(var i=this.bookmarks.length-1; i>=0; i--) { | for(var i=this.bookmarks.length-1; i>=0; i--) { | ||||
var bookmark = this.bookmarks[i]; | var bookmark = this.bookmarks[i]; | ||||
this.add_item(bookmark.route, bookmark.title) | this.add_item(bookmark.route, bookmark.title) | ||||
@@ -72,7 +72,7 @@ wn.ui.toolbar.Bookmarks = Class.extend({ | |||||
return wn.utils.filter_dict(this.bookmarks, {"route": route}).length; | return wn.utils.filter_dict(this.bookmarks, {"route": route}).length; | ||||
}, | }, | ||||
save: function() { | save: function() { | ||||
wn.user.set_default("_bookmarks", this.bookmarks); | |||||
wn.defaults.set_default("_bookmarks", this.bookmarks); | |||||
}, | }, | ||||
remove: function(route) { | remove: function(route) { | ||||
this.bookmarks = $.map(this.bookmarks, function(d) { | this.bookmarks = $.map(this.bookmarks, function(d) { | ||||
@@ -98,7 +98,7 @@ wn.views.ReportView = wn.ui.Listing.extend({ | |||||
set_init_columns: function() { | set_init_columns: function() { | ||||
// pre-select mandatory columns | // pre-select mandatory columns | ||||
var columns = wn.user.get_default("_list_settings:" + this.doctype); | |||||
var columns = wn.defaults.get_default("_list_settings:" + this.doctype); | |||||
if(!columns) { | if(!columns) { | ||||
var columns = [['name', this.doctype],]; | var columns = [['name', this.doctype],]; | ||||
$.each(wn.meta.docfield_list[this.doctype], function(i, df) { | $.each(wn.meta.docfield_list[this.doctype], function(i, df) { | ||||
@@ -465,7 +465,7 @@ wn.ui.ColumnPicker = Class.extend({ | |||||
columns.push([$selected.attr('fieldname'), | columns.push([$selected.attr('fieldname'), | ||||
$selected.attr('table')]); | $selected.attr('table')]); | ||||
}); | }); | ||||
wn.user.set_default("_list_settings:" + me.doctype, columns); | |||||
wn.defaults.set_default("_list_settings:" + me.doctype, columns); | |||||
me.list.columns = columns; | me.list.columns = columns; | ||||
me.list.run(); | me.list.run(); | ||||
}); | }); | ||||
@@ -258,7 +258,7 @@ def get_roles(user=None, with_standard=True): | |||||
def has_permission(doctype, ptype="read", doc=None): | def has_permission(doctype, ptype="read", doc=None): | ||||
"""check if user has permission""" | """check if user has permission""" | ||||
from webnotes.defaults import get_user_defaults | |||||
from webnotes.defaults import get_user_default_as_list | |||||
if session.user=="Administrator": | if session.user=="Administrator": | ||||
return True | return True | ||||
if conn.get_value("DocType", doctype, "istable"): | if conn.get_value("DocType", doctype, "istable"): | ||||
@@ -280,7 +280,7 @@ def has_permission(doctype, ptype="read", doc=None): | |||||
keys = [p.match, p.match] | keys = [p.match, p.match] | ||||
if doc.fields.get(keys[0],"[No Value]") \ | if doc.fields.get(keys[0],"[No Value]") \ | ||||
in get_user_defaults(keys[1], session.user): | |||||
in get_user_default_as_list(keys[1]): | |||||
return True | return True | ||||
else: | else: | ||||
match_failed[keys[0]] = doc.fields.get(keys[0],"[No Value]") | match_failed[keys[0]] = doc.fields.get(keys[0],"[No Value]") | ||||
@@ -12,21 +12,18 @@ def add_user_default(key, value, user=None): | |||||
def get_user_default(key, user=None): | def get_user_default(key, user=None): | ||||
d = get_defaults(user or webnotes.session.user).get(key, None) | d = get_defaults(user or webnotes.session.user).get(key, None) | ||||
if d is None: | |||||
d = get_global_default(key) | |||||
return isinstance(d, list) and d[0] or d | return isinstance(d, list) and d[0] or d | ||||
def get_user_defaults(key, user=None): | |||||
def get_user_default_as_list(key, user=None): | |||||
d = get_defaults(user or webnotes.session.user).get(key, None) | d = get_defaults(user or webnotes.session.user).get(key, None) | ||||
if d is None: | |||||
d = get_global_defaults(key) | |||||
return isinstance(d, basestring) and [d] or d | return isinstance(d, basestring) and [d] or d | ||||
def get_all_user_defaults(user=None): | |||||
userd = get_defaults(user or webnotes.session.user) | |||||
globald = get_defaults() | |||||
def get_defaults(user=None): | |||||
userd = get_defaults_for(user or webnotes.session.user) | |||||
globald = get_defaults_for() | |||||
globald.update(userd) | globald.update(userd) | ||||
return globald | return globald | ||||
def clear_user_default(key, user=None): | def clear_user_default(key, user=None): | ||||
@@ -44,10 +41,6 @@ def get_global_default(key): | |||||
d = get_defaults().get(key, None) | d = get_defaults().get(key, None) | ||||
return isinstance(d, list) and d[0] or d | return isinstance(d, list) and d[0] or d | ||||
def get_global_defaults(key): | |||||
d = get_defaults().get(key, None) | |||||
return isinstance(d, basestring) and [d] or d | |||||
# Common | # Common | ||||
def set_default(key, value, parent): | def set_default(key, value, parent): | ||||
@@ -98,7 +91,7 @@ def clear_default(key=None, value=None, parent=None, name=None): | |||||
webnotes.conn.sql("""delete from tabDefaultValue where %s""" % " and ".join(conditions), values) | webnotes.conn.sql("""delete from tabDefaultValue where %s""" % " and ".join(conditions), values) | ||||
clear_cache() | clear_cache() | ||||
def get_defaults(parent="Control Panel"): | |||||
def get_defaults_for(parent="Control Panel"): | |||||
"""get all defaults""" | """get all defaults""" | ||||
defaults = webnotes.cache().get_value("__defaults:" + parent) | defaults = webnotes.cache().get_value("__defaults:" + parent) | ||||
if not defaults: | if not defaults: | ||||
@@ -109,9 +102,10 @@ def get_defaults(parent="Control Panel"): | |||||
for d in res: | for d in res: | ||||
if d.defkey in defaults: | if d.defkey in defaults: | ||||
# listify | # listify | ||||
if isinstance(defaults[d.defkey], basestring): | |||||
if isinstance(defaults[d.defkey], basestring) and defaults[d.defkey] != d.defvalue: | |||||
defaults[d.defkey] = [defaults[d.defkey]] | defaults[d.defkey] = [defaults[d.defkey]] | ||||
defaults[d.defkey].append(d.defvalue) | |||||
if d.defvalue not in defaults[d.defkey]: | |||||
defaults[d.defkey].append(d.defvalue) | |||||
else: | else: | ||||
defaults[d.defkey] = d.defvalue | defaults[d.defkey] = d.defvalue | ||||
@@ -133,7 +133,7 @@ class Profile: | |||||
def get_defaults(self): | def get_defaults(self): | ||||
import webnotes.defaults | import webnotes.defaults | ||||
self.defaults = webnotes.defaults.get_all_user_defaults(self.name) | |||||
self.defaults = webnotes.defaults.get_defaults(self.name) | |||||
return self.defaults | return self.defaults | ||||
# update recent documents | # update recent documents | ||||
@@ -12,18 +12,19 @@ class TestDefaults(unittest.TestCase): | |||||
add_global_default("key1", "value3") | add_global_default("key1", "value3") | ||||
self.assertEquals(get_global_default("key1"), "value2") | self.assertEquals(get_global_default("key1"), "value2") | ||||
self.assertEquals(get_global_defaults("key1"), ["value2", "value3"]) | |||||
self.assertEquals(get_defaults()["key1"], ["value2", "value3"]) | |||||
self.assertEquals(get_user_default_as_list("key1"), ["value2", "value3"]) | |||||
def test_user(self): | def test_user(self): | ||||
set_user_default("key1", "2value1") | set_user_default("key1", "2value1") | ||||
self.assertEquals(get_user_defaults("key1"), ["2value1"]) | |||||
self.assertEquals(get_user_default_as_list("key1"), ["2value1"]) | |||||
set_user_default("key1", "2value2") | set_user_default("key1", "2value2") | ||||
self.assertEquals(get_user_default("key1"), "2value2") | self.assertEquals(get_user_default("key1"), "2value2") | ||||
add_user_default("key1", "3value3") | add_user_default("key1", "3value3") | ||||
self.assertEquals(get_user_default("key1"), "2value2") | self.assertEquals(get_user_default("key1"), "2value2") | ||||
self.assertEquals(get_user_defaults("key1"), ["2value2", "3value3"]) | |||||
self.assertEquals(get_user_default_as_list("key1"), ["2value2", "3value3"]) | |||||
def test_global_if_not_user(self): | def test_global_if_not_user(self): | ||||
set_global_default("key4", "value4") | set_global_default("key4", "value4") | ||||
@@ -103,7 +103,7 @@ def getmatchcondition(dt, ur): | |||||
for r in res: | for r in res: | ||||
if r[0] in ur: # role applicable to user | if r[0] in ur: # role applicable to user | ||||
if r[1]: | if r[1]: | ||||
for d in webnotes.defaults.get_user_defaults(default_key) or ["** No Match **"]: | |||||
for d in webnotes.defaults.get_user_default_as_list(default_key) or ["** No Match **"]: | |||||
cond.append('`tab%s`.`%s`="%s"' % (dt, r[1], d)) | cond.append('`tab%s`.`%s`="%s"' % (dt, r[1], d)) | ||||
else: | else: | ||||
return '' | return '' | ||||
@@ -220,7 +220,7 @@ def build_match_conditions(data): | |||||
else: | else: | ||||
default_key = document_key = d.match | default_key = document_key = d.match | ||||
for v in webnotes.defaults.get_user_defaults(default_key) or ["** No Match **"]: | |||||
for v in webnotes.defaults.get_user_default_as_list(default_key) or ["** No Match **"]: | |||||
match_conditions.append('`tab%s`.%s="%s"' % (data['doctype'], | match_conditions.append('`tab%s`.%s="%s"' % (data['doctype'], | ||||
document_key, v)) | document_key, v)) | ||||