diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-01-18 18:41:39 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-01-19 00:18:02 +0100 | 
| commit | 494aada27e305658ce60b0815fd992857222682b (patch) | |
| tree | 17e9fbf51fc054d18ddcd7fabc87e8684daf4eb4 /scripts/import_from_csv.py | |
| parent | f384337ef0d9d2e40d09204f18c4a486e925132c (diff) | |
| download | Ishtar-494aada27e305658ce60b0815fd992857222682b.tar.bz2 Ishtar-494aada27e305658ce60b0815fd992857222682b.zip | |
Configure for publications on pypi, descriptions, etc.
Diffstat (limited to 'scripts/import_from_csv.py')
| -rwxr-xr-x | scripts/import_from_csv.py | 68 | 
1 files changed, 68 insertions, 0 deletions
| diff --git a/scripts/import_from_csv.py b/scripts/import_from_csv.py new file mode 100755 index 000000000..9640f1851 --- /dev/null +++ b/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 ishtar_common import models + +def insert_department(value): +    idx, label = value +    if models.Department.objects.filter(number=idx).count(): +        return +    models.Department(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.Department.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) | 
