[IMP] replace all tests like 'registry.get(X)' by 'X in registry' where X is non...
authorRaphael Collet <rco@openerp.com>
Fri, 29 Mar 2013 14:07:23 +0000 (15:07 +0100)
committerRaphael Collet <rco@openerp.com>
Fri, 29 Mar 2013 14:07:23 +0000 (15:07 +0100)
bzr revid: rco@openerp.com-20130329140723-dnrl02saky570xg0

21 files changed:
openerp/addons/base/ir/ir_actions.py
openerp/addons/base/ir/ir_attachment.py
openerp/addons/base/ir/ir_cron.py
openerp/addons/base/ir/ir_model.py
openerp/addons/base/ir/ir_rule.py
openerp/addons/base/ir/ir_translation.py
openerp/addons/base/ir/ir_ui_menu.py
openerp/addons/base/ir/ir_ui_view.py
openerp/addons/base/ir/ir_values.py
openerp/addons/base/module/report/ir_module_reference_print.py
openerp/modules/loading.py
openerp/osv/expression.py
openerp/osv/fields.py
openerp/osv/orm.py
openerp/report/print_xml.py
openerp/service/model.py
openerp/tests/test_uninstall.py
openerp/tools/translate.py
openerp/tools/yaml_import.py
openerpcommand/model.py
openerpcommand/read.py

index cde6f6f..fb294ee 100644 (file)
@@ -185,9 +185,9 @@ class act_window(osv.osv):
 
     def _check_model(self, cr, uid, ids, context=None):
         for action in self.browse(cr, uid, ids, context):
-            if not self.pool.get(action.res_model):
+            if action.res_model not in self.pool:
                 return False
-            if action.src_model and not self.pool.get(action.src_model):
+            if action.src_model and action.src_model not in self.pool:
                 return False
         return True
 
@@ -530,7 +530,7 @@ class actions_server(osv.osv):
     }
 
     def get_email(self, cr, uid, action, context):
-        obj_pool = self.pool.get(action.model_id.model)
+        obj_pool = self.pool[action.model_id.model]
         id = context.get('active_id')
         obj = obj_pool.browse(cr, uid, id)
 
@@ -550,7 +550,7 @@ class actions_server(osv.osv):
         return obj
 
     def get_mobile(self, cr, uid, action, context):
-        obj_pool = self.pool.get(action.model_id.model)
+        obj_pool = self.pool[action.model_id.model]
         id = context.get('active_id')
         obj = obj_pool.browse(cr, uid, id)
 
@@ -574,7 +574,7 @@ class actions_server(osv.osv):
             context = {}
 
         def merge(match):
-            obj_pool = self.pool.get(action.model_id.model)
+            obj_pool = self.pool[action.model_id.model]
             id = context.get('active_id')
             obj = obj_pool.browse(cr, uid, id)
             exp = str(match.group()[2:-2]).strip()
@@ -607,7 +607,7 @@ class actions_server(osv.osv):
         user = self.pool.get('res.users').browse(cr, uid, uid)
         for action in self.browse(cr, uid, ids, context):
             obj = None
