diff options
Diffstat (limited to 'ishtar_common/utils_secretary.py')
| -rw-r--r-- | ishtar_common/utils_secretary.py | 104 | 
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: | 
