diff -r 73f19fa4f997 -r 8f77cf71ab02 src/hdalab/management/commands/import_hda_insee_csv.py --- /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 = '' + 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