from django.core.management.base import BaseCommand from uncloud_pay.models import VATRate import csv class Command(BaseCommand): help = '''Imports VAT Rates. Assume vat rates of format https://github.com/kdeldycke/vat-rates/blob/master/vat_rates.csv''' def add_arguments(self, parser): parser.add_argument('csv_file', nargs='+', type=str) def handle(self, *args, **options): try: for c_file in options['csv_file']: print("c_file = %s" % c_file) with open(c_file, mode='r') as csv_file: csv_reader = csv.DictReader(csv_file) line_count = 0 for row in csv_reader: if line_count == 0: line_count += 1 obj, created = VATRate.objects.get_or_create( start_date=row["start_date"], stop_date=row["stop_date"] if row["stop_date"] is not "" else None, territory_codes=row["territory_codes"], currency_code=row["currency_code"], rate=row["rate"], rate_type=row["rate_type"], description=row["description"] ) if created: self.stdout.write(self.style.SUCCESS( '%s. %s - %s - %s - %s' % ( line_count, obj.start_date, obj.stop_date, obj.territory_codes, obj.rate ) )) line_count+=1 except Exception as e: print(" *** Error occurred. Details {}".format(str(e)))