summaryrefslogtreecommitdiff
path: root/ishtar_common/utils_secretary.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-12-29 13:24:25 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-02-28 12:15:23 +0100
commit39476e1854e9e0e5b3ad3ff2a2eb44e03620a693 (patch)
tree17786b221bdaa8585e849539b67cff8e8c4f3082 /ishtar_common/utils_secretary.py
parent14b4caad1c1eb9e009d485b4428af3f708afe758 (diff)
downloadIshtar-39476e1854e9e0e5b3ad3ff2a2eb44e03620a693.tar.bz2
Ishtar-39476e1854e9e0e5b3ad3ff2a2eb44e03620a693.zip
Secretary filters: capitalize
Diffstat (limited to 'ishtar_common/utils_secretary.py')
-rw-r--r--ishtar_common/utils_secretary.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py
index e1f2919e4..579ac3f63 100644
--- a/ishtar_common/utils_secretary.py
+++ b/ishtar_common/utils_secretary.py
@@ -32,6 +32,26 @@ def capfirst_filter(value):
return value.capitalize() if value else value
+RE_CAP = re.compile(r"[^-' ]+")
+SEP = ("un", "une", "le", "la", "les", "lez", "d", "l", "de", "des", "du")
+
+
+def capitalize_filter(value):
+ if not value:
+ return ""
+ value = value.lower()
+ res = ""
+ for m in RE_CAP.finditer(value):
+ start = m.start()
+ if start:
+ res += value[start - 1]
+ v = m.group()
+ if v not in SEP:
+ v = v[0].upper() + v[1:]
+ res += v
+ return res
+
+
def human_date_filter(value):
try:
value = datetime.strptime(value, "%Y-%m-%d")
@@ -64,6 +84,7 @@ class IshtarSecretaryRenderer(Renderer):
self.media_path = settings.MEDIA_ROOT
self.environment.filters['human_date'] = human_date_filter
self.environment.filters['capfirst'] = capfirst_filter
+ self.environment.filters['capitalize'] = capitalize_filter
self.environment.filters['replace_line_breaks'] = replace_line_breaks
self.environment.filters['splitpart'] = splitpart