Remove Pool.object_name_list
This method is inefficient for testing existence of an item, it is better to ask for forgiveness. review12761002
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
+7
-6
@@ -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:
|
||||
|
||||
+27
-15
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
+3
-2
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user