diff options
author | Le Jeune Yann <lj.yann@gmail.com> | 2011-01-29 13:24:20 +0100 |
---|---|---|
committer | Le Jeune Yann <lj.yann@gmail.com> | 2011-01-29 13:24:20 +0100 |
commit | d690055480ef14bf51b6d172f8a2af19e080e5ce (patch) | |
tree | d1d385f9f529231bf500550dce9f37342d8e8187 /ishtar/scripts/import_from_csv.py | |
parent | def6a737e306aa04d6030475a793eb0c105b0065 (diff) | |
parent | cf50fe45a889946d62a5428fd50f68a349505180 (diff) | |
download | Ishtar-d690055480ef14bf51b6d172f8a2af19e080e5ce.tar.bz2 Ishtar-d690055480ef14bf51b6d172f8a2af19e080e5ce.zip |
Merge branch 'master' of ssh://lysithea.proxience.com/home/proxience/git/ishtar
Diffstat (limited to 'ishtar/scripts/import_from_csv.py')
-rwxr-xr-x | ishtar/scripts/import_from_csv.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/ishtar/scripts/import_from_csv.py b/ishtar/scripts/import_from_csv.py new file mode 100755 index 000000000..7eb655641 --- /dev/null +++ b/ishtar/scripts/import_from_csv.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +""" +Import departements and towns from csv file +""" + +DELIMITER = "," +QUOTECHAR = '"' + +import sys +import csv +sys.path.append('.') + +from django.core.management import setup_environ +import settings + +setup_environ(settings) + +from optparse import OptionParser + +from furnitures import models + +def insert_department(value): + idx, label = value + if models.Departement.objects.filter(number=idx).count(): + return + models.Departement(number=idx, label=label).save() + print idx, label, u" inserted" + +def insert_town(value): + idx, label = value + if models.Town.objects.filter(numero_insee=idx).count(): + return + try: + dpt = models.Departement.objects.get(number=idx[:2]) + except: + return + models.Town(numero_insee=idx, name=label, departement=dpt).save() + print idx, label, u" inserted" + +tables = {u"department":insert_department, + u"town":insert_town} + +usage = u"usage: %%prog csv_file.csv table_name\n\n"\ + u"Table name must be in: %s." % u", ".join(tables.keys()) +parser = OptionParser(usage=usage) + +(options, args) = parser.parse_args() + +try: + assert len(args) == 2 +except AssertionError: + parser.error(u"You must provide one csv file and the table name.") + +try: + assert args[1] in tables.keys() +except AssertionError: + parser.error(u"Incorrect table name.") + +try: + values = csv.reader(open(args[0], 'rb'), delimiter=DELIMITER, + quotechar=QUOTECHAR) +except (IOError): + parser.error(u"Incorrect CSV file.") + +for value in values: + tables[args[1]](value) |