forked from uncloud/uncloud
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
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"]
|
|
)
|