summaryrefslogtreecommitdiff
path: root/ishtar_common/utils_secretary.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/utils_secretary.py')
-rw-r--r--ishtar_common/utils_secretary.py104
1 files changed, 4 insertions, 100 deletions
diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py
index 917abdeaa..9988fa4c2 100644
--- a/ishtar_common/utils_secretary.py
+++ b/ishtar_common/utils_secretary.py
@@ -1,28 +1,17 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
+import re
from secretary import Renderer
from lxml import etree
from xml.dom.minidom import parseString
from xml.parsers.expat import ExpatError, ErrorString
-
-from datetime import datetime
-import locale
-from num2words import num2words
from PIL import Image
-import re
from django.conf import settings
-
-def set_locale():
- language_code = settings.LANGUAGE_CODE.split("-")
- language_code = language_code[0] + "_" + language_code[1].upper()
- for language_suffix in (".utf8", ""):
- try:
- locale.setlocale(locale.LC_TIME, language_code + language_suffix)
- break
- except locale.Error:
- pass
+from .jinja_filters import capfirst_filter, capitalize_filter, \
+ euro_format, float_format, human_date_filter, lowerfirst_filter, \
+ number_to_words, replace_line_breaks
RE_UNITS = re.compile("([.0-9]+)([a-z]+)")
@@ -37,62 +26,6 @@ def parse_value_unit(value):
return value, unit
-def float_format(value):
- """
- 10350.5 -> 10 350,5
- 5 -> 5
- 5.449999 -> 5,45
- """
- if value is None or value == "":
- return ""
- try:
- value = float(value)
- except ValueError:
- return ""
- locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
- if int(value) != value:
- value = float(f"{value:.2f}")
- return f"{value:n}"
-
-
-def euro_format(value):
- """
- 15000 -> 15 000,00 €
- 5 -> 5,00 €
- """
- value = float_format(value)
- if not value:
- return ""
- parts = value.split(",")
- if len(parts) < 2:
- return value + ",00 €"
- elif len(parts[1]) == 1:
- return value + "0 €"
- return value + " €"
-
-
-def number_to_words(value):
- if value is None or value == "":
- return ""
- try:
- value = float(value)
- except ValueError:
- return ""
- return num2words(value, lang=settings.LANGUAGE_CODE.split("-")[0])
-
-
-def replace_line_breaks(value):
- return (value or "").replace("\r\n", "\n")
-
-
-def capfirst_filter(value):
- return value[0].upper() + value[1:] if value else value
-
-
-def lowerfirst_filter(value):
- return value[0].lower() + value[1:] if value else value
-
-
def add_filter(value1, value2):
try:
return float(value1 or 0) + float(value2 or 0)
@@ -114,35 +47,6 @@ def multiply_filter(value1, value2):
return 0
-RE_CAP = re.compile(r"[^-' ]+")
-SEP = ("un", "une", "le", "la", "les", "lez", "d", "l", "de", "des", "du", "sur", "sous", "en")
-
-
-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")
- except (ValueError, TypeError) as __:
- return ""
- set_locale()
- return value.strftime(settings.DATE_FORMAT)
-
-
def splitpart(value, index, index_end=None, char=",", merge_character=None):
if index_end:
try: