diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-09-05 14:16:34 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-09-11 14:58:18 +0200 |
commit | ad9886585e469e93280cc563577ac8b0f535ace4 (patch) | |
tree | 918ccd7903ff4e25f387e50701290783c3b06aea | |
parent | 86708c17c0556eeebf643071406f7a683d3e6556 (diff) | |
download | Ishtar-ad9886585e469e93280cc563577ac8b0f535ace4.tar.bz2 Ishtar-ad9886585e469e93280cc563577ac8b0f535ace4.zip |
✨ templates: short_date filter, NOW and TIME variables
-rw-r--r-- | docs/fr/source/annexe-tech-4-jinja-filters.rst | 27 | ||||
-rw-r--r-- | example_project/settings.py | 3 | ||||
-rw-r--r-- | ishtar_common/jinja_filters.py | 11 | ||||
-rw-r--r-- | ishtar_common/models.py | 5 | ||||
-rw-r--r-- | ishtar_common/utils.py | 3 | ||||
-rw-r--r-- | ishtar_common/utils_secretary.py | 3 |
6 files changed, 45 insertions, 7 deletions
diff --git a/docs/fr/source/annexe-tech-4-jinja-filters.rst b/docs/fr/source/annexe-tech-4-jinja-filters.rst index 825f88222..d112249bc 100644 --- a/docs/fr/source/annexe-tech-4-jinja-filters.rst +++ b/docs/fr/source/annexe-tech-4-jinja-filters.rst @@ -2,9 +2,9 @@ .. _annexe-technique-4-jinja-filters: -========================================================== -Annexe technique 4 - Filtres pour les patrons de documents -========================================================== +======================================================================= +Annexe technique 4 - Filtres et variables pour les patrons de documents +======================================================================= :Auteurs: Étienne Loks, Valérie-Emma Leroux :Date: 2024-10-08 @@ -59,6 +59,13 @@ Ce filtre permet d'afficher une date en toutes lettres. - `{{\"2020-03-03\"|human_date}}` -> `3 mars 2020` + +- **short_date** + +Ce filtre permet d'afficher une date avec le format JJ/MM/AAAA. + + - `{{\"2020-03-28\"|short_date}}` -> `28/03/2020` + - **int** Pour afficher un nombre sans décimales. @@ -141,3 +148,17 @@ concaténation que l'on souhaite utiliser pour la chaîne en retour. - `{{\"chaise;bureau;papier;paragraphe\"|splitpart(1,3,\";\")}}` -> `bureau;papier` - `{{\"chaise;bureau;papier;paragraphe\"|splitpart(1,4,\";\",\"|\")}}` -> `bureau|papier|paragraphe` + +Variables +--------- + +En sus des variables contextuelles, des variables générales sont mises à disposition. + +- **TODAY** + +Date du jour au format AAAA-MM-JJ. + + +- **TIME** + +Heure, minute de génération au format HH:MM. diff --git a/example_project/settings.py b/example_project/settings.py index 06a40981d..6e93515e3 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -98,9 +98,8 @@ LANGUAGE_CODE = "fr-fr" COUNTRY = "fr" -OOOK_DATE_FORMAT = "%-d %B %Y" -OOO_DATE_FORMAT = "%-d %B %Y" DATE_FORMAT = "%-d %B %Y" +SHORT_DATE_FORMAT = "%d/%m/%Y" SITE_ID = 1 diff --git a/ishtar_common/jinja_filters.py b/ishtar_common/jinja_filters.py index 0bc81c47f..e1e53cd66 100644 --- a/ishtar_common/jinja_filters.py +++ b/ishtar_common/jinja_filters.py @@ -137,3 +137,14 @@ def human_date_filter(*args): return "" set_locale() return value.strftime(settings.DATE_FORMAT) + + +@environmentfilter +def short_date_filter(*args): + value = args[0] if len(args) == 1 else args[1] # jinja simple filter + try: + value = datetime.strptime(value, "%Y-%m-%d") + except (ValueError, TypeError) as __: + return "" + set_locale() + return value.strftime(settings.SHORT_DATE_FORMAT) diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 6dc6d16c0..063a42522 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -2422,6 +2422,11 @@ class DocumentTemplate(models.Model): + extension ) values = c_object.get_values(filtr=filtr) + now = datetime.datetime.now() + values.update({ + "TIME": now.strftime("%H:%M"), + "NOW": now.strftime("%Y-%m-%d"), + }) if not filtr: for k in values: if k in JSON_SERIALIZATION: diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 17fb62711..11022cad2 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -79,7 +79,7 @@ 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 + number_to_words, replace_line_breaks, short_date_filter if settings.USE_TRANSLATION_OVERLOAD: @@ -2819,6 +2819,7 @@ FORMULA_FILTERS = { EXTRA_JINJA_FILTERS = { "human_date": human_date_filter, + "short_date": short_date_filter, "capfirst": capfirst_filter, "lowerfirst": lowerfirst_filter, "capitalize": capitalize_filter, diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py index 9988fa4c2..075d9d0df 100644 --- a/ishtar_common/utils_secretary.py +++ b/ishtar_common/utils_secretary.py @@ -11,7 +11,7 @@ from django.conf import settings from .jinja_filters import capfirst_filter, capitalize_filter, \ euro_format, float_format, human_date_filter, lowerfirst_filter, \ - number_to_words, replace_line_breaks + number_to_words, replace_line_breaks, short_date_filter RE_UNITS = re.compile("([.0-9]+)([a-z]+)") @@ -91,6 +91,7 @@ class IshtarSecretaryRenderer(Renderer): self.environment.filters["multiply"] = multiply_filter self.environment.filters["add"] = add_filter self.environment.filters["sub"] = sub_filter + self.environment.filters["short_date"] = short_date_filter def ishtar_media_loader(self, media, *args, **kwargs): res = self.fs_loader(media, *args, **kwargs) |