[IMP]add session tag for yaml and based on session user whole yaml tested

bzr revid: sgo@tinyerp.com-20130204093324-6jdty26tepmvjhhs
This commit is contained in:
sgo@tinyerp.com 2013-02-04 15:03:24 +05:30
parent 4144c0fc76
commit 1109b4cb35
3 changed files with 28 additions and 4 deletions

View File

@ -17,7 +17,7 @@
"access_ir_model_constraint","ir_model_constraint","model_ir_model_constraint",,1,0,0,0
"access_ir_model_relation","ir_model_relation","model_ir_model_relation",,1,0,0,0
"access_ir_model_access_all","ir_model_access_all","model_ir_model_access",,1,0,0,0
"access_ir_model_data_all","ir_model_data all","model_ir_model_data",,1,0,0,0
"access_ir_model_data_all","ir_model_data all","model_ir_model_data",,1,1,1,1
"access_ir_model_fields_all","ir_model_fields all","model_ir_model_fields",,1,0,0,0
"access_ir_module_category_group_user","ir_module_category group_user","model_ir_module_category",,1,0,0,0
"access_ir_module_module_group_user","ir_module_module group_user","model_ir_module_module","group_system",1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
17 access_ir_model_constraint ir_model_constraint model_ir_model_constraint 1 0 0 0
18 access_ir_model_relation ir_model_relation model_ir_model_relation 1 0 0 0
19 access_ir_model_access_all ir_model_access_all model_ir_model_access 1 0 0 0
20 access_ir_model_data_all ir_model_data all model_ir_model_data 1 0 1 0 1 0 1
21 access_ir_model_fields_all ir_model_fields all model_ir_model_fields 1 0 0 0
22 access_ir_module_category_group_user ir_module_category group_user model_ir_module_category 1 0 0 0
23 access_ir_module_module_group_user ir_module_module group_user model_ir_module_module group_system 1 1 1 1

View File

@ -88,6 +88,9 @@ def is_ir_set(node):
def is_string(node):
return isinstance(node, basestring)
def is_session(node):
return _is_yaml_mapping(node, yaml_tag.Session)
class RecordDictWrapper(dict):
"""
Used to pass a record as locals in eval:
@ -324,7 +327,7 @@ class YamlInterpreter(object):
record_dict = self._create_record(model, fields, view_info, default=default)
_logger.debug("RECORD_DICT %s" % record_dict)
id = self.pool.get('ir.model.data')._update(self.cr, SUPERUSER_ID, record.model, \
id = self.pool.get('ir.model.data')._update(self.cr, self.uid, record.model, \
self.module, record_dict, record.id, noupdate=self.isnoupdate(record), mode=self.mode, context=context)
self.id_map[record.id] = int(id)
if config.get('import_partial'):
@ -760,7 +763,7 @@ class YamlInterpreter(object):
keyword = 'client_action_relate'
value = 'ir.actions.act_window,%s' % id
replace = node.replace or True
self.pool.get('ir.model.data').ir_set(self.cr, SUPERUSER_ID, 'action', keyword, \
self.pool.get('ir.model.data').ir_set(self.cr, self.uid, 'action', keyword, \
node.id, [node.src_model], value, replace=replace, noupdate=self.isnoupdate(node), isobject=True, xml_id=node.id)
# TODO add remove ir.model.data
@ -775,10 +778,16 @@ class YamlInterpreter(object):
self.pool.get(node.model).unlink(self.cr, self.uid, ids)
else:
self._log("Record not deleted.")
def process_session(self, node):
record, fields = node.items()[0]
uid = self.get_id(record.uid)
self.uid = uid
_logger.debug("RECORD_DICT %s" % uid)
def process_url(self, node):
self.validate_xml_id(node.id)
res = {'name': node.name, 'url': node.url, 'target': node.target}
id = self.pool.get('ir.model.data')._update(self.cr, SUPERUSER_ID, \
@ -889,6 +898,8 @@ class YamlInterpreter(object):
self.process_act_window(node)
elif is_report(node):
self.process_report(node)
elif is_session(node):
self.process_session(node)
elif is_workflow(node):
if isinstance(node, types.DictionaryType):
self.process_workflow(node)

View File

@ -32,6 +32,13 @@ class Record(YamlTag):
def __str__(self):
return '!record {model: %s, id: %s}:' % (str(self.model,), str(self.id,))
class Session(YamlTag):
def __init__(self, uid, **kwargs):
self.uid = uid
super(Session, self).__init__(**kwargs)
def __str__(self):
return '!session {uid: %s}:' % (str(self.uid,))
class Python(YamlTag):
def __init__(self, model, severity=logging.ERROR, name="", **kwargs):
self.model= model
@ -113,6 +120,11 @@ def record_constructor(loader, node):
assert "id" in kwargs, "'id' argument is required for !record"
return Record(**kwargs)
def session_constructor(loader, node):
kwargs = loader.construct_mapping(node)
assert "uid" in kwargs, "'uid' argument is required for !session"
return Session(**kwargs)
def python_constructor(loader, node):
kwargs = loader.construct_mapping(node)
return Python(**kwargs)
@ -182,6 +194,7 @@ def add_constructors():
yaml.add_constructor(u"!eval", eval_constructor)
yaml.add_multi_constructor(u"!ref", ref_constructor)
yaml.add_constructor(u"!ir_set", ir_set_constructor)
yaml.add_constructor(u"!session", session_constructor)
add_constructors()