diff --git a/README.md b/README.md index 18ccc54..a1f8978 100755 --- a/README.md +++ b/README.md @@ -1 +1,18 @@ # DOCS report + +Позволяет добавлять в модель отчётов новый шаблон-источник файл формата docx. +Получить отчёты на основе такого шаблона можно в формате docx или pdf. +Для преобразования docx -> pdf требуется доступный сервис gotenberg на localhost:8808. +Пример запуска сервиса в docker-compose рядом с Odoo: + +```yaml +gotenberg: + image: thecodingmachine/gotenberg:6 + restart: unless-stopped + environment: + LOG_LEVEL: INFO + DEFAULT_LISTEN_PORT: 8808 + DISABLE_GOOGLE_CHROME: 1 + DEFAULT_WAIT_TIMEOUT: 30 + MAXIMUM_WAIT_TIMEOUT: 60 +``` diff --git a/utils/__init__.py b/utils/__init__.py deleted file mode 100755 index 6d0f55e..0000000 --- a/utils/__init__.py +++ /dev/null @@ -1 +0,0 @@ -MODULE_NAME = __package__.split(".")[-2] diff --git a/utils/num2words.py b/utils/num2words.py deleted file mode 100755 index c870042..0000000 --- a/utils/num2words.py +++ /dev/null @@ -1,53 +0,0 @@ -from decimal import Decimal - -from num2words import num2words -from num2words import CONVERTES_TYPES - - -# Can use params: -# ~ number: int, float or validate string -# ~ to: num2words.CONVERTER_TYPES -# ~ lang: num2words.CONVERTER_CLASSES -# ~ currency: num2words.CONVERTER_CLASSES.CURRENCY_FORMS - - -# Jinja2 Global Method -def num2words_(number, **kwargs): - if _perform_convert(number): - if "lang" not in kwargs: - kwargs["lang"] = "ru" - if "to" not in kwargs or kwargs["to"] not in CONVERTES_TYPES: - kwargs["to"] = "cardinal" - return num2words(number, **kwargs) - - -# Jinja2 Global Method -def num2words_currency(number, **kwargs): - if _perform_convert(number): - if "lang" not in kwargs: - kwargs["lang"] = "ru" - if "to" not in kwargs or kwargs["to"] not in CONVERTES_TYPES: - kwargs["to"] = "currency" - if "currency" not in kwargs: - kwargs["currency"] = "RUB" - result = num2words(number, **kwargs) - total = result.split(",")[0] - part_word = result.split()[-1] - part_number = Decimal(str(number)) % 1 - return "{total}, {part_n} {part_w}".format( - total=total.capitalize(), - part_n="{:02d}".format(int(part_number * 100)), - part_w=part_word, - ) - - -def _perform_convert(number): - if isinstance(number, int) or isinstance(number, float): - return True - if isinstance(number, str): - try: - number = float(number) - return True - except ValueError: - return False - return False