ilya-muhortov
10/15/2019 - 5:15 AM

Jinja выражения

from jinja2 import Environment, TemplateError, TemplateSyntaxError, UndefinedError
jinja_env = Environment()
template = """
{{ ticket.period }}
"""

ticket = TicketSerializer(Ticket.objects.get(id=1268075)).data
pprint(ticket)
code = jinja_env.from_string(template)
print(code.render({
    'ticket': ticket
}))

expr1 = jinja_env.compile_expression("""
    ticket.period == '01.2019' and 
    ticket.char_main.value in ['1', '2', '3']
""")
print(expr1(ticket=ticket))

expr2 = jinja_env.compile_expression("""
    ticket.purp.value == '7' and
    (ticket.visit_pol > 0 or ticket.visit_hom > 0)
""")
print(expr1(ticket=ticket))

errors = []
template = """
{% if ticket.prof_k == 55 %}
    {{ errors.append('WTF') }}
{% endif %}
{{ errors.append('WTF2') }}
"""

ticket = TicketSerializer(Ticket.objects.get(id=1268075)).data
pprint(ticket)
code = jinja_env.from_string(template)
code.render({
    'errors': errors,
    'ticket': ticket
})

print(errors)