diff options
| author | zarkam <zarkam@zarkam.(none)> | 2011-01-29 13:24:20 +0100 | 
|---|---|---|
| committer | zarkam <zarkam@zarkam.(none)> | 2011-01-29 13:24:20 +0100 | 
| commit | c9a1754903035260f837c2a5d4ea9b6fe3a76ffb (patch) | |
| tree | d1d385f9f529231bf500550dce9f37342d8e8187 /ishtar/scripts/import_from_csv.py | |
| parent | 656f4a1e0d359b873d40c9df6ab951fb90637d10 (diff) | |
| parent | 0883d7029ebdb4a934407c95c19745b13fe558ca (diff) | |
| download | Ishtar-c9a1754903035260f837c2a5d4ea9b6fe3a76ffb.tar.bz2 Ishtar-c9a1754903035260f837c2a5d4ea9b6fe3a76ffb.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) | 
