DocX-export added - not perfect yet.

This commit is contained in:
2026-02-20 15:59:51 +01:00
parent 67a967da67
commit 3faa88fcea
6 changed files with 298 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
from django.core.management.base import BaseCommand, CommandError
from dokumente.models import Dokument
from dokumente.docx_utils import build_standard_docx
import os
class Command(BaseCommand):
help = 'Export a Dokument (or all active Dokumente) as Word (.docx) files'
def add_arguments(self, parser):
parser.add_argument(
'--nummer',
type=str,
help='Document number to export (e.g. R0129). Omit to export all active documents.',
)
parser.add_argument(
'--output',
type=str,
default='.',
help='Output directory (default: current directory)',
)
def handle(self, *args, **options):
output_dir = options['output']
os.makedirs(output_dir, exist_ok=True)
if options['nummer']:
try:
dokumente = [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',
).get(nummer=options['nummer'])]
except Dokument.DoesNotExist:
raise CommandError(f"Dokument with nummer '{options['nummer']}' not found.")
else:
dokumente = Dokument.objects.filter(aktiv=True).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',
).order_by('nummer')
for dokument in dokumente:
doc = build_standard_docx(dokument)
filename = os.path.join(output_dir, f'{dokument.nummer}.docx')
doc.save(filename)
self.stdout.write(self.style.SUCCESS(f'Exported {dokument.nummer}{filename}'))