from argparse import FileType from sys import stdin from django.core.management import BaseCommand from media.models import Revue 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"] revues = [] for line in file: revues.append(line[:-1].split('|')) print("Registering", len(revues), "revues") imported = 0 for revue in revues: if len(revue) != 5: continue title = revue[0] number = revue[1] day = revue[2] if not day: day = None month = revue[3] if not month: month = None year = revue[4] if not year: year = None revue, created = Revue.objects.get_or_create( title=title, number=number.replace('*', ''), year=year, month=month, day=day, double=number.endswith('*'), ) if not created: self.stderr.write(self.style.WARNING( "One revue was already imported. Skipping...")) else: self.stdout.write(self.style.SUCCESS( "Revue imported")) imported += 1 self.stdout.write(self.style.SUCCESS( "{count} revues imported".format(count=imported)))