DocX-export added - not perfect yet.
This commit is contained in:
@@ -6,10 +6,12 @@ from django.views.decorators.http import require_POST
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.utils.html import escape, mark_safe
|
||||
from django.utils.safestring import SafeString
|
||||
import io
|
||||
import json
|
||||
import xml.etree.ElementTree as ET
|
||||
from .models import Dokument, Vorgabe, VorgabeKurztext, VorgabeLangtext, Checklistenfrage, VorgabeComment
|
||||
from .utils import build_dokument_xml_element, prettify_xml
|
||||
from .docx_utils import build_standard_docx
|
||||
from abschnitte.utils import render_textabschnitte
|
||||
|
||||
from datetime import date
|
||||
@@ -256,6 +258,37 @@ def standard_json(request, nummer):
|
||||
return JsonResponse(doc_data, json_dumps_params={'indent': 2, 'ensure_ascii': False}, encoder=DjangoJSONEncoder)
|
||||
|
||||
|
||||
def standard_docx(request, nummer):
|
||||
"""
|
||||
Export a single Dokument as a Word (.docx) file.
|
||||
"""
|
||||
dokument = get_object_or_404(
|
||||
Dokument.objects.prefetch_related(
|
||||
'autoren', 'pruefende', 'vorgaben__thema',
|
||||
'vorgaben__referenzen', 'vorgaben__checklistenfragen',
|
||||
'vorgaben__vorgabekurztext_set__abschnitttyp',
|
||||
'vorgaben__vorgabelangtext_set__abschnitttyp',
|
||||
'geltungsbereich_set__abschnitttyp',
|
||||
'einleitung_set__abschnitttyp',
|
||||
'changelog__autoren',
|
||||
),
|
||||
nummer=nummer,
|
||||
)
|
||||
|
||||
doc = build_standard_docx(dokument)
|
||||
|
||||
buffer = io.BytesIO()
|
||||
doc.save(buffer)
|
||||
buffer.seek(0)
|
||||
|
||||
response = HttpResponse(
|
||||
buffer.read(),
|
||||
content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
)
|
||||
response['Content-Disposition'] = f'attachment; filename="{dokument.nummer}.docx"'
|
||||
return response
|
||||
|
||||
|
||||
def standard_xml(request, nummer):
|
||||
"""
|
||||
Export a single Dokument as XML
|
||||
|
||||
Reference in New Issue
Block a user