Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

128 rindas
3.3 KiB

  1. from __future__ import unicode_literals
  2. import webnotes
  3. import memc
  4. # User
  5. def set_user_default(key, value, user=None):
  6. set_default(key, value, user or webnotes.session.user)
  7. def add_user_default(key, value, user=None):
  8. add_default(key, value, user or webnotes.session.user)
  9. def get_user_default(key, user=None):
  10. d = get_defaults(user or webnotes.session.user).get(key, None)
  11. return isinstance(d, list) and d[0] or d
  12. def get_user_default_as_list(key, user=None):
  13. d = get_defaults(user or webnotes.session.user).get(key, None)
  14. return isinstance(d, basestring) and [d] or d
  15. def get_defaults(user=None):
  16. userd = get_defaults_for(user or webnotes.session.user)
  17. globald = get_defaults_for()
  18. globald.update(userd)
  19. return globald
  20. def clear_user_default(key, user=None):
  21. clear_default(key, parent=user or webnotes.session.user)
  22. # Global
  23. def set_global_default(key, value):
  24. set_default(key, value, "Control Panel")
  25. def add_global_default(key, value):
  26. add_default(key, value, "Control Panel")
  27. def get_global_default(key):
  28. d = get_defaults().get(key, None)
  29. return isinstance(d, list) and d[0] or d
  30. # Common
  31. def set_default(key, value, parent):
  32. if webnotes.conn.sql("""select defkey from `tabDefaultValue` where
  33. defkey=%s and parent=%s """, (key, parent)):
  34. # update
  35. webnotes.conn.sql("""update `tabDefaultValue` set defvalue=%s
  36. where parent=%s and defkey=%s""", (value, parent, key))
  37. clear_cache(parent)
  38. else:
  39. add_default(key, value, parent)
  40. def add_default(key, value, parent):
  41. d = webnotes.doc({
  42. "doctype": "DefaultValue",
  43. "parent": parent,
  44. "parenttype": "Control Panel",
  45. "parentfield": "system_defaults",
  46. "defkey": key,
  47. "defvalue": value
  48. })
  49. d.insert()
  50. clear_cache(parent)
  51. def clear_default(key=None, value=None, parent=None, name=None):
  52. conditions = []
  53. values = []
  54. if key:
  55. conditions.append("defkey=%s")
  56. values.append(key)
  57. if value:
  58. conditions.append("defvalue=%s")
  59. values.append(value)
  60. if name:
  61. conditions.append("name=%s")
  62. values.append(name)
  63. if parent:
  64. conditions.append("parent=%s")
  65. values.append(parent)
  66. if not conditions:
  67. raise Exception, "[clear_default] No key specified."
  68. webnotes.conn.sql("""delete from tabDefaultValue where %s""" % " and ".join(conditions), values)
  69. clear_cache()
  70. def get_defaults_for(parent="Control Panel"):
  71. """get all defaults"""
  72. defaults = webnotes.cache().get_value("__defaults:" + parent)
  73. if not defaults:
  74. res = webnotes.conn.sql("""select defkey, defvalue from `tabDefaultValue`
  75. where parent = %s order by creation""", parent, as_dict=1)
  76. defaults = webnotes._dict({})
  77. for d in res:
  78. if d.defkey in defaults:
  79. # listify
  80. if isinstance(defaults[d.defkey], basestring) and defaults[d.defkey] != d.defvalue:
  81. defaults[d.defkey] = [defaults[d.defkey]]
  82. if d.defvalue not in defaults[d.defkey]:
  83. defaults[d.defkey].append(d.defvalue)
  84. else:
  85. defaults[d.defkey] = d.defvalue
  86. webnotes.cache().set_value("__defaults:" + parent, defaults)
  87. return defaults
  88. def clear_cache(parent=None):
  89. def all_profiles():
  90. return webnotes.conn.sql_list("select name from tabProfile") + ["Control Panel"]
  91. if parent=="Control Panel" or not parent:
  92. parent = all_profiles()
  93. elif isinstance(parent, basestring):
  94. parent = [parent]
  95. for p in parent:
  96. webnotes.cache().delete_value("__defaults:" + p)
  97. webnotes.clear_cache()