From 1109b4cb35a37ac09cca4754e9e822ea81d0ce07 Mon Sep 17 00:00:00 2001 From: "sgo@tinyerp.com" <> Date: Mon, 4 Feb 2013 15:03:24 +0530 Subject: [PATCH 1/6] [IMP]add session tag for yaml and based on session user whole yaml tested bzr revid: sgo@tinyerp.com-20130204093324-6jdty26tepmvjhhs --- .../addons/base/security/ir.model.access.csv | 2 +- openerp/tools/yaml_import.py | 17 ++++++++++++++--- openerp/tools/yaml_tag.py | 13 +++++++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index 35d5b82bc41..3a29108d61e 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -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 diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index 3172caac1f4..1629ee1b9be 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -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) diff --git a/openerp/tools/yaml_tag.py b/openerp/tools/yaml_tag.py index b22787ddf98..c4d5f251479 100644 --- a/openerp/tools/yaml_tag.py +++ b/openerp/tools/yaml_tag.py @@ -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() From 74a681e9dbafa5759ada82ec9262fe893ed99f9f Mon Sep 17 00:00:00 2001 From: "sgo@tinyerp.com" <> Date: Mon, 18 Feb 2013 11:40:14 +0530 Subject: [PATCH 2/6] [IMP]revert changes as per new spec bzr revid: sgo@tinyerp.com-20130218061014-lg6uk108vajx43mo --- openerp/tools/yaml_import.py | 13 +------------ openerp/tools/yaml_tag.py | 13 ------------- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index 1629ee1b9be..9a8b2a6cd8d 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -88,9 +88,6 @@ 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: @@ -763,7 +760,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, self.uid, 'action', keyword, \ + self.pool.get('ir.model.data').ir_set(self.cr, SUPERUSER_ID, '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 @@ -779,12 +776,6 @@ class YamlInterpreter(object): 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) @@ -898,8 +889,6 @@ 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) diff --git a/openerp/tools/yaml_tag.py b/openerp/tools/yaml_tag.py index c4d5f251479..b22787ddf98 100644 --- a/openerp/tools/yaml_tag.py +++ b/openerp/tools/yaml_tag.py @@ -32,13 +32,6 @@ 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 @@ -120,11 +113,6 @@ 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) @@ -194,7 +182,6 @@ 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() From 095af7d4932006e94ec30d06889ea6e86594c3b4 Mon Sep 17 00:00:00 2001 From: "sgo@tinyerp.com" <> Date: Mon, 18 Feb 2013 17:02:38 +0530 Subject: [PATCH 3/6] [IMP]remove extra spaces bzr revid: sgo@tinyerp.com-20130218113238-x6wf0vxjmv0etwft --- openerp/tools/yaml_import.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index 9a8b2a6cd8d..46168f40bae 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -775,10 +775,9 @@ class YamlInterpreter(object): self.pool.get(node.model).unlink(self.cr, self.uid, ids) else: self._log("Record not deleted.") - + 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, \ From d947b32b96e4e5934483ce2a3b57d4a0697daa85 Mon Sep 17 00:00:00 2001 From: "sgo@tinyerp.com" <> Date: Tue, 30 Apr 2013 16:20:12 +0530 Subject: [PATCH 4/6] [IMP]remove delete access rights from ir_model_data for all user which are not needed bzr revid: sgo@tinyerp.com-20130430105012-damnh3zqdr9wdap1 --- openerp/addons/base/security/ir.model.access.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index 3a29108d61e..e104f485a51 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -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,1,1,1 +"access_ir_model_data_all","ir_model_data all","model_ir_model_data",,1,1,1,0 "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 From dd84b00b0b122b2e80d0be4b1ec6f45bb37a683f Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Wed, 11 Sep 2013 13:21:08 +0200 Subject: [PATCH 5/6] [IMP] revert changes in yaml_import bzr revid: mat@openerp.com-20130911112108-z0ivfwqy1zlqhnec --- openerp/tools/yaml_import.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index b115799129c..aba9db25f13 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -322,7 +322,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['ir.model.data']._update(self.cr, self.uid, record.model, \ + id = self.pool['ir.model.data']._update(self.cr, SUPERUSER_ID, 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'): @@ -781,6 +781,7 @@ class YamlInterpreter(object): def process_url(self, node): self.validate_xml_id(node.id) + res = {'name': node.name, 'url': node.url, 'target': node.target} id = self.pool['ir.model.data']._update(self.cr, SUPERUSER_ID, \ From 5175ce9e77f6343637309c7e05bc178a07768d2e Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Thu, 12 Sep 2013 09:53:53 +0200 Subject: [PATCH 6/6] [IMP] ir_model_data: restrict ir_model_data rule to read only for user and add create to group_user bzr revid: mat@openerp.com-20130912075353-s1hjsz3b0lvzhzj3 --- openerp/addons/base/security/ir.model.access.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index 77687c09ae1..fe5d622ca82 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -17,7 +17,8 @@ "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,1,1,0 +"access_ir_model_data_all","ir_model_data all","model_ir_model_data",,1,0,0,0 +"access_ir_model_data_user","ir_model_data user","model_ir_model_data",base.group_user,1,0,1,0 "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