128 lines
No EOL
3.3 KiB
Python
128 lines
No EOL
3.3 KiB
Python
from __future__ import unicode_literals
|
|
import webnotes
|
|
import memc
|
|
|
|
# User
|
|
|
|
def set_user_default(key, value, user=None):
|
|
set_default(key, value, user or webnotes.session.user)
|
|
|
|
def add_user_default(key, value, user=None):
|
|
add_default(key, value, user or webnotes.session.user)
|
|
|
|
def get_user_default(key, user=None):
|
|
d = get_defaults(user or webnotes.session.user).get(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 webnotes.session.user).get(key, None)
|
|
return isinstance(d, basestring) and [d] or d
|
|
|
|
def get_defaults(user=None):
|
|
userd = get_defaults_for(user or webnotes.session.user)
|
|
|
|
globald = get_defaults_for()
|
|
globald.update(userd)
|
|
|
|
return globald
|
|
|
|
def clear_user_default(key, user=None):
|
|
clear_default(key, parent=user or webnotes.session.user)
|
|
|
|
# Global
|
|
|
|
def set_global_default(key, value):
|
|
set_default(key, value, "Control Panel")
|
|
|
|
def add_global_default(key, value):
|
|
add_default(key, value, "Control Panel")
|
|
|
|
def get_global_default(key):
|
|
d = get_defaults().get(key, None)
|
|
return isinstance(d, list) and d[0] or d
|
|
|
|
# Common
|
|
|
|
def set_default(key, value, parent):
|
|
if webnotes.conn.sql("""select defkey from `tabDefaultValue` where
|
|
defkey=%s and parent=%s """, (key, parent)):
|
|
# update
|
|
webnotes.conn.sql("""update `tabDefaultValue` set defvalue=%s
|
|
where parent=%s and defkey=%s""", (value, parent, key))
|
|
clear_cache(parent)
|
|
else:
|
|
add_default(key, value, parent)
|
|
|
|
def add_default(key, value, parent):
|
|
d = webnotes.doc({
|
|
"doctype": "DefaultValue",
|
|
"parent": parent,
|
|
"parenttype": "Control Panel",
|
|
"parentfield": "system_defaults",
|
|
"defkey": key,
|
|
"defvalue": value
|
|
})
|
|
d.insert()
|
|
clear_cache(parent)
|
|
|
|
def clear_default(key=None, value=None, parent=None, name=None):
|
|
conditions = []
|
|
values = []
|
|
|
|
if key:
|
|
conditions.append("defkey=%s")
|
|
values.append(key)
|
|
|
|
if value:
|
|
conditions.append("defvalue=%s")
|
|
values.append(value)
|
|
|
|
if name:
|
|
conditions.append("name=%s")
|
|
values.append(name)
|
|
|
|
if parent:
|
|
conditions.append("parent=%s")
|
|
values.append(parent)
|
|
|
|
if not conditions:
|
|
raise Exception, "[clear_default] No key specified."
|
|
|
|
webnotes.conn.sql("""delete from tabDefaultValue where %s""" % " and ".join(conditions), values)
|
|
clear_cache()
|
|
|
|
def get_defaults_for(parent="Control Panel"):
|
|
"""get all defaults"""
|
|
defaults = webnotes.cache().get_value("__defaults:" + parent)
|
|
if not defaults:
|
|
res = webnotes.conn.sql("""select defkey, defvalue from `tabDefaultValue`
|
|
where parent = %s order by creation""", parent, as_dict=1)
|
|
|
|
defaults = webnotes._dict({})
|
|
for d in res:
|
|
if d.defkey in defaults:
|
|
# listify
|
|
if isinstance(defaults[d.defkey], basestring) and defaults[d.defkey] != d.defvalue:
|
|
defaults[d.defkey] = [defaults[d.defkey]]
|
|
if d.defvalue not in defaults[d.defkey]:
|
|
defaults[d.defkey].append(d.defvalue)
|
|
else:
|
|
defaults[d.defkey] = d.defvalue
|
|
|
|
webnotes.cache().set_value("__defaults:" + parent, defaults)
|
|
|
|
return defaults
|
|
|
|
def clear_cache(parent=None):
|
|
def all_profiles():
|
|
return webnotes.conn.sql_list("select name from tabProfile") + ["Control Panel"]
|
|
|
|
if parent=="Control Panel" or not parent:
|
|
parent = all_profiles()
|
|
elif isinstance(parent, basestring):
|
|
parent = [parent]
|
|
|
|
for p in parent:
|
|
webnotes.cache().delete_value("__defaults:" + p)
|
|
|
|
webnotes.clear_cache() |