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)