summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-21 19:09:06 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-21 19:09:06 +0200
commit421ee83283ef465f34d28bf871c2116ebae93896 (patch)
treeed9a0a996bf9495fcd0a321a2941e1d2f55512ca
parent0bca50634d66ef82be4846652c66d43e98cb6e8e (diff)
downloadIshtar-421ee83283ef465f34d28bf871c2116ebae93896.tar.bz2
Ishtar-421ee83283ef465f34d28bf871c2116ebae93896.zip
✨ templates: year filter for dates
-rw-r--r--docs/fr/source/annexe-tech-4-jinja-filters.rst9
-rw-r--r--ishtar_common/jinja_filters.py13
-rw-r--r--ishtar_common/utils.py3
-rw-r--r--ishtar_common/utils_secretary.py3
4 files changed, 24 insertions, 4 deletions
diff --git a/docs/fr/source/annexe-tech-4-jinja-filters.rst b/docs/fr/source/annexe-tech-4-jinja-filters.rst
index d112249bc..0b2e5032b 100644
--- a/docs/fr/source/annexe-tech-4-jinja-filters.rst
+++ b/docs/fr/source/annexe-tech-4-jinja-filters.rst
@@ -7,7 +7,7 @@ Annexe technique 4 - Filtres et variables pour les patrons de documents
=======================================================================
:Auteurs: Étienne Loks, Valérie-Emma Leroux
-:Date: 2024-10-08
+:Date: 2026-05-21
:Copyright: CC-BY 3.0
----------------------------------
@@ -66,6 +66,13 @@ Ce filtre permet d'afficher une date avec le format JJ/MM/AAAA.
- `{{\"2020-03-28\"|short_date}}` -> `28/03/2020`
+
+- **year**
+
+Ce filtre permet d'afficher l'année d'une date.
+
+ - `{{\"2020-03-03\"|year}}` -> `2020`
+
- **int**
Pour afficher un nombre sans décimales.
diff --git a/ishtar_common/jinja_filters.py b/ishtar_common/jinja_filters.py
index 64d22bf10..0c00401a8 100644
--- a/ishtar_common/jinja_filters.py
+++ b/ishtar_common/jinja_filters.py
@@ -131,11 +131,22 @@ def capitalize_filter(*args):
@environmentfilter
+def year_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):
+ return ""
+ set_locale()
+ return value.year
+
+
+@environmentfilter
def human_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 __:
+ except (ValueError, TypeError):
return ""
set_locale()
return value.strftime(settings.DATE_FORMAT)
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index cb6511d9d..30bf4b7db 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, short_date_filter, splitpart
+ number_to_words, replace_line_breaks, short_date_filter, splitpart, year_filter
if settings.USE_TRANSLATION_OVERLOAD:
@@ -2868,6 +2868,7 @@ EXTRA_JINJA_FILTERS = {
"euro_format": euro_format,
"number_to_words": number_to_words,
"replace_line_breaks": replace_line_breaks,
+ "year": year_filter
}
diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py
index 77a2cbc9b..c3da79ea1 100644
--- a/ishtar_common/utils_secretary.py
+++ b/ishtar_common/utils_secretary.py
@@ -12,7 +12,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, short_date_filter, splitpart
+ number_to_words, replace_line_breaks, short_date_filter, splitpart, year_filter
RE_UNITS = re.compile("([.0-9]+)([a-z]+)")
@@ -66,6 +66,7 @@ class IshtarSecretaryRenderer(Renderer):
self.environment.filters["add"] = add_filter
self.environment.filters["sub"] = sub_filter
self.environment.filters["short_date"] = short_date_filter
+ self.environment.filters["year"] = year_filter
def ishtar_media_loader(self, media, *args, **kwargs):
res = self.fs_loader(media, *args, **kwargs)