Browse Source

model_wrapper is now bean, refactoring defaults

version-14
Rushabh Mehta 12 years ago
parent
commit
e03234080e
25 changed files with 211 additions and 86 deletions
  1. +1
    -1
      core/doctype/customize_form/customize_form.py
  2. +1
    -1
      core/doctype/doctype_mapper/doctype_mapper.py
  3. +1
    -1
      core/doctype/workflow/workflow.py
  4. +4
    -4
      core/page/data_import_tool/data_import_tool.py
  5. +3
    -1
      core/page/user_properties/user_properties.py
  6. +8
    -5
      webnotes/__init__.py
  7. +5
    -5
      webnotes/client.py
  8. +15
    -45
      webnotes/db.py
  9. +107
    -0
      webnotes/defaults.py
  10. +2
    -2
      webnotes/handler.py
  11. +1
    -1
      webnotes/model/__init__.py
  12. +4
    -4
      webnotes/model/bean.py
  13. +1
    -1
      webnotes/model/code.py
  14. +1
    -1
      webnotes/model/sync.py
  15. +1
    -1
      webnotes/profile.py
  16. +1
    -1
      webnotes/sessions.py
  17. +8
    -2
      webnotes/test_runner.py
  18. +37
    -0
      webnotes/tests/test_defaults.py
  19. +1
    -1
      webnotes/translate.py
  20. +2
    -2
      webnotes/utils/nestedset.py
  21. +1
    -1
      webnotes/widgets/calendar.py
  22. +1
    -1
      webnotes/widgets/form/load.py
  23. +2
    -2
      webnotes/widgets/form/run_method.py
  24. +2
    -2
      webnotes/widgets/form/save.py
  25. +1
    -1
      webnotes/widgets/reportview.py

+ 1
- 1
core/doctype/customize_form/customize_form.py View File

@@ -144,7 +144,7 @@ class DocType:


def post(self): def post(self):
""" """
Save diff between Customize Form ModelWrapper and DocType ModelWrapper as property setter entries
Save diff between Customize Form Bean and DocType Bean as property setter entries
""" """
if self.doc.doc_type: if self.doc.doc_type:
from webnotes.model import doc from webnotes.model import doc


+ 1
- 1
core/doctype/doctype_mapper/doctype_mapper.py View File

@@ -26,7 +26,7 @@ import webnotes
from webnotes.utils import cint, cstr, default_fields, flt from webnotes.utils import cint, cstr, default_fields, flt
from webnotes.model import db_exists, default_fields from webnotes.model import db_exists, default_fields
from webnotes.model.doc import Document, addchild, make_autoname from webnotes.model.doc import Document, addchild, make_autoname
from webnotes.model.wrapper import getlist
from webnotes.model.bean import getlist
from webnotes import msgprint from webnotes import msgprint
from webnotes.model.doctype import get from webnotes.model.doctype import get




+ 1
- 1
core/doctype/workflow/workflow.py View File

