2019-12-04 16:49:33 +05:00
|
|
|
import io
|
2020-03-05 17:57:29 +05:00
|
|
|
|
2019-12-04 16:49:33 +05:00
|
|
|
from docxtpl import DocxTemplate
|
2020-03-05 17:57:29 +05:00
|
|
|
from jinja2 import Environment as Jinja2Environment
|
|
|
|
|
|
|
|
from .num2words import num2words_, num2words_currency
|
2019-12-04 16:49:33 +05:00
|
|
|
|
|
|
|
|
|
|
|
def get_document_from_values_stream(path_to_template: str, vals: dict):
|
|
|
|
doc = DocxTemplate(path_to_template)
|
2020-03-05 17:57:29 +05:00
|
|
|
|
|
|
|
jinja_env = Jinja2Environment()
|
|
|
|
|
|
|
|
functions = {
|
|
|
|
"number2words": num2words_,
|
|
|
|
"currency2words": num2words_currency,
|
|
|
|
}
|
|
|
|
jinja_env.globals.update(**functions)
|
|
|
|
|
|
|
|
doc.render(vals, jinja_env)
|
|
|
|
|
2019-12-04 16:49:33 +05:00
|
|
|
file_stream = io.BytesIO()
|
|
|
|
doc.save(file_stream)
|
|
|
|
file_stream.seek(0)
|
2020-03-05 17:57:29 +05:00
|
|
|
|
2019-12-04 16:49:33 +05:00
|
|
|
return file_stream
|