diff -r 73f19fa4f997 -r 8f77cf71ab02 web/hdalab/management/commands/import_hda_insee_csv.py --- a/web/hdalab/management/commands/import_hda_insee_csv.py Fri Nov 16 18:12:05 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -# -*- 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