django-template-engines 1.3.10
Additional template engines for Django.

![Build Status](https://github.com/Terralego/django-template-engines/actions/workflows/python-package.yml/badge.svg)
[![Maintainability](https://api.codeclimate.com/v1/badges/2b6de132c98427007ab4/maintainability)](https://codeclimate.com/github/Terralego/django-template-engines/maintainability)
[![codecov](https://codecov.io/gh/Terralego/django-template-engines/branch/master/graph/badge.svg)](https://codecov.io/gh/Terralego/django-template-engines)
![Python Version](https://img.shields.io/badge/python-%3E%3D%203.6-blue.svg)
![Django Version](https://img.shields.io/badge/django-%3E%3D%202.2-blue.svg)
[![PyPI version](https://badge.fury.io/py/django-template-engines.svg)](https://badge.fury.io/py/django-template-engines)
[![Documentation Status](https://readthedocs.org/projects/django-template-engines/badge/?version=latest)](https://django-template-engines.readthedocs.io/en/latest/?badge=latest)

# django-template-engines

## Description

Additional template engines for Django.

Generate :

 * PDF (with weasyprint)
 * ODT (beta)
 * DOCX (alpha)

## Requirements

* Weasyprint has specific requirements https://weasyprint.readthedocs.io/en/stable/install.html


## How to use a specific template backend

In the settings, add:

```
INSTALLED_APPS = [
    ...
    'template_engines',
]

...
# Put custom engines before DjangoTemplates Engine (Custom engines will search ONLY template ending with .pdf (weasyprint) .odt (odt) and .docx (docx)
TEMPLATES = [
    {
        'BACKEND': 'template_engines.backends.weasyprint.WeasyprintEngine',
        'APP_DIRS': True,
        'DIRS': [
        ],
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
    {
        'BACKEND': 'template_engines.backends.odt.OdtEngine',
        ...,
    },
    {
        'BACKEND': 'template_engines.backends.docx.DocxEngine',
        ...,
    },
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
```

## Documentation

https://django-template-engines.readthedocs.io/



CHANGELOG
=========

1.3.10          (2022-06-22)
----------------------------

* Add support for sub and sup html tags for odt


1.3.9           (2022-04-26)
----------------------------

* Support django 3.2, django 4.0 and python 3.10
* Add url in logger template tag `image_url_loader`


1.3.8           (2020-10-15)
----------------------------

* allow to use image url loader in pdfs templates


1.3.7           (2020-10-14)
----------------------------

* allow cases where django change pdf suffix


1.3.6           (2020-10-14)
----------------------------

* WARNING : Breaking change
  * PDF autodiscovering by WEASYPRINT renderer should now be suffixed by .pdf.html
  

1.3.5           (2020-10-02)
----------------------------

* Fix ODT images from html, add src in Pictures

1.3.4           (2020-09-29)
----------------------------

* Fix some cases where mimetype can't be guessed


1.3.3           (2020-09-29)
----------------------------

* Fix ODT images display with Word.


1.3.2           (2020-09-28)
----------------------------

* Fix defined police on input text for odt


1.3.1           (2020-09-09)
----------------------------

* Support django 3.1


1.3.0           (2020-06-09)
----------------------------

* Implement Weasyprint PDF Template Engine


1.2.29          (2020-06-05)
----------------------------

* Verify if ODT or DOCX file are zippable file to avoid exceptions


1.2.28          (2020-04-14)
----------------------------

* Fix cases when image didn't fit page


1.2.27          (2020-04-14)
----------------------------

* Translate img tag in from_html for odt templates


1.2.26          (2020-05-04)
----------------------------

* Fix deprecation warnings and bad closing files


1.2.25          (2020-02-24)
----------------------------

* Fix span tags with text:span in from_html


1.2.24          (2019-12-02)
----------------------------

* Add rendering of footer and header


1.2.23          (2019-11-29)
----------------------------

* Remove automatically resize
* Change value conversion px to odt
* Add extension at the end of the generated file


1.2.22          (2019-11-25)
----------------------------

* Change AbstractEngine, inheritate from DjangoTemplates

1.2.21          (2019-11-18)
----------------------------

* Fix context rendering odt.

1.2.20          (2019-11-15)
----------------------------

* fix max_height and max_width


1.2.19          (2019-11-14)
----------------------------

* Add anchor image_url_load, image_load
* Replace width and height for image_url_load, image_load by max_width and max_height


1.2.18          (2019-11-13)
----------------------------

* fix odt image inclusion


1.2.17          (2019-11-07)
----------------------------

* Load odt_tags and docx_tags automatically, remove loads to make it works
* Add tag image_url_load
* Fix odt pictures inside zip


1.2.16          (2019-11-04)
----------------------------

* Allow heading, and text-numbered list in from_html odt tag


1.2.15          (2019-10-28)
----------------------------

* Fix text-input replacement for list inside paragraphs


1.2.14          (2019-10-25)
----------------------------

* Fix text-input replacement for odt
* Add custom style for italic and underline text for html filter


1.2.13      (2019-10-25)
------------------------

Features:

* from_html tag filter for odt templates


1.2.12      (2019-10-23)
------------------------

Fixes:

* automatic escape break line in odt template


1.2.11      (2019-10-23)
------------------------

Improve:

* automatic escape break line in odt template


1.2.10      (2019-10-09)
------------------------

Improve:

* Tags are renamed
* ODT image inclusion


Update:
 * From now on, ``{% ... %}`` are also cleaned.

1.2.9       (2019-09-24)
------------------------

Other:
 * the template is cleaned before it is filled.

1.2.8       (2019-09-24)
------------------------

Optimize:
 * clean methods

Add:
 * a method that removes incorrect additions in the template tags of the xml file

Update:
 * the documentation

Fix:
 * requirements

Other:
 * ``AbstractEngine`` becomes ``ZipAbstractEngine`` and allow you to write
   custom engines for zip base documents

1.2.7       (2019-09-12)
------------------------

Fixes:
 * template generation from different django storage

1.2.6       (2019-09-12)
------------------------

Fixes:
 * conditions to determine mimetype template


1.2.5       (2019-09-12)
------------------------

Fixes:
 * packaging
 

1.2.4       (2019-09-12)
------------------------

Fixes:
 * Allow mimetype zip for DOCX and ODT

1.2.3       (2019-09-11)
------------------------

Fixes:
 * Compatibility with non FileStorageBackend

1.2.2
-----

Update
* Pillow>=5.4.1

1.2.1
-----

`requests` is no longer needed.

1.2.0
-----

From now on, you can specify bold text.

1.1.3
-----
Image loaders can now take width and height as `dxa`, `px`, `pt`, `in`, `cm`
and `emu`.

1.1.2
-----

Add:

* A template tag to load images into a docx template (`docx_image_loader`).

1.0.0
-----

Add:

* Docx template engine (`template_engines.backends.docx.DocxEngine`).
* Docx template class (`template_engines.backends.odt.DocxTemplate`).

0.0.4
-----

* Abstract template engine for writing custom engines
  (`template_engines.backends.abstract.AbstractEngine`).
* Abstract template class for writing custom template classes
  (`template_engines.backends.abstract.AbstractTemplate`).
* Odt template engine (`template_engines.backends.odt.OdtEngine`).
* Odt template class (`template_engines.backends.odt.OdtTemplate`).
* A template tag to load images into an odt template (`odt_image_loader`).