Source code for ferrosoft.apps.dataimport.management.commands.dataimport_gendoc

import sys

from django.core.management import BaseCommand
from django.db.models import Prefetch

from ferrosoft.apps.dataimport.models import MappingCollection, FieldMapping
from ferrosoft.apps.ferrobase.management.tenantcommand import TenantAwareCommand
from ferrosoft.report import generate_report


[docs] class Command(TenantAwareCommand, BaseCommand):
[docs] def add_arguments(self, parser): super().add_arguments(parser) parser.add_argument( "-o", "--output", type=str, default="dataimport.pdf", help="Output file name", ) parser.add_argument( "collection", type=str, help="Mapping collection name", )
[docs] def handle_tenant(self, *args, **options): collection = ( MappingCollection.objects.filter(name=options["collection"]) .prefetch_related( Prefetch( "field_mappings", FieldMapping.objects.order_by("input_field_name") ) ) .first() ) if collection is None: self.stderr.write( self.style.ERROR( "Mapping collection not found: %s" % options["collection"] ) ) sys.exit(1) blob = generate_report("dataimport/gendoc.html", {"collection": collection}) with open(options["output"], "wb") as outfile: outfile.write(blob)