Compute once selection field's value when possible

issue9222
review309331002
This commit is contained in:
Nicolas Évrard committed 2020-12-11 11:57:10 +01:00
1 parent 70eda603bc
commit 1d29cbe2b8
1 file changed
+10 -7
+10 -7
View File
@@ -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('')