from django.core.management.base import BaseCommand from uncloud_pay.models import VATRate import urllib import csv import sys import io class Command(BaseCommand): help = '''Imports VAT Rates. Assume vat rates of format https://github.com/kdeldycke/vat-rates/blob/master/vat_rates.csv''' vat_url = "https://raw.githubusercontent.com/kdeldycke/vat-rates/main/vat_rates.csv" def add_arguments(self, parser): parser.add_argument('--vat-url', default=self.vat_url) def handle(self, *args, **options): vat_url = options['vat_url'] url_open = urllib.request.urlopen(vat_url) # map to fileio using stringIO csv_file = io.StringIO(url_open.read().decode('utf-8')) reader = csv.DictReader(csv_file) for row in reader: # print(row) obj, created = VATRate.objects.get_or_create( starting_date=row["start_date"], ending_date=row["stop_date"] if row["stop_date"] != "" else None, territory_codes=row["territory_codes"], currency_code=row["currency_code"], rate=row["rate"], rate_type=row["rate_type"], description=row["description"] )