diff --git a/CHANGELOG b/CHANGELOG index c06d2aab6c..a62cc1ee92 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Remove Pool.object_name_list * Add translated descriptor for Dict field * Clean private context keyword in RPC * Add cache section in configuration diff --git a/doc/ref/pool.rst b/doc/ref/pool.rst index 911a6fe7ed..0ca56384dc 100644 --- a/doc/ref/pool.rst +++ b/doc/ref/pool.rst @@ -35,10 +35,6 @@ Instance methods: Return the named instance of type from the pool. -.. method:: Pool.object_name_list([type]) - - Return the list of instances names. - .. method:: Pool.iterobject([type]) Return an interator over instances names. diff --git a/trytond/convert.py b/trytond/convert.py index ef926999cf..874639cd39 100644 --- a/trytond/convert.py +++ b/trytond/convert.py @@ -366,13 +366,12 @@ class Fs2bdAccessor: record_ids.setdefault(rec.model, []) record_ids[rec.model].append(rec.db_id) - object_name_list = set(self.pool.object_name_list()) - self.browserecord[module] = {} for model_name in record_ids.keys(): - if model_name not in object_name_list: + try: + Model = self.pool.get(model_name) + except KeyError: continue - Model = self.pool.get(model_name) self.browserecord[module][model_name] = {} for sub_record_ids in grouped_slice(record_ids[model_name]): with Transaction().set_context(active_test=False): @@ -792,7 +791,6 @@ def post_import(pool, module, to_delete): ('module', '=', module), ], order=[('id', 'DESC')]) - object_name_list = set(pool.object_name_list()) for mrec in mdata: model, db_id = mrec.model, mrec.db_id @@ -800,8 +798,11 @@ def post_import(pool, module, to_delete): 'Deleting %s@%s' % (db_id, model)) try: # Deletion of the record - if model in object_name_list: + try: Model = pool.get(model) + except KeyError: + Model = None + if Model: Model.delete([Model(db_id)]) mdata_delete.append(mrec) else: diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py index ef12a75d87..4c734d8f79 100644 --- a/trytond/ir/translation.py +++ b/trytond/ir/translation.py @@ -1231,9 +1231,10 @@ class TranslationClean(Wizard): model_name, field_name = translation.name.split(',', 1) except ValueError: return True - if model_name not in pool.object_name_list(): + try: + Model = pool.get(model_name) + except KeyError: return True - Model = pool.get(model_name) if field_name not in Model._fields: return True @@ -1244,10 +1245,11 @@ class TranslationClean(Wizard): model_name, field_name = translation.name.split(',', 1) except ValueError: return True - if model_name not in pool.object_name_list(): + try: + Model = pool.get(model_name) + except KeyError: return True if translation.res_id >= 0: - Model = pool.get(model_name) if field_name not in Model._fields: return True field = Model._fields[field_name] @@ -1274,9 +1276,10 @@ class TranslationClean(Wizard): model_name, field_name = translation.name.split(',', 1) except ValueError: return True - if model_name not in pool.object_name_list(): + try: + Model = pool.get(model_name) + except KeyError: return True - Model = pool.get(model_name) if field_name not in Model._fields: return True field = Model._fields[field_name] @@ -1292,7 +1295,9 @@ class TranslationClean(Wizard): def _clean_view(translation): pool = Pool() model_name = translation.name - if model_name not in pool.object_name_list(): + try: + pool.get(model_name) + except KeyError: return True @staticmethod @@ -1303,10 +1308,10 @@ class TranslationClean(Wizard): translation.name.split(',', 2) except ValueError: return True - if (wizard_name not in - pool.object_name_list(type='wizard')): + try: + Wizard = pool.get(wizard_name, type='wizard') + except KeyError: return True - Wizard = pool.get(wizard_name, type='wizard') if not Wizard: return True state = Wizard.states.get(state_name) @@ -1323,9 +1328,10 @@ class TranslationClean(Wizard): model_name, field_name = translation.name.split(',', 1) except ValueError: return True - if model_name not in pool.object_name_list(): + try: + Model = pool.get(model_name) + except KeyError: return True - Model = pool.get(model_name) if field_name not in Model._fields: return True field = Model._fields[field_name] @@ -1360,8 +1366,15 @@ class TranslationClean(Wizard): 'recursion_error', ): return False - if model_name in pool.object_name_list(): + Model, Wizard = None, None + try: Model = pool.get(model_name) + except KeyError: + try: + Wizard = pool.get(model_name, type='wizard') + except KeyError: + pass + if Model: errors = Model._error_messages.values() if issubclass(Model, ModelSQL): errors += Model._sql_error_messages.values() @@ -1369,8 +1382,7 @@ class TranslationClean(Wizard): errors.append(error) if translation.src not in errors: return True - elif model_name in pool.object_name_list(type='wizard'): - Wizard = pool.get(model_name, type='wizard') + elif Wizard: errors = Wizard._error_messages.values() if translation.src not in errors: return True diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py index 20104ce53d..7cd2365f5d 100644 --- a/trytond/model/modelstorage.py +++ b/trytond/model/modelstorage.py @@ -866,13 +866,14 @@ class ModelStorage(Model): if not call(field[0]): cls.raise_user_error(field[1]) - if 'res.user' not in pool.object_name_list() \ - or Transaction().user == 0: - ctx_pref = { - } - else: - User = pool.get('res.user') - ctx_pref = User.get_preferences(context_only=True) + ctx_pref = {} + if Transaction().user: + try: + User = pool.get('res.user') + except KeyError: + pass + else: + ctx_pref = User.get_preferences(context_only=True) def is_pyson(test): if isinstance(test, PYSON): diff --git a/trytond/pool.py b/trytond/pool.py index 1e96163642..b6014e82f5 100644 --- a/trytond/pool.py +++ b/trytond/pool.py @@ -186,20 +186,6 @@ class Pool(object): with self._locks[self.database_name]: self._pool[self.database_name][type][cls.__name__] = cls - def object_name_list(self, type='model'): - ''' - Return the object name list of a type - - :param type: the type - :return: a list of name - ''' - if type == '*': - res = [] - for type in self.classes.keys(): - res += self._pool[self.database_name][type].keys() - return res - return self._pool[self.database_name][type].keys() - def iterobject(self, type='model'): ''' Return an iterator over object name, object diff --git a/trytond/server.py b/trytond/server.py index f08a0cc4f7..eb43a45e31 100644 --- a/trytond/server.py +++ b/trytond/server.py @@ -154,9 +154,10 @@ class TrytonServer(object): if not pool.lock.acquire(0): continue try: - if 'ir.cron' not in pool.object_name_list(): + try: + Cron = pool.get('ir.cron') + except KeyError: continue - Cron = pool.get('ir.cron') finally: pool.lock.release() thread = threading.Thread(