From afd736879cd3c11198726c43abb2f8cb67f89dd0 Mon Sep 17 00:00:00 2001 From: Bernat Brunet Date: Fri, 17 Apr 2020 08:07:28 +0200 Subject: [PATCH] Remove unnecessary assignment on cache selction of Reference fields --- issue309331002_305261002_256961002.diff | 35 +++++++++++++++++++++++++ series | 1 + 2 files changed, 36 insertions(+) create mode 100644 issue309331002_305261002_256961002.diff diff --git a/issue309331002_305261002_256961002.diff b/issue309331002_305261002_256961002.diff new file mode 100644 index 0000000..b7d09c0 --- /dev/null +++ b/issue309331002_305261002_256961002.diff @@ -0,0 +1,35 @@ +diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py +index 32d6a531..e74ff841 100644 +--- a/trytond/model/modelstorage.py ++++ b/trytond/model/modelstorage.py +@@ -1084,6 +1084,15 @@ 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 = sel_func() ++ test = set(dict(test)) ++ + for record in records: + value = getattr(record, field_name) + if field._type == 'reference': +@@ -1091,12 +1100,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) ++ if instance_sel_func: ++ test = sel_func(record) + test = set(dict(test)) + # None and '' are equivalent + if '' in test or None in test: diff --git a/series b/series index b3b0784..0548815 100644 --- a/series +++ b/series @@ -87,3 +87,4 @@ issue8252.diff # [account_tax_rule_country] Add subdivisiions to match account t account_statement_message_invoice.diff # [account_statement] Add invoice number in amount_greater_invoice_amount_to_pay error message lazy_loading.diff +issue309331002_305261002_256961002.diff # Issue 309331002: tryton-env: Cache selection of Reference fields. Remove unnecessary assignment