summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
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
commitee67a4dd81390da2841d6e7c7bd81a39d27e099a (patch)
treeb587a0b3b48eee6bd785d1089b5539d309b3121d /ishtar_common/utils.py
parent46c9fa2536524f1ca07e0f142136848098fff8af (diff)
downloadIshtar-ee67a4dd81390da2841d6e7c7bd81a39d27e099a.tar.bz2
Ishtar-ee67a4dd81390da2841d6e7c7bd81a39d27e099a.zip
♻ refactor jinja filters
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r--ishtar_common/utils.py27
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")