diff options
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 |
commit | 50fefcbf421f60e1f4e92aeafa83ad949a19e9db (patch) | |
tree | 17786b221bdaa8585e849539b67cff8e8c4f3082 /ishtar_common/utils_secretary.py | |
parent | 752d3d8eda5cd968faf0d370ae2d781575c60d90 (diff) | |
download | Ishtar-50fefcbf421f60e1f4e92aeafa83ad949a19e9db.tar.bz2 Ishtar-50fefcbf421f60e1f4e92aeafa83ad949a19e9db.zip |
Secretary filters: capitalize
Diffstat (limited to 'ishtar_common/utils_secretary.py')
-rw-r--r-- | ishtar_common/utils_secretary.py | 21 |
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 |