diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-06-18 15:42:41 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-06-18 16:50:40 +0200 |
commit | ee67a4dd81390da2841d6e7c7bd81a39d27e099a (patch) | |
tree | b587a0b3b48eee6bd785d1089b5539d309b3121d /ishtar_common/utils.py | |
parent | 46c9fa2536524f1ca07e0f142136848098fff8af (diff) | |
download | Ishtar-ee67a4dd81390da2841d6e7c7bd81a39d27e099a.tar.bz2 Ishtar-ee67a4dd81390da2841d6e7c7bd81a39d27e099a.zip |
♻ refactor jinja filters
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r-- | ishtar_common/utils.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index fc58fce4e..17fb62711 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -77,6 +77,10 @@ from django.utils.formats import date_format from django.utils.safestring import mark_safe from django.template.defaultfilters import slugify +from .jinja_filters import capfirst_filter, capitalize_filter, \ + euro_format, float_format, human_date_filter, lowerfirst_filter, \ + number_to_words, replace_line_breaks + if settings.USE_TRANSLATION_OVERLOAD: from overload_translation.utils import ( @@ -2813,6 +2817,18 @@ FORMULA_FILTERS = { } +EXTRA_JINJA_FILTERS = { + "human_date": human_date_filter, + "capfirst": capfirst_filter, + "lowerfirst": lowerfirst_filter, + "capitalize": capitalize_filter, + "float_format": float_format, + "euro_format": euro_format, + "number_to_words": number_to_words, + "replace_line_breaks": replace_line_breaks, +} + + def _update_gen_id_dct(item, dct, initial_key, fkey=None, filters=None): if not fkey: fkey = initial_key[:] @@ -2915,6 +2931,17 @@ def get_generated_id(key, item): return value +def jinja_evaluation(formula, values): + for key in FORMULA_FILTERS: + if key not in FILTERS: + FILTERS[key] = FORMULA_FILTERS[key] + for key in EXTRA_JINJA_FILTERS: + if key not in FILTERS: + FILTERS[key] = EXTRA_JINJA_FILTERS[key] + tpl = Template(formula) + return tpl.render(values) + + PRIVATE_FIELDS = ("id", "history_modifier", "order", "uuid") |