@@ -37,7 +37,7 @@ class DocType:
"fieldname":self.doc.workflow_state_field})): "fieldname":self.doc.workflow_state_field})):
# create custom field # create custom field
webnotes.model_wrapper([{
webnotes.bean([{
"doctype":"Custom Field", "doctype":"Custom Field",
"dt": self.doc.document_type, "dt": self.doc.document_type,
"__islocal": 1, "__islocal": 1,


+ 4
- 4
core/page/data_import_tool/data_import_tool.py View File

@@ -282,21 +282,21 @@ def delete_child_rows(rows, doctype):
def import_doc(d, doctype, overwrite, row_idx): def import_doc(d, doctype, overwrite, row_idx):
"""import main (non child) document""" """import main (non child) document"""
from webnotes.model.wrapper import ModelWrapper
from webnotes.model.bean import Bean


if webnotes.conn.exists(doctype, d['name']): if webnotes.conn.exists(doctype, d['name']):
if overwrite: if overwrite:
doclist = webnotes.model.doc.get(doctype, d['name']) doclist = webnotes.model.doc.get(doctype, d['name'])
doclist[0].fields.update(d) doclist[0].fields.update(d)
model_wrapper = ModelWrapper(doclist)
model_wrapper.save()
bean = Bean(doclist)
bean.save()
return 'Updated row (#%d) %s' % (row_idx, getlink(doctype, d['name'])) return 'Updated row (#%d) %s' % (row_idx, getlink(doctype, d['name']))
else: else:
return 'Ignored row (#%d) %s (exists)' % (row_idx, return 'Ignored row (#%d) %s (exists)' % (row_idx,
getlink(doctype, d['name'])) getlink(doctype, d['name']))
else: else:
d['__islocal'] = 1 d['__islocal'] = 1
dl = ModelWrapper([webnotes.model.doc.Document(fielddata = d)])
dl = Bean([webnotes.model.doc.Document(fielddata = d)])
dl.save() dl.save()
return 'Inserted row (#%d) %s' % (row_idx, getlink(doctype, return 'Inserted row (#%d) %s' % (row_idx, getlink(doctype,
dl.doc.fields['name'])) dl.doc.fields['name']))

+ 3
- 1
core/page/user_properties/user_properties.py View File

@@ -1,5 +1,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import webnotes import webnotes
import webnotes.defaults


@webnotes.whitelist(allow_roles=["System Manager", "Administrator"]) @webnotes.whitelist(allow_roles=["System Manager", "Administrator"])
def get_users_and_links(): def get_users_and_links():
@@ -41,7 +42,8 @@ def get_properties(user=None, key=None):
def remove(user, name): def remove(user, name):
webnotes.conn.sql("""delete from tabDefaultValue where name=%s""", name) webnotes.conn.sql("""delete from tabDefaultValue where name=%s""", name)
webnotes.clear_cache(user=user) webnotes.clear_cache(user=user)
webnotes.defaults(user=user)
@webnotes.whitelist(allow_roles=["System Manager", "Administrator"]) @webnotes.whitelist(allow_roles=["System Manager", "Administrator"])
def add(parent, defkey, defvalue): def add(parent, defkey, defvalue):
webnotes.conn.add_default(defkey, defvalue, parent)
webnotes.defaults.add_user_default(defkey, defvalue, parent)

+ 8
- 5
webnotes/__init__.py View File

@@ -312,12 +312,15 @@ def doclist(lst=None):
from webnotes.model.doclist import DocList from webnotes.model.doclist import DocList
return DocList(lst) return DocList(lst)


def model_wrapper(doctype=None, name=None):
from webnotes.model.wrapper import ModelWrapper
return ModelWrapper(doctype, name)
def bean(doctype=None, name=None, copy=None):
from webnotes.model.bean import Bean
if copy:
return Bean(copy_doclist(copy))
else:
return Bean(doctype, name)


def get_doclist(doctype, name=None): def get_doclist(doctype, name=None):
return model_wrapper(doctype, name).doclist
return bean(doctype, name).doclist
def get_doctype(doctype, processed=False): def get_doctype(doctype, processed=False):
import webnotes.model.doctype import webnotes.model.doctype
@@ -357,7 +360,7 @@ def get_method(method_string):
def make_property_setter(args): def make_property_setter(args):
args = _dict(args) args = _dict(args)
model_wrapper([{
bean([{
'doctype': "Property Setter", 'doctype': "Property Setter",
'doctype_or_field': args.doctype_or_field or "DocField", 'doctype_or_field': args.doctype_or_field or "DocField",
'doc_type': args.doctype, 'doc_type': args.doctype,


+ 5
- 5
webnotes/client.py View File

@@ -30,7 +30,7 @@ def get(doctype, name=None, filters=None):
name = webnotes.conn.get_value(doctype, json.loads(filters)) name = webnotes.conn.get_value(doctype, json.loads(filters))
if not name: if not name:
raise Exception, "No document found for given filters" raise Exception, "No document found for given filters"
return [d.fields for d in webnotes.model_wrapper(doctype, name).doclist]
return [d.fields for d in webnotes.bean(doctype, name).doclist]
@webnotes.whitelist() @webnotes.whitelist()
def insert(doclist): def insert(doclist):
@@ -45,7 +45,7 @@ def save(doclist):
if isinstance(doclist, basestring): if isinstance(doclist, basestring):
doclist = json.loads(doclist) doclist = json.loads(doclist)


doclistobj = webnotes.model_wrapper(doclist)
doclistobj = webnotes.bean(doclist)
doclistobj.save() doclistobj.save()
return [d.fields for d in doclist] return [d.fields for d in doclist]
@@ -55,14 +55,14 @@ def submit(doclist):
if isinstance(doclist, basestring): if isinstance(doclist, basestring):
doclist = json.loads(doclist) doclist = json.loads(doclist)


doclistobj = webnotes.model_wrapper(doclist)
doclistobj = webnotes.bean(doclist)
doclistobj.submit() doclistobj.submit()
return [d.fields for d in doclist] return [d.fields for d in doclist]


@webnotes.whitelist() @webnotes.whitelist()
def cancel(doctype, name): def cancel(doctype, name):
wrapper = webnotes.model_wrapper(doctype, name)
wrapper = webnotes.bean(doctype, name)
wrapper.cancel() wrapper.cancel()
return [d.fields for d in wrapper.doclist] return [d.fields for d in wrapper.doclist]
@@ -77,4 +77,4 @@ def set_default(key, value, parent=None):
def make_width_property_setter(): def make_width_property_setter():
doclist = json.loads(webnotes.form_dict.doclist) doclist = json.loads(webnotes.form_dict.doclist)
if doclist[0]["doctype"]=="Property Setter" and doclist[0]["property"]=="width": if doclist[0]["doctype"]=="Property Setter" and doclist[0]["property"]=="width":
webnotes.model_wrapper(doclist).save()
webnotes.bean(doclist).save()

+ 15
- 45
webnotes/db.py View File

@@ -299,15 +299,10 @@ class Database:
doc.fields[field] = val doc.fields[field] = val


def set_global(self, key, val, user='__global'): def set_global(self, key, val, user='__global'):
res = self.sql('select defkey from `tabDefaultValue` where defkey=%s and parent=%s', (key, user))
if res:
self.sql('update `tabDefaultValue` set defvalue=%s where parent=%s and defkey=%s', (str(val), user, key))
else:
self.sql('insert into `tabDefaultValue` (name, defkey, defvalue, parent) values (%s,%s,%s,%s)', (user+'_'+key, key, str(val), user))
self.set_default(key, val, user)


def get_global(self, key, user='__global'): def get_global(self, key, user='__global'):
g = self.sql("select defvalue from tabDefaultValue where defkey=%s and parent=%s", (key, user))
return g and g[0][0] or None
return self.get_default(key, val, user)
def get_globals_like(self, key): def get_globals_like(self, key):
return [g[0] for g in self.sql("""select defvalue from tabDefaultValue return [g[0] for g in self.sql("""select defvalue from tabDefaultValue
@@ -315,56 +310,31 @@ class Database:


def set_default(self, key, val, parent="Control Panel"): def set_default(self, key, val, parent="Control Panel"):
"""set control panel default (tabDefaultVal)""" """set control panel default (tabDefaultVal)"""

if self.sql("""select defkey from `tabDefaultValue` where
defkey=%s and parent=%s """, (key, parent)):
# update
self.sql("""update `tabDefaultValue` set defvalue=%s
where parent=%s and defkey=%s""", (val, parent, key))
webnotes.clear_cache()
else:
self.add_default(key, val, parent)
import webnotes.defaults
webnotes.defaults.set_default(key, val, parent)
def add_default(self, key, val, parent="Control Panel"): def add_default(self, key, val, parent="Control Panel"):
d = webnotes.doc('DefaultValue')
d.parent = parent
d.parenttype = 'Control Panel' # does not matter
d.parentfield = 'system_defaults'
d.defkey = key
d.defvalue = val
d.save(1)
webnotes.clear_cache()
import webnotes.defaults
webnotes.defaults.add_default(key, val, parent)
def get_default(self, key, parent="Control Panel"): def get_default(self, key, parent="Control Panel"):
"""get default value""" """get default value"""
ret = self.get_defaults_as_list(key, parent)
return ret and ret[0] or None
import webnotes.defaults
d = webnotes.defaults.get_default(key, val, parent)
return isinstance(d, list) and d[0] or d
def get_defaults_as_list(self, key, parent="Control Panel"): def get_defaults_as_list(self, key, parent="Control Panel"):
ret = [r[0] for r in self.sql("""select defvalue from \
tabDefaultValue where defkey=%s and parent=%s""", (key, parent))]
if key in ["owner", "user"] and webnotes.session:
ret.append(webnotes.session.user)
return ret
import webnotes.defaults
d = webnotes.defaults.get_default(key, val, parent)
return isinstance(d, basestring) and [d] or d
def get_defaults(self, key=None, parent="Control Panel"): def get_defaults(self, key=None, parent="Control Panel"):
"""get all defaults""" """get all defaults"""
import webnotes.defaults
if key: if key:
return self.get_default(key, parent)
return webnotes.defaults.get_defaults(parent).get(key)
else: else:
res = self.sql("""select defkey, defvalue from `tabDefaultValue`
where parent = %s""", parent, as_dict=1)
defaults = webnotes._dict({})
for d in res:
if d.defkey in defaults:
# listify
if isinstance(defaults[d.defkey], basestring):
defaults[d.defkey] = [defaults[d.defkey]]
defaults[d.defkey].append(d.defvalue)
else:
defaults[d.defkey] = d.defvalue

return defaults
return webnotes.defaults.get_defaults(parent)


def begin(self): def begin(self):
return # not required return # not required


+ 107
- 0
webnotes/defaults.py View File

@@ -0,0 +1,107 @@
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)
if d is None:
d = get_global_default(key)
return isinstance(d, list) and d[0] or d

def get_user_defaults(key, user=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
def get_all_user_defaults(user=None):
userd = get_defaults(user or webnotes.session.user)
globald = get_defaults()
globald.update(userd)
return globald

def clear_user_default(key, user=None):
clear_default(key, 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
def get_global_defaults(key):
d = get_defaults().get(key, None)
return isinstance(d, basestring) and [d] 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, parent="Control Panel"):
webnotes.conn.sql("""delete from tabDefaultValue where defkey=%s and parent=%s""", (key, parent))
clear_cache(parent)
def get_defaults(parent="Control Panel"):
"""get all defaults"""
defaults = webnotes.cache().get_value("__defaults:" + parent)
if not defaults:
if parent=="Control Panel":
res = webnotes.conn.sql("""select defkey, defvalue from `tabDefaultValue`
where parent = %s order by creation""", parent, as_dict=1)
else:
roles = webnotes.get_roles()
res = webnotes.conn.sql("""select defkey, defvalue from `tabDefaultValue`
where parent in ('%s') order by creation""" % ("', '".join(roles)), as_dict=1)

defaults = webnotes._dict({})
for d in res:
if d.defkey in defaults:
# listify
if isinstance(defaults[d.defkey], basestring):
defaults[d.defkey] = [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):
webnotes.cache().delete_value("__defaults:" + parent)
webnotes.clear_cache()

+ 2
- 2
webnotes/handler.py View File

@@ -73,7 +73,7 @@ def dt_map():
import webnotes.model.utils import webnotes.model.utils
from webnotes.model.code import get_obj from webnotes.model.code import get_obj
from webnotes.model.doc import Document from webnotes.model.doc import Document
from webnotes.model.wrapper import ModelWrapper
from webnotes.model.bean import Bean
form_dict = webnotes.form_dict form_dict = webnotes.form_dict
@@ -84,7 +84,7 @@ def dt_map():
from_to_list = form_dict.get('from_to_list') from_to_list = form_dict.get('from_to_list')
dm = get_obj('DocType Mapper', from_doctype +'-' + to_doctype) dm = get_obj('DocType Mapper', from_doctype +'-' + to_doctype)
dl = dm.dt_map(from_doctype, to_doctype, from_docname, Document(fielddata = dt_list[0]), (len(dt_list) > 1) and ModelWrapper(dt_list).doclist or [], from_to_list)
dl = dm.dt_map(from_doctype, to_doctype, from_docname, Document(fielddata = dt_list[0]), (len(dt_list) > 1) and Bean(dt_list).doclist or [], from_to_list)
webnotes.response['docs'] = dl webnotes.response['docs'] = dl




+ 1
- 1
webnotes/model/__init__.py View File

@@ -37,7 +37,7 @@ def insert(doclist):
else: else:
d.fields["__islocal"] = 1 d.fields["__islocal"] = 1
wrapper = webnotes.model_wrapper(doclist)
wrapper = webnotes.bean(doclist)
wrapper.save() wrapper.save()
return wrapper return wrapper


webnotes/model/wrapper.py → webnotes/model/bean.py View File

@@ -22,7 +22,7 @@


from __future__ import unicode_literals from __future__ import unicode_literals
""" """
Transactions are defined as collection of classes, a ModelWrapper represents collection of Document
Transactions are defined as collection of classes, a Bean represents collection of Document
objects for a transaction with main and children. objects for a transaction with main and children.


Group actions like save, etc are performed on doclists Group actions like save, etc are performed on doclists
@@ -33,7 +33,7 @@ from webnotes import _
from webnotes.utils import cint from webnotes.utils import cint
from webnotes.model.doc import Document from webnotes.model.doc import Document


class ModelWrapper:
class Bean:
""" """
Collection of Documents with one parent and multiple children Collection of Documents with one parent and multiple children
""" """
@@ -306,9 +306,9 @@ class ModelWrapper:
def clone(source_wrapper): def clone(source_wrapper):
""" Copy previous invoice and change dates""" """ Copy previous invoice and change dates"""
if isinstance(source_wrapper, list): if isinstance(source_wrapper, list):
source_wrapper = ModelWrapper(source_wrapper)
source_wrapper = Bean(source_wrapper)
new_wrapper = ModelWrapper(source_wrapper.doclist.copy())
new_wrapper = Bean(source_wrapper.doclist.copy())
new_wrapper.doc.fields.update({ new_wrapper.doc.fields.update({
"amended_from": None, "amended_from": None,
"amendment_date": None, "amendment_date": None,

+ 1
- 1
webnotes/model/code.py View File

@@ -32,7 +32,7 @@ methods in following modules are imported for backward compatibility
* webnotes.* * webnotes.*
* webnotes.utils.* * webnotes.utils.*
* webnotes.model.doc.* * webnotes.model.doc.*
* webnotes.model.wrapper.*
* webnotes.model.bean.*
""" """
custom_class = ''' custom_class = '''
import webnotes import webnotes


+ 1
- 1
webnotes/model/sync.py View File

@@ -60,7 +60,7 @@ def sync_doctype(module_name, docname, force=0):
def merge_doctype(doclist, force=False): def merge_doctype(doclist, force=False):
modified = doclist[0]['modified'] modified = doclist[0]['modified']
if not doclist: if not doclist:
raise Exception('ModelWrapper could not be evaluated')
raise Exception('Bean could not be evaluated')


db_modified = str(webnotes.conn.get_value(doclist[0].get('doctype'), db_modified = str(webnotes.conn.get_value(doclist[0].get('doctype'),
doclist[0].get('name'), 'modified')) doclist[0].get('name'), 'modified'))


+ 1
- 1
webnotes/profile.py View File

@@ -208,7 +208,7 @@ def get_system_managers():
return [p[0] for p in system_managers] return [p[0] for p in system_managers]
def add_role(profile, role): def add_role(profile, role):
profile_wrapper = webnotes.model_wrapper("Profile", profile)
profile_wrapper = webnotes.bean("Profile", profile)
profile_wrapper.doclist.append({ profile_wrapper.doclist.append({
"doctype": "UserRole", "doctype": "UserRole",
"parentfield": "user_roles", "parentfield": "user_roles",


+ 1
- 1
webnotes/sessions.py View File

@@ -53,7 +53,7 @@ def clear_cache(user=None):
for sess in webnotes.conn.sql("""select user, sid from tabSessions""", as_dict=1): for sess in webnotes.conn.sql("""select user, sid from tabSessions""", as_dict=1):
cache.delete_value("sesssion:" + sess.sid) cache.delete_value("sesssion:" + sess.sid)
cache.delete_value("bootinfo:" + sess.user) cache.delete_value("bootinfo:" + sess.user)
def clear_sessions(user=None, keep_current=False): def clear_sessions(user=None, keep_current=False):
if not user: if not user:
user = webnotes.session.user user = webnotes.session.user


+ 8
- 2
webnotes/test_runner.py View File

@@ -69,7 +69,7 @@ def make_test_objects(doctype, test_records):
for doclist in test_records: for doclist in test_records:
if not "doctype" in doclist[0]: if not "doctype" in doclist[0]:
doclist[0]["doctype"] = doctype doclist[0]["doctype"] = doctype
d = webnotes.model_wrapper((webnotes.doclist(doclist)).copy())
d = webnotes.bean((webnotes.doclist(doclist)).copy())
if webnotes.test_objects.get(d.doc.doctype): if webnotes.test_objects.get(d.doc.doctype):
# do not create test records, if already exists # do not create test records, if already exists
return [] return []
@@ -100,7 +100,7 @@ def export_doc(doctype, docname):
make_test_records(doctype) make_test_records(doctype)
meta = webnotes.get_doctype(doctype) meta = webnotes.get_doctype(doctype)
for d in webnotes.model_wrapper(doctype, docname):
for d in webnotes.bean(doctype, docname):
new_doc = {} new_doc = {}
for key, val in d.fields.iteritems(): for key, val in d.fields.iteritems():
if val and key not in ignore_list: if val and key not in ignore_list:
@@ -157,6 +157,7 @@ if __name__=="__main__":
parser.add_argument('-v', '--verbose', default=False, action="store_true") parser.add_argument('-v', '--verbose', default=False, action="store_true")
parser.add_argument('-e', '--export', nargs=2, metavar="DOCTYPE DOCNAME") parser.add_argument('-e', '--export', nargs=2, metavar="DOCTYPE DOCNAME")
parser.add_argument('-a', '--all', default=False, action="store_true") parser.add_argument('-a', '--all', default=False, action="store_true")
parser.add_argument('-m', '--module', default=1, metavar="MODULE")


args = parser.parse_args() args = parser.parse_args()
webnotes.print_messages = args.verbose webnotes.print_messages = args.verbose
@@ -170,5 +171,10 @@ if __name__=="__main__":
run_all_tests(args.verbose) run_all_tests(args.verbose)
elif args.export: elif args.export:
export_doc(args.export[0], args.export[1]) export_doc(args.export[0], args.export[1])
elif args.module:
test_suite = unittest.TestSuite()
__import__(args.module)
test_suite.addTest(unittest.TestLoader().loadTestsFromModule(sys.modules[args.module]))
unittest.TextTestRunner(verbosity=1+(args.verbose and 1 or 0)).run(test_suite)

+ 37
- 0
webnotes/tests/test_defaults.py View File

@@ -0,0 +1,37 @@
import webnotes, unittest

from webnotes.defaults import *

class TestDefaults(unittest.TestCase):
def test_global(self):
set_global_default("key1", "value1")
self.assertEquals(get_global_default("key1"), "value1")

set_global_default("key1", "value2")
self.assertEquals(get_global_default("key1"), "value2")

add_global_default("key1", "value3")
self.assertEquals(get_global_default("key1"), "value2")
self.assertEquals(get_global_defaults("key1"), ["value2", "value3"])

def test_user(self):
set_user_default("key1", "2value1")
self.assertEquals(get_user_default("key1"), "2value1")

set_user_default("key1", "2value2")
self.assertEquals(get_user_default("key1"), "2value2")

add_user_default("key1", "3value3")
self.assertEquals(get_user_default("key1"), "2value2")
self.assertEquals(get_user_defaults("key1"), ["2value2", "3value3"])
def test_global_if_not_user(self):
set_global_default("key4", "value4")
self.assertEquals(get_user_default("key4"), "value4")

def test_clear(self):
set_user_default("key5", "value5")
self.assertEquals(get_user_default("key5"), "value5")
clear_user_default("key5")
self.assertEquals(get_user_default("key5"), None)

+ 1
- 1
webnotes/translate.py View File

@@ -109,7 +109,7 @@ def build_for_doc_from_database(fields):


for item in webnotes.conn.sql("""select name from `tab%s`""" % fields.doctype, as_dict=1): for item in webnotes.conn.sql("""select name from `tab%s`""" % fields.doctype, as_dict=1):
messages = [] messages = []
doclist = webnotes.model_wrapper(fields.doctype, item.name).doclist
doclist = webnotes.bean(fields.doctype, item.name).doclist


for doc in doclist: for doc in doclist:
if doc.doctype in fields: if doc.doctype in fields:


+ 2
- 2
webnotes/utils/nestedset.py View File

@@ -33,7 +33,7 @@ from __future__ import unicode_literals


import webnotes, unittest import webnotes, unittest
from webnotes import msgprint from webnotes import msgprint
from webnotes.model.wrapper import ModelWrapper
from webnotes.model.bean import Bean
from webnotes.model.doc import Document from webnotes.model.doc import Document


class TestNSM(unittest.TestCase): class TestNSM(unittest.TestCase):
@@ -53,7 +53,7 @@ class TestNSM(unittest.TestCase):
] ]
for d in self.data: for d in self.data:
self.__dict__[d[0]] = ModelWrapper([Document(fielddata = {
self.__dict__[d[0]] = Bean([Document(fielddata = {
"doctype": "Item Group", "item_group_name": d[0], "parent_item_group": d[1], "doctype": "Item Group", "item_group_name": d[0], "parent_item_group": d[1],
"__islocal": 1 "__islocal": 1
})]) })])


+ 1
- 1
webnotes/widgets/calendar.py View File

@@ -30,7 +30,7 @@ def update_event(args, field_map):
args = webnotes._dict(json.loads(args)) args = webnotes._dict(json.loads(args))
field_map = webnotes._dict(json.loads(field_map)) field_map = webnotes._dict(json.loads(field_map))
w = webnotes.model_wrapper(args.doctype, args.name)
w = webnotes.bean(args.doctype, args.name)
w.doc.fields[field_map.start] = args[field_map.start] w.doc.fields[field_map.start] = args[field_map.start]
w.doc.fields[field_map.end] = args[field_map.end] w.doc.fields[field_map.end] = args[field_map.end]
w.save() w.save()


+ 1
- 1
webnotes/widgets/form/load.py View File

@@ -92,7 +92,7 @@ def load_single_doc(dt, dn, user):
return None return None


try: try:
dl = webnotes.model_wrapper(dt, dn).doclist
dl = webnotes.bean(dt, dn).doclist
except Exception, e: except Exception, e:
webnotes.errprint(webnotes.utils.getTraceback()) webnotes.errprint(webnotes.utils.getTraceback())
webnotes.msgprint('Error in script while loading') webnotes.msgprint('Error in script while loading')


+ 2
- 2
webnotes/widgets/form/run_method.py View File

@@ -30,7 +30,7 @@ def runserverobj():
Run server objects Run server objects
""" """
import webnotes.model.code import webnotes.model.code
from webnotes.model.wrapper import ModelWrapper
from webnotes.model.bean import Bean
from webnotes.utils import cint from webnotes.utils import cint


wrapper = None wrapper = None
@@ -44,7 +44,7 @@ def runserverobj():
so = webnotes.model.code.get_obj(dt, dn) so = webnotes.model.code.get_obj(dt, dn)


else: else:
wrapper = ModelWrapper()
wrapper = Bean()
wrapper.from_compressed(webnotes.form_dict.get('docs'), dn) wrapper.from_compressed(webnotes.form_dict.get('docs'), dn)
if not wrapper.has_read_perm(): if not wrapper.has_read_perm():
webnotes.msgprint(_("No Permission"), raise_exception = True) webnotes.msgprint(_("No Permission"), raise_exception = True)


+ 2
- 2
webnotes/widgets/form/save.py View File

@@ -27,7 +27,7 @@ import webnotes
def savedocs(): def savedocs():
"""save / submit / update doclist""" """save / submit / update doclist"""
try: try:
wrapper = webnotes.model_wrapper()
wrapper = webnotes.bean()
wrapper.from_compressed(webnotes.form_dict.docs, webnotes.form_dict.docname) wrapper.from_compressed(webnotes.form_dict.docs, webnotes.form_dict.docname)


# action # action
@@ -48,7 +48,7 @@ def savedocs():
def cancel(doctype=None, name=None): def cancel(doctype=None, name=None):
"""cancel a doclist""" """cancel a doclist"""
try: try:
wrapper = webnotes.model_wrapper(doctype, name)
wrapper = webnotes.bean(doctype, name)
wrapper.cancel() wrapper.cancel()
send_updated_docs(wrapper) send_updated_docs(wrapper)


+ 1
- 1
webnotes/widgets/reportview.py View File

@@ -243,7 +243,7 @@ def save_report():
d.ref_doctype = data['doctype'] d.ref_doctype = data['doctype']
d.json = data['json'] d.json = data['json']
webnotes.model_wrapper([d]).save()
webnotes.bean([d]).save()
webnotes.msgprint("%s saved." % d.name) webnotes.msgprint("%s saved." % d.name)
return d.name return d.name




Loading…
Cancel
Save