diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-10-08 10:53:50 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-10-08 10:53:50 +0200 |
commit | 347a069fcd2274f5ae2c31dfde35b65fa492257a (patch) | |
tree | 0664cc84fc29c98af096dce8d0acc53a09a0e35e /ishtar_common/views.py | |
parent | 2f526ba22f183ef744cfd7ac7284585f8b318d95 (diff) | |
download | Ishtar-347a069fcd2274f5ae2c31dfde35b65fa492257a.tar.bz2 Ishtar-347a069fcd2274f5ae2c31dfde35b65fa492257a.zip |
✨ document templates: manage export in PDF, HTML, xlsx, docx using LO unoconv
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 5b675eb52..a6c3b373d 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -91,6 +91,10 @@ from ishtar_common.utils import ( from ishtar_common.widgets import JQueryAutoComplete from ishtar_common import tasks +convert_document = None +if settings.USE_LIBREOFFICE: + from ishtar_common.libreoffice import convert_document + from .views_item import ( CURRENT_ITEM_KEYS, CURRENT_ITEM_KEYS_DICT, @@ -1535,10 +1539,19 @@ class GenerateView(IshtarMixin, LoginRequiredMixin, View): document = self.publish(tpl, objects) if not document: return HttpResponse(content_type="text/plain") + base_extension = tpl.template.name.split(".")[-1].lower() + extension = tpl.export_format + if not extension: + extension = base_extension + if not settings.USE_LIBREOFFICE and extension not in ("ods", "odt"): + return HttpResponseBadRequest("Invalid format type - need LibreOffice daemon") # bad configuration + content_type = models.EXPORT_FORMATS_CONTENT_TYPE.get( + extension, "application/vnd.oasis.opendocument.text" + ) + if tpl.export_format and convert_document: + document = convert_document(document, tpl.export_format) with open(document, "rb") as f: - response = HttpResponse( - f.read(), content_type="application/vnd.oasis.opendocument.text" - ) + response = HttpResponse(f.read(), content_type=content_type) response["Content-Disposition"] = "attachment; filename={}".format( document.split(os.sep)[-1] ) |