summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitad9886585e469e93280cc563577ac8b0f535ace4 (patch)
tree918ccd7903ff4e25f387e50701290783c3b06aea
parent86708c17c0556eeebf643071406f7a683d3e6556 (diff)
downloadIshtar-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.rst27
-rw-r--r--example_project/settings.py3
-rw-r--r--ishtar_common/jinja_filters.py11
-rw-r--r--ishtar_common/models.py5
-rw-r--r--ishtar_common/utils.py3
-rw-r--r--ishtar_common/utils_secretary.py3
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)