diff options
Diffstat (limited to 'ishtar_common/utils_secretary.py')
| -rw-r--r-- | ishtar_common/utils_secretary.py | 30 | 
1 files changed, 28 insertions, 2 deletions
diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py index e4e6e8e0b..318f50bdc 100644 --- a/ishtar_common/utils_secretary.py +++ b/ishtar_common/utils_secretary.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3  # -*- coding: utf-8 -*-  from secretary import Renderer  from lxml import etree @@ -7,10 +7,12 @@ 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 +from django.utils import formats  RE_UNITS = re.compile("([.0-9]+)([a-z]+)") @@ -25,6 +27,28 @@ def parse_value_unit(value):      return value, unit +def float_format(value): +    if value is None or value == "": +        return "" +    try: +        value = float(value) +    except ValueError: +        return "" +    if int(value) == value: +        return int(value) +    return formats.localize(value, use_l10n=True) + + +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") @@ -60,7 +84,7 @@ def capitalize_filter(value):  def human_date_filter(value):      try:          value = datetime.strptime(value, "%Y-%m-%d") -    except ValueError: +    except (ValueError, TypeError) as __:          return ""      language_code = settings.LANGUAGE_CODE.split("-")      language_code = language_code[0] + "_" + language_code[1].upper() @@ -109,6 +133,8 @@ class IshtarSecretaryRenderer(Renderer):          self.environment.filters["capfirst"] = capfirst_filter          self.environment.filters["lowerfirst"] = lowerfirst_filter          self.environment.filters["capitalize"] = capitalize_filter +        self.environment.filters["float_format"] = float_format +        self.environment.filters["number_to_words"] = number_to_words          self.environment.filters["replace_line_breaks"] = replace_line_breaks          self.environment.filters["splitpart"] = splitpart  | 
