changeset 36ec54f7952c in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=36ec54f7952c
description:
Use same evaluation context for search than eval
issue10254
review349691002
diffstat:
trytond/convert.py | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diffs (39 lines):
diff -r ce8d7a19766a -r 36ec54f7952c trytond/convert.py
--- a/trytond/convert.py Sat Apr 10 23:44:39 2021 +0200
+++ b/trytond/convert.py Sun Apr 11 18:22:36 2021 +0200
@@ -221,25 +221,26 @@
eval_attr = attributes.get('eval', '')
pyson_attr = bool(int(attributes.get('pyson', '0')))
+ context = {}
+ context['time'] = time
+ context['version'] = __version__.rsplit('.', 1)[0]
+ context['ref'] = self.mh.get_id
+ context['Decimal'] = Decimal
+ context['datetime'] = datetime
+ if pyson_attr:
+ context.update(CONTEXT)
+
if search_attr:
search_model = self.model._fields[field_name].model_name
SearchModel = self.mh.pool.get(search_model)
with Transaction().set_context(active_test=False):
- found, = SearchModel.search(eval(search_attr))
+ found, = SearchModel.search(eval(search_attr, context))
self.values[field_name] = found.id
elif ref_attr:
self.values[field_name] = self.mh.get_id(ref_attr)
elif eval_attr:
- context = {}
- context['time'] = time
- context['version'] = __version__.rsplit('.', 1)[0]
- context['ref'] = self.mh.get_id
- context['Decimal'] = Decimal
- context['datetime'] = datetime
- if pyson_attr:
- context.update(CONTEXT)
value = eval(eval_attr, context)
if pyson_attr:
value = PYSONEncoder(sort_keys=True).encode(value)