diff options
| -rw-r--r-- | ishtar_common/fixtures/initial_dpts-fr.json | 1127 | ||||
| -rw-r--r-- | ishtar_common/management/commands/update_towns.py | 22 | ||||
| -rw-r--r-- | ishtar_common/migrations/0017_auto__add_state__add_field_department_state.py | 243 | ||||
| -rw-r--r-- | ishtar_common/models.py | 15 | 
4 files changed, 1406 insertions, 1 deletions
| diff --git a/ishtar_common/fixtures/initial_dpts-fr.json b/ishtar_common/fixtures/initial_dpts-fr.json new file mode 100644 index 000000000..721a96a8a --- /dev/null +++ b/ishtar_common/fixtures/initial_dpts-fr.json @@ -0,0 +1,1127 @@ +[ +    { +        "pk": 28,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "1",  +            "label": "Guadeloupe" +        } +    },  +    { +        "pk": 33,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "11",  +            "label": "\u00cele-de-France" +        } +    },  +    { +        "pk": 29,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "2",  +            "label": "Martinique" +        } +    },  +    { +        "pk": 34,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "21",  +            "label": "Champagne-Ardenne" +        } +    },  +    { +        "pk": 35,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "22",  +            "label": "Picardie" +        } +    },  +    { +        "pk": 36,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "23",  +            "label": "Haute-Normandie" +        } +    },  +    { +        "pk": 37,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "24",  +            "label": "Centre" +        } +    },  +    { +        "pk": 38,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "25",  +            "label": "Basse-Normandie" +        } +    },  +    { +        "pk": 39,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "26",  +            "label": "Bourgogne" +        } +    },  +    { +        "pk": 30,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "3",  +            "label": "Guyane" +        } +    },  +    { +        "pk": 40,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "31",  +            "label": "Nord-Pas-de-Calais" +        } +    },  +    { +        "pk": 31,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "4",  +            "label": "La R\u00e9union" +        } +    },  +    { +        "pk": 41,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "41",  +            "label": "Lorraine" +        } +    },  +    { +        "pk": 42,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "42",  +            "label": "Alsace" +        } +    },  +    { +        "pk": 43,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "43",  +            "label": "Franche-Comt\u00e9" +        } +    },  +    { +        "pk": 44,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "52",  +            "label": "Pays de la Loire" +        } +    },  +    { +        "pk": 45,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "53",  +            "label": "Bretagne" +        } +    },  +    { +        "pk": 46,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "54",  +            "label": "Poitou-Charentes" +        } +    },  +    { +        "pk": 32,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "6",  +            "label": "Mayotte" +        } +    },  +    { +        "pk": 47,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "72",  +            "label": "Aquitaine" +        } +    },  +    { +        "pk": 48,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "73",  +            "label": "Midi-Pyr\u00e9n\u00e9es" +        } +    },  +    { +        "pk": 49,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "74",  +            "label": "Limousin" +        } +    },  +    { +        "pk": 50,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "82",  +            "label": "Rh\u00f4ne-Alpes" +        } +    },  +    { +        "pk": 51,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "83",  +            "label": "Auvergne" +        } +    },  +    { +        "pk": 52,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "91",  +            "label": "Languedoc-Roussillon" +        } +    },  +    { +        "pk": 53,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "93",  +            "label": "Provence-Alpes-C\u00f4te d'Azur" +        } +    },  +    { +        "pk": 54,  +        "model": "ishtar_common.state",  +        "fields": { +            "number": "94",  +            "label": "Corse" +        } +    },  +    { +        "pk": 1,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "01",  +            "label": "Ain" +        } +    },  +    { +        "pk": 2,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 35,  +            "number": "02",  +            "label": "Aisne" +        } +    },  +    { +        "pk": 3,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 51,  +            "number": "03",  +            "label": "Allier" +        } +    },  +    { +        "pk": 4,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 53,  +            "number": "04",  +            "label": "Alpes-de-Haute-Provence" +        } +    },  +    { +        "pk": 5,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 53,  +            "number": "05",  +            "label": "Hautes-Alpes" +        } +    },  +    { +        "pk": 6,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 53,  +            "number": "06",  +            "label": "Alpes-Maritimes" +        } +    },  +    { +        "pk": 7,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "07",  +            "label": "Ard\u00e8che" +        } +    },  +    { +        "pk": 8,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 34,  +            "number": "08",  +            "label": "Ardennes" +        } +    },  +    { +        "pk": 9,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "09",  +            "label": "Ari\u00e8ge" +        } +    },  +    { +        "pk": 10,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 34,  +            "number": "10",  +            "label": "Aube" +        } +    },  +    { +        "pk": 11,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 52,  +            "number": "11",  +            "label": "Aude" +        } +    },  +    { +        "pk": 12,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "12",  +            "label": "Aveyron" +        } +    },  +    { +        "pk": 13,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 53,  +            "number": "13",  +            "label": "Bouches-du-Rh\u00f4ne" +        } +    },  +    { +        "pk": 14,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 38,  +            "number": "14",  +            "label": "Calvados" +        } +    },  +    { +        "pk": 15,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 51,  +            "number": "15",  +            "label": "Cantal" +        } +    },  +    { +        "pk": 16,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 46,  +            "number": "16",  +            "label": "Charente" +        } +    },  +    { +        "pk": 17,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 46,  +            "number": "17",  +            "label": "Charente-Maritime" +        } +    },  +    { +        "pk": 18,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 37,  +            "number": "18",  +            "label": "Cher" +        } +    },  +    { +        "pk": 19,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 49,  +            "number": "19",  +            "label": "Corr\u00e8ze" +        } +    },  +    { +        "pk": 22,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 39,  +            "number": "21",  +            "label": "C\u00f4te-d'Or" +        } +    },  +    { +        "pk": 23,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 45,  +            "number": "22",  +            "label": "C\u00f4tes-d'Armor" +        } +    },  +    { +        "pk": 24,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 49,  +            "number": "23",  +            "label": "Creuse" +        } +    },  +    { +        "pk": 25,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 47,  +            "number": "24",  +            "label": "Dordogne" +        } +    },  +    { +        "pk": 26,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 43,  +            "number": "25",  +            "label": "Doubs" +        } +    },  +    { +        "pk": 27,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "26",  +            "label": "Dr\u00f4me" +        } +    },  +    { +        "pk": 28,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 36,  +            "number": "27",  +            "label": "Eure" +        } +    },  +    { +        "pk": 29,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 37,  +            "number": "28",  +            "label": "Eure-et-Loir" +        } +    },  +    { +        "pk": 30,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 45,  +            "number": "29",  +            "label": "Finist\u00e8re" +        } +    },  +    { +        "pk": 20,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 54,  +            "number": "2A",  +            "label": "Corse-du-Sud" +        } +    },  +    { +        "pk": 21,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 54,  +            "number": "2B",  +            "label": "Haute-Corse" +        } +    },  +    { +        "pk": 31,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 52,  +            "number": "30",  +            "label": "Gard" +        } +    },  +    { +        "pk": 32,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "31",  +            "label": "Haute-Garonne" +        } +    },  +    { +        "pk": 33,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "32",  +            "label": "Gers" +        } +    },  +    { +        "pk": 34,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 47,  +            "number": "33",  +            "label": "Gironde" +        } +    },  +    { +        "pk": 35,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 52,  +            "number": "34",  +            "label": "H\u00e9rault" +        } +    },  +    { +        "pk": 36,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 45,  +            "number": "35",  +            "label": "Ille-et-Vilaine" +        } +    },  +    { +        "pk": 37,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 37,  +            "number": "36",  +            "label": "Indre" +        } +    },  +    { +        "pk": 38,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 37,  +            "number": "37",  +            "label": "Indre-et-Loire" +        } +    },  +    { +        "pk": 39,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "38",  +            "label": "Is\u00e8re" +        } +    },  +    { +        "pk": 40,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 43,  +            "number": "39",  +            "label": "Jura" +        } +    },  +    { +        "pk": 41,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 47,  +            "number": "40",  +            "label": "Landes" +        } +    },  +    { +        "pk": 42,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 37,  +            "number": "41",  +            "label": "Loir-et-Cher" +        } +    },  +    { +        "pk": 43,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "42",  +            "label": "Loire" +        } +    },  +    { +        "pk": 44,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 51,  +            "number": "43",  +            "label": "Haute-Loire" +        } +    },  +    { +        "pk": 45,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 44,  +            "number": "44",  +            "label": "Loire-Atlantique" +        } +    },  +    { +        "pk": 46,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 37,  +            "number": "45",  +            "label": "Loiret" +        } +    },  +    { +        "pk": 47,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "46",  +            "label": "Lot" +        } +    },  +    { +        "pk": 48,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 47,  +            "number": "47",  +            "label": "Lot-et-Garonne" +        } +    },  +    { +        "pk": 49,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 52,  +            "number": "48",  +            "label": "Loz\u00e8re" +        } +    },  +    { +        "pk": 50,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 44,  +            "number": "49",  +            "label": "Maine-et-Loire" +        } +    },  +    { +        "pk": 51,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 38,  +            "number": "50",  +            "label": "Manche" +        } +    },  +    { +        "pk": 52,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 34,  +            "number": "51",  +            "label": "Marne" +        } +    },  +    { +        "pk": 53,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 34,  +            "number": "52",  +            "label": "Haute-Marne" +        } +    },  +    { +        "pk": 54,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 44,  +            "number": "53",  +            "label": "Mayenne" +        } +    },  +    { +        "pk": 55,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 41,  +            "number": "54",  +            "label": "Meurthe-et-Moselle" +        } +    },  +    { +        "pk": 56,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 41,  +            "number": "55",  +            "label": "Meuse" +        } +    },  +    { +        "pk": 57,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 45,  +            "number": "56",  +            "label": "Morbihan" +        } +    },  +    { +        "pk": 58,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 41,  +            "number": "57",  +            "label": "Moselle" +        } +    },  +    { +        "pk": 59,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 39,  +            "number": "58",  +            "label": "Ni\u00e8vre" +        } +    },  +    { +        "pk": 60,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 40,  +            "number": "59",  +            "label": "Nord" +        } +    },  +    { +        "pk": 61,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 35,  +            "number": "60",  +            "label": "Oise" +        } +    },  +    { +        "pk": 62,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 38,  +            "number": "61",  +            "label": "Orne" +        } +    },  +    { +        "pk": 63,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 40,  +            "number": "62",  +            "label": "Pas-de-Calais" +        } +    },  +    { +        "pk": 64,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 51,  +            "number": "63",  +            "label": "Puy-de-D\u00f4me" +        } +    },  +    { +        "pk": 65,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 47,  +            "number": "64",  +            "label": "Pyr\u00e9n\u00e9es-Atlantiques" +        } +    },  +    { +        "pk": 66,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "65",  +            "label": "Hautes-Pyr\u00e9n\u00e9es" +        } +    },  +    { +        "pk": 67,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 52,  +            "number": "66",  +            "label": "Pyr\u00e9n\u00e9es-Orientales" +        } +    },  +    { +        "pk": 68,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 42,  +            "number": "67",  +            "label": "Bas-Rhin" +        } +    },  +    { +        "pk": 69,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 42,  +            "number": "68",  +            "label": "Haut-Rhin" +        } +    },  +    { +        "pk": 70,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "69",  +            "label": "Rh\u00f4ne" +        } +    },  +    { +        "pk": 71,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 43,  +            "number": "70",  +            "label": "Haute-Sa\u00f4ne" +        } +    },  +    { +        "pk": 72,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 39,  +            "number": "71",  +            "label": "Sa\u00f4ne-et-Loire" +        } +    },  +    { +        "pk": 73,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 44,  +            "number": "72",  +            "label": "Sarthe" +        } +    },  +    { +        "pk": 74,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "73",  +            "label": "Savoie" +        } +    },  +    { +        "pk": 75,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 50,  +            "number": "74",  +            "label": "Haute-Savoie" +        } +    },  +    { +        "pk": 76,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "75",  +            "label": "Paris" +        } +    },  +    { +        "pk": 77,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 36,  +            "number": "76",  +            "label": "Seine-Maritime" +        } +    },  +    { +        "pk": 78,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "77",  +            "label": "Seine-et-Marne" +        } +    },  +    { +        "pk": 79,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "78",  +            "label": "Yvelines" +        } +    },  +    { +        "pk": 80,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 46,  +            "number": "79",  +            "label": "Deux-S\u00e8vres" +        } +    },  +    { +        "pk": 81,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 35,  +            "number": "80",  +            "label": "Somme" +        } +    },  +    { +        "pk": 82,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "81",  +            "label": "Tarn" +        } +    },  +    { +        "pk": 83,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 48,  +            "number": "82",  +            "label": "Tarn-et-Garonne" +        } +    },  +    { +        "pk": 84,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 53,  +            "number": "83",  +            "label": "Var" +        } +    },  +    { +        "pk": 85,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 53,  +            "number": "84",  +            "label": "Vaucluse" +        } +    },  +    { +        "pk": 86,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 44,  +            "number": "85",  +            "label": "Vend\u00e9e" +        } +    },  +    { +        "pk": 87,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 46,  +            "number": "86",  +            "label": "Vienne" +        } +    },  +    { +        "pk": 88,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 49,  +            "number": "87",  +            "label": "Haute-Vienne" +        } +    },  +    { +        "pk": 89,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 41,  +            "number": "88",  +            "label": "Vosges" +        } +    },  +    { +        "pk": 90,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 39,  +            "number": "89",  +            "label": "Yonne" +        } +    },  +    { +        "pk": 91,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 43,  +            "number": "90",  +            "label": "Territoire de Belfort" +        } +    },  +    { +        "pk": 92,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "91",  +            "label": "Essonne" +        } +    },  +    { +        "pk": 93,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "92",  +            "label": "Hauts-de-Seine" +        } +    },  +    { +        "pk": 94,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "93",  +            "label": "Seine-Saint-Denis" +        } +    },  +    { +        "pk": 95,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "94",  +            "label": "Val-de-Marne" +        } +    },  +    { +        "pk": 96,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 33,  +            "number": "95",  +            "label": "Val-d'Oise" +        } +    },  +    { +        "pk": 97,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 28,  +            "number": "971",  +            "label": "Guadeloupe" +        } +    },  +    { +        "pk": 98,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 29,  +            "number": "972",  +            "label": "Martinique" +        } +    },  +    { +        "pk": 99,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 30,  +            "number": "973",  +            "label": "Guyane" +        } +    },  +    { +        "pk": 100,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 31,  +            "number": "974",  +            "label": "La R\u00e9union" +        } +    },  +    { +        "pk": 101,  +        "model": "ishtar_common.department",  +        "fields": { +            "state": 32,  +            "number": "976",  +            "label": "Mayotte" +        } +    } +]
\ No newline at end of file diff --git a/ishtar_common/management/commands/update_towns.py b/ishtar_common/management/commands/update_towns.py new file mode 100644 index 000000000..fa201b677 --- /dev/null +++ b/ishtar_common/management/commands/update_towns.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import csv +import datetime, time + +from django.conf import settings +from django.core.management.base import BaseCommand, CommandError + +from ishtar_common import tasks + +class Command(BaseCommand): +    help = "Update department for french towns" + +    def handle(self, *args, **options): +        self.stdout.write("* Loading towns\n") +        self.stdout.flush() +        created, updated = tasks.update_towns() +        self.stdout.write("%d towns created, %s towns updated\n\n" % (created, +                                                                      updated)) +        self.stdout.flush() + diff --git a/ishtar_common/migrations/0017_auto__add_state__add_field_department_state.py b/ishtar_common/migrations/0017_auto__add_state__add_field_department_state.py new file mode 100644 index 000000000..becf3a0ae --- /dev/null +++ b/ishtar_common/migrations/0017_auto__add_state__add_field_department_state.py @@ -0,0 +1,243 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + +    def forwards(self, orm): +        # Adding model 'State' +        db.create_table('ishtar_common_state', ( +            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), +            ('label', self.gf('django.db.models.fields.CharField')(max_length=30)), +            ('number', self.gf('django.db.models.fields.CharField')(unique=True, max_length=3)), +        )) +        db.send_create_signal('ishtar_common', ['State']) + +        # Adding field 'Department.state' +        db.add_column('ishtar_common_department', 'state', +                      self.gf('django.db.models.fields.related.ForeignKey')(to=orm['ishtar_common.State'], null=True, blank=True), +                      keep_default=False) + + +    def backwards(self, orm): +        # Deleting model 'State' +        db.delete_table('ishtar_common_state') + +        # Deleting field 'Department.state' +        db.delete_column('ishtar_common_department', 'state_id') + + +    models = { +        'auth.group': { +            'Meta': {'object_name': 'Group'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), +            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) +        }, +        'auth.permission': { +            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, +            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) +        }, +        'auth.user': { +            'Meta': {'object_name': 'User'}, +            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), +            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), +            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), +            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'contenttypes.contenttype': { +            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, +            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) +        }, +        'ishtar_common.arrondissement': { +            'Meta': {'object_name': 'Arrondissement'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.author': { +            'Meta': {'object_name': 'Author'}, +            'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) +        }, +        'ishtar_common.authortype': { +            'Meta': {'object_name': 'AuthorType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'ishtar_common.canton': { +            'Meta': {'object_name': 'Canton'}, +            'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.department': { +            'Meta': {'ordering': "['number']", 'object_name': 'Department'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), +            'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.documenttemplate': { +            'Meta': {'ordering': "['associated_object_name']", 'object_name': 'DocumentTemplate'}, +            'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) +        }, +        'ishtar_common.globalvar': { +            'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), +            'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.historicalorganization': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), +            'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), +            'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), +            'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), +            'merge_key': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '300'}), +            'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.import': { +            'Meta': {'object_name': 'Import'}, +            'creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), +            'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), +            'importer_type': ('django.db.models.fields.CharField', [], {'max_length': '200'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'state': ('django.db.models.fields.CharField', [], {'max_length': '2'}), +            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) +        }, +        'ishtar_common.ishtaruser': { +            'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), +            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) +        }, +        'ishtar_common.organization': { +            'Meta': {'object_name': 'Organization'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), +            'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), +            'merge_key': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '300'}), +            'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.organizationtype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'ishtar_common.person': { +            'Meta': {'object_name': 'Person'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), +            'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), +            'merge_key': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '2'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.persontype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'ishtar_common.sourcetype': { +            'Meta': {'object_name': 'SourceType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'ishtar_common.state': { +            'Meta': {'ordering': "['number']", 'object_name': 'State'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) +        }, +        'ishtar_common.town': { +            'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, +            'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), +            'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), +            'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        } +    } + +    complete_apps = ['ishtar_common']
\ No newline at end of file diff --git a/ishtar_common/models.py b/ishtar_common/models.py index fe907f014..358c66572 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -879,9 +879,22 @@ class DocumentTemplate(models.Model):          missing = ooo_replace(self.template, output_name, values)          return output_name +class State(models.Model): +    label = models.CharField(_(u"Label"), max_length=30) +    number = models.CharField(_(u"Number"), unique=True, max_length=3) + +    class Meta: +        verbose_name = _(u"State") +        ordering = ['number'] + +    def __unicode__(self): +        return self.label +  class Department(models.Model):      label = models.CharField(_(u"Label"), max_length=30)      number = models.CharField(_(u"Number"), unique=True, max_length=3) +    state = models.ForeignKey('State', verbose_name=_(u"State"), blank=True, +                              null=True)      class Meta:          verbose_name = _(u"Department") @@ -889,7 +902,7 @@ class Department(models.Model):          ordering = ['number']      def __unicode__(self): -        return u"%s (%s)" % (self.label, self.number) +        return self.label  class Address(BaseHistorizedItem):      address = models.TextField(_(u"Address"), null=True, blank=True) | 
