from argparse import FileType from sys import stdin from django.core.management import BaseCommand from media.forms import generate_side_identifier from media.models import Roman, Auteur class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument('input', nargs='?', type=FileType('r'), default=stdin, help="Revues to be imported.") def handle(self, *args, **options): file = options["input"] romans = [] for line in file: romans.append(line[:-1].split('|')) print("Registering", len(romans), "romans") imported = 0 for book in romans: if len(book) != 2: continue title = book[1] authors = [Auteur.objects.get_or_create(name=n)[0] for n in book[0].split(';')] side_identifier = generate_side_identifier(title, authors) roman = Roman.objects.create( title=title, side_identifier=side_identifier, ) roman.authors.set(authors) roman.save() self.stdout.write(self.style.SUCCESS( "Roman imported")) imported += 1 self.stdout.write(self.style.SUCCESS( "{count} romans imported".format(count=imported)))