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))) |