src/hdalab/management/commands/import_hda_insee_csv.py
changeset 271 8f77cf71ab02
parent 231 73123394bc53
child 272 1c774f7a0341
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hdalab/management/commands/import_hda_insee_csv.py	Tue Jun 17 10:25:33 2014 +0200
@@ -0,0 +1,70 @@
+# -*- coding: utf-8 -*-
+'''
+@author: raphv
+'''
+from django.core.management.base import BaseCommand, CommandError
+import django.utils.simplejson as json
+from SPARQLWrapper import SPARQLWrapper, JSON
+from hdalab.models import InseeCoords, DatasheetExtras
+from hdabo.models import Datasheet
+import csv
+import re
+import sys
+
+class Command(BaseCommand):
+    '''
+    Command to export tags
+    '''
+    args = '<path_to_csv_file>'
+    options = ''
+    help = """Imports HDA Lab INSEE codes from a csv file"""
+        
+    def handle(self, *args, **options):
+
+        if len(args) == 0 or not args[0]:
+            raise CommandError("Give a CSV File to import")
+        
+        filename = args[0]
+        
+        csvfile = open(filename, "rb")
+        dialect = csv.Sniffer().sniff(csvfile.read(1024))
+        csvfile.seek(0)
+        reader = csv.reader(csvfile, dialect)
+        fieldstoget = [ 'id', 'insee' ]
+        
+        
+        for i,line in enumerate(reader):
+            if i == 0:
+                fields = {}
+                minlength = 0
+                for j,field in enumerate(line):
+                    for fieldname in fieldstoget:
+                        if re.search('(?i)%s' % fieldname, field):
+                            fields[fieldname] = j
+                            minlength = max(j,minlength)
+            else:
+                if len(line) > minlength:
+                    rawdata = dict([(k,line[v].strip()) for k,v in fields.iteritems()])
+                    # Traitement special pour la Corse
+                    insee = int(re.sub('^2(A|B)','20',rawdata['insee']))
+                        
+                    hda_id = int(rawdata['id'])
+                    
+                    try:
+                        datasheet = Datasheet.objects.get(hda_id=hda_id)
+                    except Datasheet.DoesNotExist:
+                        #print "Datasheet for id %d does not exist" % hda_id
+                        datasheet = None
+                    try:
+                        inseecoord = InseeCoords.objects.get(insee=insee)
+                    except InseeCoords.DoesNotExist:
+                        print "INSEE entry for Insee Code %d does not exist" % insee
+                        inseecoord = None
+                    
+                    if datasheet is not None and inseecoord is not None:
+                        dsextra, created = DatasheetExtras.objects.get_or_create(datasheet=datasheet, defaults={'insee':inseecoord})
+                        if not created:
+                            dsextra.insee = inseecoord
+                            dsextra.save()
+        
+        csvfile.close()
\ No newline at end of file