Raise UserError Jinja2 UndefinedError

#162239
This commit is contained in:
Raimon Esteve 2023-09-22 11:59:19 +02:00
parent 9f012db6ac
commit 412f8ba66e

View file

@ -9,6 +9,8 @@ from trytond.modules.company.model import (
employee_field, set_employee, reset_employee)
from trytond.i18n import gettext
from trytond.exceptions import UserError
from jinja2 import Template as Jinja2Template
from jinja2.exceptions import UndefinedError as Jinja2UndefinedError
from collections import OrderedDict
from copy import copy
import math
@ -16,13 +18,6 @@ import logging
logger = logging.getLogger(__name__)
try:
from jinja2 import Template as Jinja2Template
jinja2_loaded = True
except ImportError:
jinja2_loaded = False
price_digits = (16, config.getint('product', 'price_decimal', default=4))
_ZERO = Decimal(0)
_ROUND = Decimal('.0001')
@ -255,7 +250,14 @@ class Property(tree(separator=' / '), sequence_ordered(), ModelSQL, ModelView):
def render_expression_record(self, expression, record):
template = Jinja2Template(expression, trim_blocks=True)
res = template.render(record)
try:
res = template.render(record)
except Jinja2UndefinedError as e:
raise UserError(gettext(
'product_dynamic_configurator.msg_expression_error',
property=self.rec_name,
expression=expression[:25]+('...' if len(expression) > 25 else ''),
invalid=str(e)))
if res:
res = res.replace('\t', '').replace('\n', '').strip()
return res