-            obj_pool = self.pool.get(action.model_id.model)
+            obj_pool = self.pool[action.model_id.model]
             if context.get('active_model') == action.model_id.model and context.get('active_id'):
                 obj = obj_pool.browse(cr, uid, context['active_id'], context=context)
             cxt = {
@@ -628,8 +628,7 @@ class actions_server(osv.osv):
             if action.state=='client_action':
                 if not action.action_id:
                     raise osv.except_osv(_('Error'), _("Please specify an action to launch !"))
-                return self.pool.get(action.action_id.type)\
-                    .read(cr, uid, action.action_id.id, context=context)
+                return self.pool[action.action_id.type].read(cr, uid, action.action_id.id, context=context)
 
             if action.state=='code':
                 eval(action.code, cxt, mode="exec", nocopy=True) # nocopy allows to return 'action'
@@ -708,16 +707,16 @@ class actions_server(osv.osv):
 
                 if not action.write_id:
                     if not action.srcmodel_id:
-                        obj_pool = self.pool.get(action.model_id.model)
+                        obj_pool = self.pool[action.model_id.model]
                         obj_pool.write(cr, uid, [context.get('active_id')], res)
                     else:
                         write_id = context.get('active_id')
-                        obj_pool = self.pool.get(action.srcmodel_id.model)
+                        obj_pool = self.pool[action.srcmodel_id.model]
                         obj_pool.write(cr, uid, [write_id], res)
 
                 elif action.write_id:
-                    obj_pool = self.pool.get(action.srcmodel_id.model)
-                    rec = self.pool.get(action.model_id.model).browse(cr, uid, context.get('active_id'))
+                    obj_pool = self.pool[action.srcmodel_id.model]
+                    rec = self.pool[action.model_id.model].browse(cr, uid, context.get('active_id'))
                     id = eval(action.write_id, {'object': rec})
                     try:
                         id = int(id)
@@ -739,10 +738,10 @@ class actions_server(osv.osv):
                         expr = exp.value
                     res[exp.col1.name] = expr
 
-                obj_pool = self.pool.get(action.srcmodel_id.model)
+                obj_pool = self.pool[action.srcmodel_id.model]
                 res_id = obj_pool.create(cr, uid, res)
                 if action.record_id:
-                    self.pool.get(action.model_id.model).write(cr, uid, [context.get('active_id')], {action.record_id.name:res_id})
+                    self.pool[action.model_id.model].write(cr, uid, [context.get('active_id')], {action.record_id.name:res_id})
 
             if action.state == 'object_copy':
                 res = {}
@@ -756,7 +755,7 @@ class actions_server(osv.osv):
 
                 model = action.copy_object.split(',')[0]
                 cid = action.copy_object.split(',')[1]
-                obj_pool = self.pool.get(model)
+                obj_pool = self.pool[model]
                 obj_pool.copy(cr, uid, int(cid), res)
 
         return False
@@ -813,7 +812,7 @@ Launch Manually Once: after having been launched manually, it sets automatically
         # Load action
         act_type = self.pool.get('ir.actions.actions').read(cr, uid, wizard.action_id.id, ['type'], context=context)
 
-        res = self.pool.get(act_type['type']).read(cr, uid, wizard.action_id.id, [], context=context)
+        res = self.pool[act_type['type']].read(cr, uid, wizard.action_id.id, [], context=context)
         if act_type['type'] != 'ir.actions.act_window':
             return res
         res.setdefault('context','{}')
index 1cd9ed9..1010466 100644 (file)
@@ -50,7 +50,7 @@ class ir_attachment(osv.osv):
             model_object = attachment.res_model
             res_id = attachment.res_id
             if model_object and res_id:
-                model_pool = self.pool.get(model_object)
+                model_pool = self.pool[model_object]
                 res = model_pool.name_get(cr,uid,[res_id],context)
                 res_name = res and res[0][1] or False
                 if res_name:
@@ -205,9 +205,9 @@ class ir_attachment(osv.osv):
         for model, mids in res_ids.items():
             # ignore attachments that are not attached to a resource anymore when checking access rights
             # (resource was deleted but attachment was not)
-            mids = self.pool.get(model).exists(cr, uid, mids)
+            mids = self.pool[model].exists(cr, uid, mids)
             ima.check(cr, uid, model, mode)
-            self.pool.get(model).check_access_rule(cr, uid, mids, mode, context=context)
+            self.pool[model].check_access_rule(cr, uid, mids, mode, context=context)
 
     def _search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False, access_rights_uid=None):
         ids = super(ir_attachment, self)._search(cr, uid, args, offset=offset,
@@ -250,7 +250,7 @@ class ir_attachment(osv.osv):
 
             # filter ids according to what access rules permit
             target_ids = targets.keys()
-            allowed_ids = self.pool.get(model).search(cr, uid, [('id', 'in', target_ids)], context=context)
+            allowed_ids = self.pool[model].search(cr, uid, [('id', 'in', target_ids)], context=context)
             disallowed_ids = set(target_ids).difference(allowed_ids)
             for res_id in disallowed_ids:
                 for attach_id in targets[res_id]:
index c3f7ccc..eef43d5 100644 (file)
@@ -124,21 +124,23 @@ class ir_cron(osv.osv):
             args = str2tuple(args)
             openerp.modules.registry.RegistryManager.check_registry_signaling(cr.dbname)
             registry = openerp.registry(cr.dbname)
-            model = registry.get(model_name)
-            if model and hasattr(model, method_name):
-                method = getattr(model, method_name)
-                log_depth = (None if _logger.isEnabledFor(logging.DEBUG) else 1)
-                netsvc.log(_logger, logging.DEBUG, 'cron.object.execute', (cr.dbname,uid,'*',model_name,method_name)+tuple(args), depth=log_depth)
-                if _logger.isEnabledFor(logging.DEBUG):
-                    start_time = time.time()
-                method(cr, uid, *args)
-                if _logger.isEnabledFor(logging.DEBUG):
-                    end_time = time.time()
-                    _logger.debug('%.3fs (%s, %s)' % (end_time - start_time, model_name, method_name))
-                openerp.modules.registry.RegistryManager.signal_caches_change(cr.dbname)
+            if model_name in registry:
+                model = registry[model_name]
+                if hasattr(model, method_name):
+                    log_depth = (None if _logger.isEnabledFor(logging.DEBUG) else 1)
+                    netsvc.log(_logger, logging.DEBUG, 'cron.object.execute', (cr.dbname,uid,'*',model_name,method_name)+tuple(args), depth=log_depth)
+                    if _logger.isEnabledFor(logging.DEBUG):
+                        start_time = time.time()
+                    getattr(model, method_name)(cr, uid, *args)
+                    if _logger.isEnabledFor(logging.DEBUG):
+                        end_time = time.time()
+                        _logger.debug('%.3fs (%s, %s)' % (end_time - start_time, model_name, method_name))
+                    openerp.modules.registry.RegistryManager.signal_caches_change(cr.dbname)
+                else:
+                    msg = "Method `%s.%s` does not exist." % (model_name, method_name)
+                    _logger.warning(msg)
             else:
-                msg = "Method `%s.%s` does not exist." % (model_name, method_name) \
-                    if model else "Model `%s` does not exist." % model_name
+                msg = "Model `%s` does not exist." % model_name
                 _logger.warning(msg)
         except Exception, e:
             self._handle_callback_exception(cr, uid, model_name, method_name, args, job_id, e)
index f0bacc1..a95d29a 100644 (file)
@@ -70,7 +70,7 @@ class ir_model(osv.osv):
         models = self.browse(cr, uid, ids, context=context)
         res = dict.fromkeys(ids)
         for model in models:
-            if self.pool.get(model.model):
+            if model.model in self.pool:
                 res[model.id] = self.pool[model.model].is_transient()
             else:
                 _logger.error('Missing model %s' % (model.model, ))
@@ -340,7 +340,7 @@ class ir_model_fields(osv.osv):
             if vals.get('relation',False) and not self.pool['ir.model'].search(cr, user, [('model','=',vals['relation'])]):
                 raise except_orm(_('Error'), _("Model %s does not exist!") % vals['relation'])
 
-            if self.pool.get(vals['model']):
+            if vals['model'] in self.pool:
                 self.pool[vals['model']].__init__(self.pool, cr)
                 #Added context to _auto_init for special treatment to custom field for select_level
                 ctx = dict(context,
@@ -367,7 +367,6 @@ class ir_model_fields(osv.osv):
                     raise except_orm(_('Error!'),  _('Renaming sparse field "%s" is not allowed')%field.name)
 
         column_rename = None # if set, *one* column can be renamed here
-        obj = None
         models_patch = {}    # structs of (obj, [(field, prop, change_to),..])
                              # data to be updated on the orm model
 
@@ -390,8 +389,7 @@ class ir_model_fields(osv.osv):
             checked_selection = False # need only check it once, so defer
 
             for item in self.browse(cr, user, ids, context=context):
-                if not (obj and obj._name == item.model):
-                    obj = self.pool.get(item.model)
+                obj = self.pool.get(item.model)
 
                 if item.state != 'manual':
                     raise except_orm(_('Error!'),
@@ -427,7 +425,7 @@ class ir_model_fields(osv.osv):
 
                 # We don't check the 'state', because it might come from the context
                 # (thus be set for multiple fields) and will be ignored anyway.
-                if obj:
+                if obj is not None:
                     models_patch.setdefault(obj._name, (obj,[]))
                     # find out which properties (per model) we need to update
                     for field_name, field_property, set_fn in model_props:
@@ -507,7 +505,7 @@ class ir_model_constraint(Model):
         ids.reverse()
         for data in self.browse(cr, uid, ids, context):
             model = data.model.model
-            model_obj = self.pool.get(model)
+            model_obj = self.pool[model]
             name = openerp.tools.ustr(data.name)
             typ = data.type
 
@@ -682,7 +680,7 @@ class ir_model_access(osv.osv):
             model_name = model
 
         # TransientModel records have no access rights, only an implicit access rule
-        if not self.pool.get(model_name):
+        if model_name not in self.pool:
             _logger.error('Missing model %s' % (model_name, ))
         elif self.pool[model_name].is_transient():
             return True
@@ -746,9 +744,8 @@ class ir_model_access(osv.osv):
     def call_cache_clearing_methods(self, cr):
         self.check.clear_cache(self)    # clear the cache of check function
         for model, method in self.__cache_clearing_methods:
-            object_ = self.pool.get(model)
-            if object_:
-                getattr(object_, method)()
+            if model in self.pool:
+                getattr(self.pool[model], method)()
 
     #
     # Check rights on actions
@@ -896,7 +893,7 @@ class ir_model_data(osv.osv):
         return super(ir_model_data,self).unlink(cr, uid, ids, context=context)
 
     def _update(self,cr, uid, model, module, values, xml_id=False, store=True, noupdate=False, mode='init', res_id=False, context=None):
-        model_obj = self.pool.get(model)
+        model_obj = self.pool[model]
         if not context:
             context = {}
         # records created during module install should not display the messages of OpenChatter
@@ -1114,7 +1111,7 @@ class ir_model_data(osv.osv):
                 to_unlink.append((model,res_id))
         if not config.get('import_partial'):
             for (model, res_id) in to_unlink:
-                if self.pool.get(model):
+                if model in self.pool:
                     _logger.info('Deleting %s@%s', res_id, model)
                     self.pool[model].unlink(cr, uid, [res_id])
 
index 7a6c79d..9926fd6 100644 (file)
@@ -65,7 +65,7 @@ class ir_rule(osv.osv):
         return res
 
     def _check_model_obj(self, cr, uid, ids, context=None):
-        return not any(self.pool.get(rule.model_id.model).is_transient() for rule in self.browse(cr, uid, ids, context))
+        return not any(self.pool[rule.model_id.model].is_transient() for rule in self.browse(cr, uid, ids, context))
 
     def _check_model_name(self, cr, uid, ids, context=None):
         # Don't allow rules on rules records (this model).
@@ -153,9 +153,9 @@ class ir_rule(osv.osv):
             # involve objects on which the real uid has no acces rights.
             # This means also there is no implicit restriction (e.g. an object
             # references another object the user can't see).
-            query = self.pool.get(model_name)._where_calc(cr, SUPERUSER_ID, dom, active_test=False)
+            query = self.pool[model_name]._where_calc(cr, SUPERUSER_ID, dom, active_test=False)
             return query.where_clause, query.where_clause_params, query.tables
-        return [], [], ['"'+self.pool.get(model_name)._table+'"']
+        return [], [], ['"' + self.pool[model_name]._table + '"']
 
     def unlink(self, cr, uid, ids, context=None):
         res = super(ir_rule, self).unlink(cr, uid, ids, context=context)
index 35547fe..5d71568 100644 (file)
@@ -334,7 +334,7 @@ class ir_translation(osv.osv):
         return result
 
     def translate_fields(self, cr, uid, model, id, field=None, context=None):
-        trans_model = self.pool.get(model)
+        trans_model = self.pool[model]
         domain = ['&', ('res_id', '=', id), ('name', '=like', model + ',%')]
         langs_ids = self.pool.get('res.lang').search(cr, uid, [('code', '!=', 'en_US')], context=context)
         if not langs_ids:
index 9537909..ac1d7b9 100644 (file)
@@ -289,8 +289,7 @@ class ir_ui_menu(osv.osv):
         res = dict.fromkeys(ids, False)
         for menu in self.browse(cr, uid, ids, context=context):
             if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model:
-                obj = self.pool.get(menu.action.res_model)
-                if obj and obj._needaction:
+                if menu.action.res_model in self.pool and self.pool[menu.action.res_model]._needaction:
                     res[menu.id] = True
         return res
 
@@ -307,14 +306,15 @@ class ir_ui_menu(osv.osv):
                 'needaction_counter': False,
             }
             if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model:
-                obj = self.pool.get(menu.action.res_model)
-                if obj and obj._needaction:
-                    if menu.action.type == 'ir.actions.act_window':
-                        dom = menu.action.domain and eval(menu.action.domain, {'uid': uid}) or []
-                    else:
-                        dom = eval(menu.action.params_store or '{}', {'uid': uid}).get('domain')
-                    res[menu.id]['needaction_enabled'] = obj._needaction
-                    res[menu.id]['needaction_counter'] = obj._needaction_count(cr, uid, dom, context=context)
+                if menu.action.res_model in self.pool:
+                    obj = self.pool[menu.action.res_model]
+                    if obj._needaction:
+                        if menu.action.type == 'ir.actions.act_window':
+                            dom = menu.action.domain and eval(menu.action.domain, {'uid': uid}) or []
+                        else:
+                            dom = eval(menu.action.params_store or '{}', {'uid': uid}).get('domain')
+                        res[menu.id]['needaction_enabled'] = obj._needaction
+                        res[menu.id]['needaction_counter'] = obj._needaction_count(cr, uid, dom, context=context)
         return res
 
     _columns = {
index 0b8ff4e..6a73c16 100644 (file)
@@ -122,7 +122,7 @@ class view(osv.osv):
                if no error occurred, else False.  
         """
         try:
-            fvg = self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context)
+            fvg = self.pool[view.model].fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context)
             return fvg['arch']
         except:
             _logger.exception("Can't render view %s for model: %s", view.xml_id, view.model)
@@ -216,9 +216,9 @@ class view(osv.osv):
         no_ancester=[]
         blank_nodes = []
 
-        _Model_Obj=self.pool.get(model)
-        _Node_Obj=self.pool.get(node_obj)
-        _Arrow_Obj=self.pool.get(conn_obj)
+        _Model_Obj = self.pool[model]
+        _Node_Obj = self.pool[node_obj]
+        _Arrow_Obj = self.pool[conn_obj]
 
         for model_key,model_value in _Model_Obj._columns.items():
                 if model_value._type=='one2many':
@@ -292,7 +292,7 @@ class view_sc(osv.osv):
     def get_sc(self, cr, uid, user_id, model='ir.ui.menu', context=None):
         ids = self.search(cr, uid, [('user_id','=',user_id),('resource','=',model)], context=context)
         results = self.read(cr, uid, ids, ['res_id'], context=context)
-        name_map = dict(self.pool.get(model).name_get(cr, uid, [x['res_id'] for x in results], context=context))
+        name_map = dict(self.pool[model].name_get(cr, uid, [x['res_id'] for x in results], context=context))
         # Make sure to return only shortcuts pointing to exisintg menu items.
         filtered_results = filter(lambda result: result['res_id'] in name_map, results)
         for result in filtered_results:
index 9e0c8e5..dd85012 100644 (file)
@@ -397,11 +397,11 @@ class ir_values(osv.osv):
             action_model,id = action['value'].split(',')
             fields = [
                     field
-                    for field in self.pool.get(action_model)._all_columns
+                    for field in self.pool[action_model]._all_columns
                     if field not in EXCLUDED_FIELDS]
             # FIXME: needs cleanup
             try:
-                action_def = self.pool.get(action_model).read(cr, uid, int(id), fields, context)
+                action_def = self.pool[action_model].read(cr, uid, int(id), fields, context)
                 if action_def:
                     if action_model in ('ir.actions.report.xml','ir.actions.act_window',
                                         'ir.actions.wizard'):
index bb95dd7..7f2b8a2 100644 (file)
@@ -34,7 +34,7 @@ class ir_module_reference_print(report_sxw.rml_parse):
             'findflds': self._fields_find,
         })
     def _object_doc(self, obj):
-        modobj = self.pool.get(obj)
+        modobj = self.pool[obj]
         strdocs= modobj.__doc__
         if not strdocs:
             return None
@@ -48,7 +48,7 @@ class ir_module_reference_print(report_sxw.rml_parse):
         return res
 
     def _object_doc2(self, obj):
-        modobj = self.pool.get(obj)
+        modobj = self.pool[obj]
         strdocs= modobj.__doc__
         if not strdocs:
             return None
@@ -72,7 +72,7 @@ class ir_module_reference_print(report_sxw.rml_parse):
         return modobj.browse(self.cr, self.uid, ids)
 
     def _fields_find(self, obj):
-        modobj = self.pool.get(obj)
+        modobj = self.pool[obj]
         res = modobj.fields_get(self.cr, self.uid).items()
         res.sort()
         return res
index 7370905..aeafd45 100644 (file)
@@ -348,8 +348,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
         if processed_modules:
             cr.execute("""select model,name from ir_model where id NOT IN (select distinct model_id from ir_model_access)""")
             for (model, name) in cr.fetchall():
-                model_obj = registry.get(model)
-                if model_obj and not model_obj.is_transient():
+                if model in registry and not registry[model].is_transient():
                     _logger.warning('The model %s has no access rules, consider adding one. E.g. access_%s,access_%s,model_%s,,1,1,1,1',
                         model, model.replace('.', '_'), model.replace('.', '_'), model.replace('.', '_'))
 
@@ -357,15 +356,13 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
             # been replaced by owner-only access rights
             cr.execute("""select distinct mod.model, mod.name from ir_model_access acc, ir_model mod where acc.model_id = mod.id""")
             for (model, name) in cr.fetchall():
-                model_obj = registry.get(model)
-                if model_obj and model_obj.is_transient():
+                if model in registry and registry[model].is_transient():
                     _logger.warning('The transient model %s (%s) should not have explicit access rules!', model, name)
 
             cr.execute("SELECT model from ir_model")
             for (model,) in cr.fetchall():
-                obj = registry.get(model)
-                if obj:
-                    obj._check_removed_columns(cr, log=True)
+                if model in registry:
+                    registry[model]._check_removed_columns(cr, log=True)
                 else:
                     _logger.warning("Model %s is declared but cannot be loaded! (Perhaps a module was partially removed or renamed)", model)
 
index 6989be2..e4814dc 100644 (file)
@@ -758,7 +758,7 @@ class expression(object):
             field_path = left.split('.', 1)
             field = working_model._columns.get(field_path[0])
             if field and field._obj:
-                relational_model = working_model.pool.get(field._obj)
+                relational_model = working_model.pool[field._obj]
             else:
                 relational_model = None
 
@@ -787,7 +787,7 @@ class expression(object):
                 # comments about inherits'd fields
                 #  { 'field_name': ('parent_model', 'm2o_field_to_reach_parent',
                 #                    field_column_obj, origina_parent_model), ... }
-                next_model = working_model.pool.get(working_model._inherit_fields[field_path[0]][0])
+                next_model = working_model.pool[working_model._inherit_fields[field_path[0]][0]]
                 leaf.add_join_context(next_model, working_model._inherits[next_model._name], 'id', working_model._inherits[next_model._name])
                 push(leaf)
 
index 34968a6..f38d1ef 100644 (file)
@@ -193,7 +193,7 @@ class reference(_column):
             result[value['id']] = value[name]
             if value[name]:
                 model, res_id = value[name].split(',')
-                if not obj.pool.get(model).exists(cr, uid, [int(res_id)], context=context):
+                if not obj.pool[model].exists(cr, uid, [int(res_id)], context=context):
                     result[value['id']] = False
         return result
 
@@ -203,8 +203,8 @@ class reference(_column):
             # reference fields have a 'model,id'-like value, that we need to convert
             # to a real name
             model_name, res_id = value.split(',')
-            model = obj.pool.get(model_name)
-            if model and res_id:
+            if model_name in obj.pool and res_id:
+                model = obj.pool[model_name]
                 return model.name_get(cr, uid, [int(res_id)], context=context)[0][1]
         return tools.ustr(value)
 
@@ -456,7 +456,7 @@ class many2one(_column):
             res[r['id']] = r[name]
         for id in ids:
             res.setdefault(id, '')
-        obj = obj.pool.get(self._obj)
+        obj = obj.pool[self._obj]
 
         # build a dictionary of the form {'id_of_distant_resource': name_of_distant_resource}
         # we use uid=1 because the visibility of a many2one field value (just id and name)
@@ -474,8 +474,8 @@ class many2one(_column):
     def set(self, cr, obj_src, id, field, values, user=None, context=None):
         if not context:
             context = {}
-        obj = obj_src.pool.get(self._obj)
-        self._table = obj_src.pool.get(self._obj)._table
+        obj = obj_src.pool[self._obj]
+        self._table = obj._table
         if type(values) == type([]):
             for act in values:
                 if act[0] == 0:
@@ -496,7 +496,7 @@ class many2one(_column):
                 cr.execute('update '+obj_src._table+' set '+field+'=null where id=%s', (id,))
 
     def search(self, cr, obj, args, name, value, offset=0, limit=None, uid=None, context=None):
-        return obj.pool.get(self._obj).search(cr, uid, args+self._domain+[('name', 'like', value)], offset, limit, context=context)
+        return obj.pool[self._obj].search(cr, uid, args+self._domain+[('name', 'like', value)], offset, limit, context=context)
 
     
     @classmethod
@@ -533,8 +533,9 @@ class one2many(_column):
             res[id] = []
 
         domain = self._domain(obj) if callable(self._domain) else self._domain
-        ids2 = obj.pool.get(self._obj).search(cr, user, domain + [(self._fields_id, 'in', ids)], limit=self._limit, context=context)
-        for r in obj.pool.get(self._obj)._read_flat(cr, user, ids2, [self._fields_id], context=context, load='_classic_write'):
+        model = obj.pool[self._obj]
+        ids2 = model.search(cr, user, domain + [(self._fields_id, 'in', ids)], limit=self._limit, context=context)
+        for r in model._read_flat(cr, user, ids2, [self._fields_id], context=context, load='_classic_write'):
             if r[self._fields_id] in res:
                 res[r[self._fields_id]].append(r['id'])
         return res
@@ -549,8 +550,8 @@ class one2many(_column):
         context['no_store_function'] = True
         if not values:
             return
-        _table = obj.pool.get(self._obj)._table
-        obj = obj.pool.get(self._obj)
+        obj = obj.pool[self._obj]
+        _table = obj._table
         for act in values:
             if act[0] == 0:
                 act[2][self._fields_id] = id
@@ -595,7 +596,7 @@ class one2many(_column):
 
     def search(self, cr, obj, args, name, value, offset=0, limit=None, uid=None, operator='like', context=None):
         domain = self._domain(obj) if callable(self._domain) else self._domain
-        return obj.pool.get(self._obj).name_search(cr, uid, value, domain, operator, context=context,limit=limit)
+        return obj.pool[self._obj].name_search(cr, uid, value, domain, operator, context=context,limit=limit)
 
     
     @classmethod
@@ -666,7 +667,7 @@ class many2many(_column):
         tbl, col1, col2 = self._rel, self._id1, self._id2
         if not all((tbl, col1, col2)):
             # the default table name is based on the stable alphabetical order of tables
-            dest_model = source_model.pool.get(self._obj)
+            dest_model = source_model.pool[self._obj]
             tables = tuple(sorted([source_model._table, dest_model._table]))
             if not tbl:
                 assert tables[0] != tables[1], 'Implicit/Canonical naming of m2m relationship table '\
@@ -707,7 +708,7 @@ class many2many(_column):
             _logger.warning(
                 "Specifying offset at a many2many.get() is deprecated and may"
                 " produce unpredictable results.")
-        obj = model.pool.get(self._obj)
+        obj = model.pool[self._obj]
         rel, id1, id2 = self._sql_names(model)
 
         # static domains are lists, and are evaluated both here and on client-side, while string
@@ -749,7 +750,7 @@ class many2many(_column):
         if not values:
             return
         rel, id1, id2 = self._sql_names(model)
-        obj = model.pool.get(self._obj)
+        obj = model.pool[self._obj]
         for act in values:
             if not (isinstance(act, list) or isinstance(act, tuple)) or not act:
                 continue
@@ -785,7 +786,7 @@ class many2many(_column):
     # TODO: use a name_search
     #
     def search(self, cr, obj, args, name, value, offset=0, limit=None, uid=None, operator='like', context=None):
-        return obj.pool.get(self._obj).search(cr, uid, args+self._domain+[('name', operator, value)], offset, limit, context=context)
+        return obj.pool[self._obj].search(cr, uid, args+self._domain+[('name', operator, value)], offset, limit, context=context)
 
     @classmethod
     def _as_display_name(cls, field, cr, uid, obj, value, context=None):
@@ -1107,7 +1108,7 @@ class function(_column):
         if field_type == "many2one":
             # make the result a tuple if it is not already one
             if isinstance(value, (int,long)) and hasattr(obj._columns[field], 'relation'):
-                obj_model = obj.pool.get(obj._columns[field].relation)
+                obj_model = obj.pool[obj._columns[field].relation]
                 dict_names = dict(obj_model.name_get(cr, uid, [value], context))
                 result = (value, dict_names[value])
 
@@ -1204,7 +1205,7 @@ class related(function):
             # Perform name_get as root, as seeing the name of a related object depends on
             # access right of source document, not target, so user may not have access.
             value_ids = list(set(value.id for value in res.itervalues() if value))
-            value_name = dict(obj.pool.get(self._obj).name_get(cr, SUPERUSER_ID, value_ids, context=context))
+            value_name = dict(obj.pool[self._obj].name_get(cr, SUPERUSER_ID, value_ids, context=context))
             res = dict((id, value and (value.id, value_name[value.id])) for id, value in res.iteritems())
 
         elif self._type in ('one2many', 'many2many'):
@@ -1258,7 +1259,7 @@ class sparse(function):
         elif self._type == 'one2many':
             if not read_value:
                 read_value = []
-            relation_obj = obj.pool.get(self.relation)
+            relation_obj = obj.pool[self.relation]
             for vals in value:
                 assert vals[0] in (0,1,2), 'Unsupported o2m value for sparse field: %s' % vals
                 if vals[0] == 0:
@@ -1301,10 +1302,10 @@ class sparse(function):
                     value = value or []
                     if value:
                         # filter out deleted records as superuser
-                        relation_obj = obj.pool.get(obj._columns[field_name].relation)
+                        relation_obj = obj.pool[obj._columns[field_name].relation]
                         value = relation_obj.exists(cr, openerp.SUPERUSER_ID, value)
                 if type(value) in (int,long) and field_type == 'many2one':
-                    relation_obj = obj.pool.get(obj._columns[field_name].relation)
+                    relation_obj = obj.pool[obj._columns[field_name].relation]
                     # check for deleted record as superuser
                     if not relation_obj.exists(cr, openerp.SUPERUSER_ID, [value]):
                         value = False
@@ -1452,7 +1453,7 @@ class property(function):
                 # not target, so user may not have access) in order to avoid
                 # pointing on an unexisting record.
                 if property_destination_obj:
-                    if res[id][prop_name] and obj.pool.get(property_destination_obj).exists(cr, SUPERUSER_ID, res[id][prop_name].id):
+                    if res[id][prop_name] and obj.pool[property_destination_obj].exists(cr, SUPERUSER_ID, res[id][prop_name].id):
                         name_get_ids[id] = res[id][prop_name].id
                     else:
                         res[id][prop_name] = False
@@ -1460,7 +1461,7 @@ class property(function):
                 # name_get as root (as seeing the name of a related
                 # object depends on access right of source document,
                 # not target, so user may not have access.)
-                name_get_values = dict(obj.pool.get(property_destination_obj).name_get(cr, SUPERUSER_ID, name_get_ids.values(), context=context))
+                name_get_values = dict(obj.pool[property_destination_obj].name_get(cr, SUPERUSER_ID, name_get_ids.values(), context=context))
                 # the property field is a m2o, we need to return a tuple with (id, name)
                 for k, v in name_get_ids.iteritems():
                     if res[k][prop_name]:
index 69c7498..dd427d3 100644 (file)
@@ -420,7 +420,7 @@ class browse_record(object):
                 for field_name, field_column in fields_to_fetch:
                     if field_column._type == 'many2one':
                         if result_line[field_name]:
-                            obj = self._table.pool.get(field_column._obj)
+                            obj = self._table.pool[field_column._obj]
                             if isinstance(result_line[field_name], (list, tuple)):
                                 value = result_line[field_name][0]
                             else:
@@ -450,7 +450,7 @@ class browse_record(object):
                         else:
                             new_data[field_name] = browse_null()
                     elif field_column._type in ('one2many', 'many2many') and len(result_line[field_name]):
-                        new_data[field_name] = self._list_class([browse_record(self._cr, self._uid, id, self._table.pool.get(field_column._obj), self._cache, context=self._context, list_class=self._list_class, fields_process=self._fields_process) for id in result_line[field_name]], self._context)
+                        new_data[field_name] = self._list_class([browse_record(self._cr, self._uid, id, self._table.pool[field_column._obj], self._cache, context=self._context, list_class=self._list_class, fields_process=self._fields_process) for id in result_line[field_name]], self._context)
                     elif field_column._type == 'reference':
                         if result_line[field_name]:
                             if isinstance(result_line[field_name], browse_record):
@@ -459,7 +459,7 @@ class browse_record(object):
                                 ref_obj, ref_id = result_line[field_name].split(',')
                                 ref_id = long(ref_id)
                                 if ref_id:
-                                    obj = self._table.pool.get(ref_obj)
+                                    obj = self._table.pool[ref_obj]
                                     new_data[field_name] = browse_record(self._cr, self._uid, ref_id, obj, self._cache, context=self._context, list_class=self._list_class, fields_process=self._fields_process)
                                 else:
                                     new_data[field_name] = browse_null()
@@ -867,10 +867,10 @@ class BaseModel(object):
                 raise TypeError('_name is mandatory in case of multiple inheritance')
 
             for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]):
-                parent_model = pool.get(parent_name)
-                if not parent_model:
+                if parent_name not in pool:
                     raise TypeError('The model "%s" specifies an unexisting parent class "%s"\n'
                         'You may need to add a dependency on the parent class\' module.' % (name, parent_name))
+                parent_model = pool[parent_name]
                 if not getattr(cls, '_original_module', None) and name == parent_model._name:
                     cls._original_module = parent_model._original_module
                 parent_class = parent_model.__class__
@@ -1095,7 +1095,7 @@ class BaseModel(object):
             return ''
 
         def selection_field(in_field):
-            col_obj = self.pool.get(in_field.keys()[0])
+            col_obj = self.pool[in_field.keys()[0]]
             if f[i] in col_obj._columns.keys():
                 return  col_obj._columns[f[i]]
             elif f[i] in col_obj._inherits.keys():
@@ -1183,10 +1183,10 @@ class BaseModel(object):
                                 if not data[fpos]:
                                     dt = ''
                                     for rr in r:
-                                        name_relation = self.pool.get(rr._table_name)._rec_name
+                                        name_relation = self.pool[rr._table_name]._rec_name
                                         if isinstance(rr[name_relation], browse_record):
                                             rr = rr[name_relation]
-                                        rr_name = self.pool.get(rr._table_name).name_get(cr, uid, [rr.id], context=context)
+                                        rr_name = self.pool[rr._table_name].name_get(cr, uid, [rr.id], context=context)
                                         rr_name = rr_name and rr_name[0] and rr_name[0][1] or ''
                                         dt += tools.ustr(rr_name or '') + ','
                                     data[fpos] = dt[:-1]
@@ -1199,7 +1199,7 @@ class BaseModel(object):
                     i += 1
                 if i == len(f):
                     if isinstance(r, browse_record):
-                        r = self.pool.get(r._table_name).name_get(cr, uid, [r.id], context=context)
+                        r = self.pool[r._table_name].name_get(cr, uid, [r.id], context=context)
                         r = r and r[0] and r[0][1] or ''
                     data[fpos] = tools.ustr(r or '')
         return [data] + lines
@@ -1570,8 +1570,7 @@ class BaseModel(object):
 
         # get the default values for the inherited fields
         for t in self._inherits.keys():
-            defaults.update(self.pool.get(t).default_get(cr, uid, fields_list,
-                context))
+            defaults.update(self.pool[t].default_get(cr, uid, fields_list, context))
 
         # get the default values defined in the object
         for f in fields_list:
@@ -1605,11 +1604,11 @@ class BaseModel(object):
             if field in fields_list:
                 fld_def = (field in self._columns) and self._columns[field] or self._inherit_fields[field][2]
                 if fld_def._type == 'many2one':
-                    obj = self.pool.get(fld_def._obj)
+                    obj = self.pool[fld_def._obj]
                     if not obj.search(cr, uid, [('id', '=', field_value or False)]):
                         continue
                 if fld_def._type == 'many2many':
-                    obj = self.pool.get(fld_def._obj)
+                    obj = self.pool[fld_def._obj]
                     field_value2 = []
                     for i in range(len(field_value or [])):
                         if not obj.search(cr, uid, [('id', '=',
@@ -1618,18 +1617,18 @@ class BaseModel(object):
                         field_value2.append(field_value[i])
                     field_value = field_value2
                 if fld_def._type == 'one2many':
-                    obj = self.pool.get(fld_def._obj)
+                    obj = self.pool[fld_def._obj]
                     field_value2 = []
                     for i in range(len(field_value or [])):
                         field_value2.append({})
                         for field2 in field_value[i]:
                             if field2 in obj._columns.keys() and obj._columns[field2]._type == 'many2one':
-                                obj2 = self.pool.get(obj._columns[field2]._obj)
+                                obj2 = self.pool[obj._columns[field2]._obj]
                                 if not obj2.search(cr, uid,
                                         [('id', '=', field_value[i][field2])]):
                                     continue
                             elif field2 in obj._inherit_fields.keys() and obj._inherit_fields[field2][2]._type == 'many2one':
-                                obj2 = self.pool.get(obj._inherit_fields[field2][2]._obj)
+                                obj2 = self.pool[obj._inherit_fields[field2][2]._obj]
                                 if not obj2.search(cr, uid,
                                         [('id', '=', field_value[i][field2])]):
                                     continue
@@ -1649,7 +1648,7 @@ class BaseModel(object):
         # TODO I believe this loop can be replace by
         # res.extend(self._inherit_fields.key())
         for parent in self._inherits:
-            res.extend(self.pool.get(parent).fields_get_keys(cr, user, context))
+            res.extend(self.pool[parent].fields_get_keys(cr, user, context))
         return res
 
     def _rec_name_fallback(self, cr, uid, context=None):
@@ -1745,7 +1744,7 @@ class BaseModel(object):
                 new_xml = etree.fromstring(encode(xml))
                 ctx = context.copy()
                 ctx['base_model_name'] = self._name
-                xarch, xfields = self.pool.get(node.get('object')).__view_look_dom_arch(cr, user, new_xml, view_id, ctx)
+                xarch, xfields = self.pool[node.get('object')].__view_look_dom_arch(cr, user, new_xml, view_id, ctx)
                 views['form'] = {
                     'arch': xarch,
                     'fields': xfields
@@ -1763,7 +1762,7 @@ class BaseModel(object):
                     column = False
 
                 if column:
-                    relation = self.pool.get(column._obj)
+                    relation = self.pool[column._obj] if column._obj else None
 
                     children = False
                     views = {}
@@ -1899,13 +1898,13 @@ class BaseModel(object):
         fields = {}
         if node.tag == 'diagram':
             if node.getchildren()[0].tag == 'node':
-                node_model = self.pool.get(node.getchildren()[0].get('object'))
+                node_model = self.pool[node.getchildren()[0].get('object')]
                 node_fields = node_model.fields_get(cr, user, None, context)
                 fields.update(node_fields)
                 if not node.get("create") and not node_model.check_access_rights(cr, user, 'create', raise_exception=False):
                     node.set("create", 'false')
             if node.getchildren()[1].tag == 'arrow':
-                arrow_fields = self.pool.get(node.getchildren()[1].get('object')).fields_get(cr, user, None, context)
+                arrow_fields = self.pool[node.getchildren()[1].get('object')].fields_get(cr, user, None, context)
                 fields.update(arrow_fields)
         else:
             fields = self.fields_get(cr, user, None, context)
@@ -2446,7 +2445,7 @@ class BaseModel(object):
                         res[lang][f] = self._columns[f].string
         for table in self._inherits:
             cols = intersect(self._inherit_fields.keys(), fields)
-            res2 = self.pool.get(table).read_string(cr, uid, id, langs, cols, context)
+            res2 = self.pool[table].read_string(cr, uid, id, langs, cols, context)
         for lang in res2:
             if lang in res:
                 res[lang]['code'] = lang
@@ -2465,7 +2464,7 @@ class BaseModel(object):
         for table in self._inherits:
             cols = intersect(self._inherit_fields.keys(), vals)
             if cols:
-                self.pool.get(table).write_string(cr, uid, id, langs, vals, context)
+                self.pool[table].write_string(cr, uid, id, langs, vals, context)
         return True
 
     def _add_missing_default_values(self, cr, uid, values, context=None):
@@ -2726,7 +2725,7 @@ class BaseModel(object):
         :param query: query object on which the JOIN should be added
         """
         inherits_field = current_model._inherits[parent_model_name]
-        parent_model = self.pool.get(parent_model_name)
+        parent_model = self.pool[parent_model_name]
         parent_alias, parent_alias_statement = query.add_join((current_model._table, parent_model._table, inherits_field, 'id', inherits_field), implicit=True)
         return parent_alias
 
@@ -2743,7 +2742,7 @@ class BaseModel(object):
         parent_alias = '"%s"' % current_table._table
         while field in current_table._inherit_fields and not field in current_table._columns:
             parent_model_name = current_table._inherit_fields[field][0]
-            parent_table = self.pool.get(parent_model_name)
+            parent_table = self.pool[parent_model_name]
             parent_alias = self._inherits_join_add(current_table, parent_model_name, query)
             current_table = parent_table
         return '%s."%s"' % (parent_alias, field)
@@ -3142,7 +3141,7 @@ class BaseModel(object):
                                 _schema.debug(msg, self._table, k, f._type)
 
                             if isinstance(f, fields.many2one):
-                                dest_model = self.pool.get(f._obj)
+                                dest_model = self.pool[f._obj]
                                 if dest_model._table != 'ir_actions':
                                     self._m2o_fix_foreign_key(cr, self._table, k, dest_model, f.ondelete)
 
@@ -3177,9 +3176,9 @@ class BaseModel(object):
 
                             # and add constraints if needed
                             if isinstance(f, fields.many2one):
-                                if not self.pool.get(f._obj):
+                                if f._obj not in self.pool:
                                     raise except_orm('Programming Error', 'There is no reference available for %s' % (f._obj,))
-                                dest_model = self.pool.get(f._obj)
+                                dest_model = self.pool[f._obj]
                                 ref = dest_model._table
                                 # ir_actions is inherited so foreign key doesn't work on it
                                 if ref != 'ir_actions':
@@ -3299,9 +3298,8 @@ class BaseModel(object):
 
     def _o2m_raise_on_missing_reference(self, cr, f):
         # TODO this check should be a method on fields.one2many.
-
-        other = self.pool.get(f._obj)
-        if other:
+        if f._obj in self.pool:
+            other = self.pool[f._obj]
             # TODO the condition could use fields_get_keys().
             if f._fields_id not in other._columns.keys():
                 if f._fields_id not in other._inherit_fields.keys():
@@ -3312,9 +3310,9 @@ class BaseModel(object):
         self._save_relation_table(cr, m2m_tbl)
         cr.execute("SELECT relname FROM pg_class WHERE relkind IN ('r','v') AND relname=%s", (m2m_tbl,))
         if not cr.dictfetchall():
-            if not self.pool.get(f._obj):
+            if f._obj not in self.pool:
                 raise except_orm('Programming Error', 'Many2Many destination model does not exist: `%s`' % (f._obj,))
-            dest_model = self.pool.get(f._obj)
+            dest_model = self.pool[f._obj]
             ref = dest_model._table
             cr.execute('CREATE TABLE "%s" ("%s" INTEGER NOT NULL, "%s" INTEGER NOT NULL, UNIQUE("%s","%s"))' % (m2m_tbl, col1, col2, col1, col2))
             # create foreign key references with ondelete=cascade, unless the targets are SQL views
@@ -3419,7 +3417,7 @@ class BaseModel(object):
         """
         res = {}
         for table in self._inherits:
-            other = self.pool.get(table)
+            other = self.pool[table]
             for col in other._columns.keys():
                 res[col] = (table, self._inherits[table], other._columns[col], table)
             for col in other._inherit_fields.keys():
@@ -3503,7 +3501,7 @@ class BaseModel(object):
 
         translation_obj = self.pool.get('ir.translation')
         for parent in self._inherits:
-            res.update(self.pool.get(parent).fields_get(cr, user, allfields, context))
+            res.update(self.pool[parent].fields_get(cr, user, allfields, context))
 
         for f, field in self._columns.iteritems():
             if (allfields and f not in allfields) or \
@@ -3669,7 +3667,7 @@ class BaseModel(object):
             cols = [x for x in intersect(self._inherit_fields.keys(), fields_to_read) if x not in self._columns.keys()]
             if not cols:
                 continue
-            res2 = self.pool.get(table).read(cr, user, [x[col] for x in res], cols, context, load)
+            res2 = self.pool[table].read(cr, user, [x[col] for x in res], cols, context, load)
 
             res3 = {}
             for r in res2:
@@ -4009,9 +4007,9 @@ class BaseModel(object):
             if ir_value_ids:
                 ir_values_obj.unlink(cr, uid, ir_value_ids, context=context)
 
-        for order, object, store_ids, fields in result_store:
-            if object != self._name:
-                obj = self.pool.get(object)
+        for order, obj_name, store_ids, fields in result_store:
+            if obj_name != self._name:
+                obj = self.pool[obj_name]
                 cr.execute('select id from '+obj._table+' where id IN %s', (tuple(store_ids),))
                 rids = map(lambda x: x[0], cr.fetchall())
                 if rids:
@@ -4175,7 +4173,7 @@ class BaseModel(object):
                 # TODO: optimize
                 for f in direct:
                     if self._columns[f].translate:
-                        src_trans = self.pool.get(self._name).read(cr, user, ids, [f])[0][f]
+                        src_trans = self.pool[self._name].read(cr, user, ids, [f])[0][f]
                         if not src_trans:
                             src_trans = vals[f]
                             # Inserting value to DB
@@ -4211,7 +4209,7 @@ class BaseModel(object):
                     v[val] = vals[val]
                     unknown_fields.remove(val)
             if v:
-                self.pool.get(table).write(cr, user, nids, v, context)
+                self.pool[table].write(cr, user, nids, v, context)
 
         if unknown_fields:
             _logger.warning(
@@ -4277,8 +4275,8 @@ class BaseModel(object):
         result.sort()
 
         done = {}
-        for order, object, ids_to_update, fields_to_recompute in result:
-            key = (object, tuple(fields_to_recompute))
+        for order, model_name, ids_to_update, fields_to_recompute in result:
+            key = (model_name, tuple(fields_to_recompute))
             done.setdefault(key, {})
             # avoid to do several times the same computation
             todo = []
@@ -4286,7 +4284,7 @@ class BaseModel(object):
                 if id not in done[key]:
                     done[key][id] = True
                     todo.append(id)
-            self.pool.get(object)._store_set_values(cr, user, todo, fields_to_recompute, context)
+            self.pool[model_name]._store_set_values(cr, user, todo, fields_to_recompute, context)
 
         self.step_workflow(cr, user, ids, context=context)
         return True
@@ -4379,9 +4377,9 @@ class BaseModel(object):
             parent_context.pop('no_store_function', None)
 
             if record_id is None or not record_id:
-                record_id = self.pool.get(table).create(cr, user, tocreate[table], context=parent_context)
+                record_id = self.pool[table].create(cr, user, tocreate[table], context=parent_context)
             else:
-                self.pool.get(table).write(cr, user, [record_id], tocreate[table], context=parent_context)
+                self.pool[table].write(cr, user, [record_id], tocreate[table], context=parent_context)
 
             upd0 += ',' + self._inherits[table]
             upd1 += ',%s'
@@ -4493,10 +4491,10 @@ class BaseModel(object):
             result += self._store_get_values(cr, user, [id_new], vals.keys(), context)
             result.sort()
             done = []
-            for order, object, ids, fields2 in result:
-                if not (object, ids, fields2) in done:
-                    self.pool.get(object)._store_set_values(cr, user, ids, fields2, context)
-                    done.append((object, ids, fields2))
+            for order, model_name, ids, fields2 in result:
+                if not (model_name, ids, fields2) in done:
+                    self.pool[model_name]._store_set_values(cr, user, ids, fields2, context)
+                    done.append((model_name, ids, fields2))
 
         if self._log_create and not (context and context.get('no_store_function', False)):
             message = self._description + \
@@ -4720,7 +4718,7 @@ class BaseModel(object):
                     # to reach the parent table (if it was not JOINed yet in the query)
                     parent_alias = child_object._inherits_join_add(child_object, parent_model, query)
                     # inherited rules are applied on the external table -> need to get the alias and replace
-                    parent_table = self.pool.get(parent_model)._table
+                    parent_table = self.pool[parent_model]._table
                     added_clause = [clause.replace('"%s"' % parent_table, '"%s"' % parent_alias) for clause in added_clause]
                     # change references to parent_table to parent_alias, because we now use the alias to refer to the table
                     new_tables = []
@@ -4775,7 +4773,7 @@ class BaseModel(object):
             return
 
         # figure out the applicable order_by for the m2o
-        dest_model = self.pool.get(order_field_column._obj)
+        dest_model = self.pool[order_field_column._obj]
         m2o_order = dest_model._order
         if not regex_order.match(m2o_order):
             # _order is complex, can't use it here, so we default to _rec_name
@@ -4822,7 +4820,7 @@ class BaseModel(object):
                     else:
                         continue  # ignore non-readable or "non-joinable" fields
                 elif order_field in self._inherit_fields:
-                    parent_obj = self.pool.get(self._inherit_fields[order_field][3])
+                    parent_obj = self.pool[self._inherit_fields[order_field][3]]
                     order_column = parent_obj._columns[order_field]
                     if order_column._classic_read:
                         inner_clause = self._inherits_join_calc(order_field, query)
@@ -4895,7 +4893,7 @@ class BaseModel(object):
         if not args:
             args = []
         if field in self._inherit_fields:
-            return self.pool.get(self._inherit_fields[field][0]).distinct_field_get(cr, uid, field, value, args, offset, limit)
+            return self.pool[self._inherit_fields[field][0]].distinct_field_get(cr, uid, field, value, args, offset, limit)
         else:
             return self._columns[field].search(cr, self, args, field, value, offset, limit, uid)
 
@@ -4949,9 +4947,9 @@ class BaseModel(object):
                 if field_to_other in default:
                     # all the fields of 'other' are given by the record: default[field_to_other],
                     # except the ones redefined in self
-                    blacklist.update(set(self.pool.get(other)._all_columns) - set(self._columns))
+                    blacklist.update(set(self.pool[other]._all_columns) - set(self._columns))
                 else:
-                    blacklist_given_fields(self.pool.get(other))
+                    blacklist_given_fields(self.pool[other])
         blacklist_given_fields(self)
 
         res = dict(default)
@@ -4966,7 +4964,7 @@ class BaseModel(object):
             elif field._type == 'many2one':
                 res[f] = data[f] and data[f][0]
             elif field._type == 'one2many':
-                other = self.pool.get(field._obj)
+                other = self.pool[field._obj]
                 # duplicate following the order of the ids because we'll rely on
                 # it later for copying translations in copy_translation()!
                 lines = [other.copy_data(cr, uid, line_id, context=context) for line_id in sorted(data[f])]
@@ -4998,7 +4996,7 @@ class BaseModel(object):
         for field_name, field_def in fields.items():
             # we must recursively copy the translations for o2o and o2m
             if field_def['type'] == 'one2many':
-                target_obj = self.pool.get(field_def['relation'])
+                target_obj = self.pool[field_def['relation']]
                 old_record, new_record = self.read(cr, uid, [old_id, new_id], [field_name], context=context)
                 # here we rely on the order of the ids to match the translations
                 # as foreseen in copy_data()
@@ -5267,7 +5265,7 @@ class BaseModel(object):
                 result, record_ids = [], list(command[2])
 
         # read the records and apply the updates
-        other_model = self.pool.get(self._all_columns[field_name].column._obj)
+        other_model = self.pool[self._all_columns[field_name].column._obj]
         for record in other_model.read(cr, uid, record_ids, fields=fields, context=context):
             record.update(updates.get(record['id'], {}))
             result.append(record)
index f419149..3d74008 100644 (file)
@@ -201,7 +201,7 @@ class document(object):
                         args = []
                     # get the object
                     if 'model' in attrs:
-                        obj = self.pool.get(attrs['model'])
+                        obj = self.pool[attrs['model']]
                     else:
                         if isinstance(browser, list):
                             obj = browser[0]._table
index 79f0ace..af1939e 100644 (file)
@@ -116,8 +116,8 @@ def check(f):
                         last_quote_begin = errortxt.rfind('"', 0, last_quote_end)
                         model_name = table = errortxt[last_quote_begin+1:last_quote_end].strip()
                     model = table.replace("_",".")
-                    model_obj = registry.get(model)
-                    if model_obj:
+                    if model in registry:
+                        model_obj = registry[model]
                         model_name = model_obj._description or model_obj._name
                     msg += _('\n\n[object with reference: %s - %s]') % (model_name, model)
                 except Exception:
index 2425249..6f6a623 100644 (file)
@@ -15,9 +15,9 @@ def registry(model):
 def cursor():
     return openerp.modules.registry.RegistryManager.get(DB).db.cursor()
 
-def get_module(module_name):
+def model_exists(model_name):
     registry = openerp.modules.registry.RegistryManager.get(DB)
-    return registry.get(module_name)
+    return model_name in registry
 
 def reload_registry():
     openerp.modules.registry.RegistryManager.new(
@@ -61,7 +61,7 @@ class test_uninstall(unittest2.TestCase):
     def test_01_install(self):
         """ Check a few things showing the module is installed. """
         install_module('test_uninstall')
-        assert get_module('test_uninstall.model')
+        assert model_exists('test_uninstall.model')
 
         assert search_registry('ir.model.data',
             [('module', '=', 'test_uninstall')])
@@ -72,7 +72,7 @@ class test_uninstall(unittest2.TestCase):
     def test_02_uninstall(self):
         """ Check a few things showing the module is uninstalled. """
         uninstall_module('test_uninstall')
-        assert not get_module('test_uninstall.model')
+        assert not model_exists('test_uninstall.model')
 
         assert not search_registry('ir.model.data',
             [('module', '=', 'test_uninstall')])
index 207d2f2..705502d 100644 (file)
@@ -659,7 +659,7 @@ def trans_generate(lang, modules, cr):
         model = encode(model)
         xml_name = "%s.%s" % (module, encode(xml_name))
 
-        if not registry.get(model):
+        if model not in registry:
             _logger.error("Unable to find object %r", model)
             continue
 
@@ -764,12 +764,12 @@ def trans_generate(lang, modules, cr):
                 push_constraint_msg(module, term_type, model._name, constraint[msg_pos])
             
     for (_, model, module) in cr.fetchall():
-        model_obj = registry.get(model)
-
-        if not model_obj:
+        if model not in registry:
             _logger.error("Unable to find object %r", model)
             continue
 
+        model_obj = registry[model]
+
         if model_obj._constraints:
             push_local_constraints(module, model_obj, 'constraints')
 
index 6c2d459..aba9db2 100644 (file)
@@ -769,7 +769,7 @@ class YamlInterpreter(object):
 
     def process_delete(self, node):
         assert getattr(node, 'model'), "Attribute %s of delete tag is empty !" % ('model',)
-        if self.pool.get(node.model):
+        if node.model in self.pool:
             if node.search:
                 ids = self.pool[node.model].search(self.cr, self.uid, eval(node.search, self.eval_context))
             else:
index 26a499c..ccd3ae7 100644 (file)
@@ -13,7 +13,7 @@ def run(args):
     openerp.netsvc.init_logger()
     registry = openerp.modules.registry.RegistryManager.get(
         args.database, update_module=False)
-    model = registry.get(args.model)
+    model = registry[args.model]
     longest_k = 1
     longest_string = 1
     columns = model._columns
index d8455e1..5b68fb2 100644 (file)
@@ -19,7 +19,7 @@ def run(args):
     openerp.netsvc.init_logger()
     registry = openerp.modules.registry.RegistryManager.get(
         args.database, update_module=False)
-    model = registry.get(args.model)
+    model = registry[args.model]
     cr = registry.db.cursor() # TODO context manager
     field_names = [args.field] if args.field else []
     if args.short: