Compute once selection field's value when possible
issue9222 review309331002
This commit is contained in:
1 parent
70eda603bc
commit
1d29cbe2b8
1 file changed
+10
-7
@@ -1302,6 +1302,14 @@ class ModelStorage(Model):
|
||||
if hasattr(field, 'selection') and field.selection:
|
||||
if isinstance(field.selection, (tuple, list)):
|
||||
test = set(dict(field.selection).keys())
|
||||
instance_sel_func = False
|
||||
else:
|
||||
sel_func = getattr(cls, field.selection)
|
||||
instance_sel_func = is_instance_method(
|
||||
cls, field.selection)
|
||||
if not instance_sel_func:
|
||||
test = set(dict(sel_func()))
|
||||
|
||||
for record in records:
|
||||
value = getattr(record, field_name)
|
||||
if field._type == 'reference':
|
||||
@@ -1309,13 +1317,8 @@ class ModelStorage(Model):
|
||||
value = value.__class__.__name__
|
||||
elif value:
|
||||
value, _ = value.split(',')
|
||||
if not isinstance(field.selection, (tuple, list)):
|
||||
sel_func = getattr(cls, field.selection)
|
||||
if not is_instance_method(cls, field.selection):
|
||||
test = sel_func()
|
||||
else:
|
||||
test = sel_func(record)
|
||||
test = set(dict(test))
|
||||
if instance_sel_func:
|
||||
test = set(dict(sel_func(record)))
|
||||
# None and '' are equivalent
|
||||
if '' in test or None in test:
|
||||
test.add('')
|
||||
|
||||
Reference in new issue
Block a user