44 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from django.core.management.base import BaseCommand
 | 
						|
import csv
 | 
						|
from hosting.models import VATRates
 | 
						|
 | 
						|
 | 
						|
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 = VATRates.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)))
 |