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)

Reply via email to