diff --git a/apps/location/csv/aa_cities.csv b/apps/location/csv/aa_cities.csv new file mode 100644 index 00000000..37eeb0af --- /dev/null +++ b/apps/location/csv/aa_cities.csv @@ -0,0 +1,122 @@ +old_id,name,zip_code,country,,region,subregion,is_island +9854,Sainte Marie,97230,Antilles Guyane West Indies,11,null,null,1 +9846,La Guyane,,Antilles Guyane West Indies,,null,null,1 +9845,Macouba,97218,Antilles Guyane West Indies,,Martinique,Nord,0 +9844,La Martinique,,Antilles Guyane West Indies,,null,null,1 +9843,Guadeloupe,,Antilles Guyane West Indies,,Guadeloupe,null,1 +9693,Gustavia,97133,Antilles Guyane West Indies,,St Barthelemy,null,0 +9663,Saint Martin,97150,Antilles Guyane West Indies,,St Martin,null,0 +9662,Saint-Barthélemy,97133,Antilles Guyane West Indies,,St Barthelemy,null,0 +9661,Javouhey,97318,Antilles Guyane West Indies,,Guyane,null,0 +9660,Kaw,97353,Antilles Guyane West Indies,,Guyane,null,0 +9659,Apatou,97317,Antilles Guyane West Indies,,Guyane,null,0 +9658,La comte,97352,Antilles Guyane West Indies,,Guyane,null,0 +9657,St elie,97312,Antilles Guyane West Indies,,Guyane,null,0 +9656,Grand santi,97340,Antilles Guyane West Indies,,Guyane,null,0 +9655,Camopi,97330,Antilles Guyane West Indies,,Guyane,null,0 +9654,Maripasoula,97370,Antilles Guyane West Indies,,Guyane,null,0 +9653,Saul,97314,Antilles Guyane West Indies,,Guyane,null,0 +9652,Ouanary,97380,Antilles Guyane West Indies,,Guyane,null,0 +9651,Montsinery tonnegrande,97300,Antilles Guyane West Indies,,Guyane,null,0 +9650,Sinnamary,97315,Antilles Guyane West Indies,,Guyane,null,0 +9649,St Laurent du Maroni,97320,Antilles Guyane West Indies,,Guyane,null,0 +9648,Roura,97311,Antilles Guyane West Indies,,Guyane,null,0 +9647,Rémiré Montjoly,97354,Antilles Guyane West Indies,,Guyane,null,0 +9646,St georges,97313,Antilles Guyane West Indies,,Guyane,null,0 +9645,Matoury,97351,Antilles Guyane West Indies,,Guyane,null,0 +9644,Mana,97360,Antilles Guyane West Indies,,Guyane,null,0 +9643,Macouria,97355,Antilles Guyane West Indies,,Guyane,null,0 +9642,Kourou,97310,Antilles Guyane West Indies,,Guyane,null,0 +9641,Iracoubo,97350,Antilles Guyane West Indies,,Guyane,null,0 +9640,Cayenne,97300,Antilles Guyane West Indies,,Guyane,null,0 +9639,Regina,97390,Antilles Guyane West Indies,,Guyane,null,0 +9638,Vert Pré,97231,Antilles Guyane West Indies,,Martinique,Nord,0 +9637,Vauclin,97280,Antilles Guyane West Indies,,Martinique,Sud,0 +9636,Trois Ilets,97229,Antilles Guyane West Indies,,Martinique,Sud,0 +9635,La Trinité,97220,Antilles Guyane West Indies,,Martinique,Nord,0 +9634,Schoelcher,97233,Antilles Guyane West Indies,,Martinique,Nord,0 +9633,Saint-Pierre,97250,Antilles Guyane West Indies,,Martinique,Nord,0 +9632,Sainte Marie,97230,Antilles Guyane West Indies,,Martinique,Nord,0 +9631,Sainte-Luce,97228,Antilles Guyane West Indies,,Martinique,Sud,0 +9630,Saint Joseph,97212,Antilles Guyane West Indies,,Martinique,Nord,0 +9629,Saint Esprit,97270,Antilles Guyane West Indies,,Martinique,Sud,0 +9628,Sainte-Anne,97227,Antilles Guyane West Indies,,Martinique,Sud,0 +9627,Le Robert,97231,Antilles Guyane West Indies,,Martinique,Nord,0 +9626,Rivière Salée,97215,Antilles Guyane West Indies,,Martinique,Sud,0 +9625,Rivière Pilote,97211,Antilles Guyane West Indies,,Martinique,Nord,0 +9624,Prêcheur,97250,Antilles Guyane West Indies,,Martinique,Nord,0 +9623,Morne Vert,97226,Antilles Guyane West Indies,,Martinique,Nord,0 +9622,Morne Rouge,97260,Antilles Guyane West Indies,,Martinique,Nord,0 +9621,Le Marin,97290,Antilles Guyane West Indies,,Martinique,Sud,0 +9620,Marigot,97225,Antilles Guyane West Indies,,Martinique,Nord,0 +9619,Lorrain,97214,Antilles Guyane West Indies,,Martinique,Nord,0 +9618,Lamentin,97232,Antilles Guyane West Indies,,Martinique,Sud,0 +9617,Gros Morne,97213,Antilles Guyane West Indies,,Martinique,Nord,0 +9616,Grand Rivière,97218,Antilles Guyane West Indies,,Martinique,Nord,0 +9615,Le François,97240,Antilles Guyane West Indies,,Martinique,Sud,0 +9614,Fort de France,97200,Antilles Guyane West Indies,,Martinique,Nord,0 +9613,Fonds Saint Denis,97250,Antilles Guyane West Indies,,Martinique,Nord,0 +9612,Ducos,97224,Antilles Guyane West Indies,,Martinique,Sud,0 +9611,Le Diamant,97223,Antilles Guyane West Indies,,Martinique,Sud,0 +9610,Case Pilote,97222,Antilles Guyane West Indies,,Martinique,Nord,0 +9609,Le Carbet,97221,Antilles Guyane West Indies,,Martinique,Nord,0 +9608,Bellefontaine,97222,Antilles Guyane West Indies,,Martinique,Nord,0 +9607,Basse Pointe,97218,Antilles Guyane West Indies,,Martinique,Nord,0 +9606,Anses d'Arlet,97217,Antilles Guyane West Indies,,Martinique,Sud,0 +9605,Ajoupa Bouillon,97216,Antilles Guyane West Indies,,Martinique,Nord,0 +9604,Les mangles,97131,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9603,Douville,97180,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9602,Sainte-Marie,97230,Antilles Guyane West Indies,,Martinique,Nord,0 +9601,Pigeon,97132,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9600,Bananier,97130,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9599,Vieux-Habitants,97119,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9598,Vieux fort,97141,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9597,Trois rivieres,97114,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9596,Terre de Haut,97137,Antilles Guyane West Indies,,Guadeloupe,Autres les Îles de Guadeloupe,0 +9595,Terre de bas,97136,Antilles Guyane West Indies,,Guadeloupe,Autres les Îles de Guadeloupe,0 +9594,Sainte-Rose,97115,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9593,Sainte-Anne,97180,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9592,St louis,97134,Antilles Guyane West Indies,,Guadeloupe,Autres les Îles de Guadeloupe,0 +9591,Saint-François,97118,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9590,St claude,97120,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9589,Port louis,97117,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9588,Pointe noire,97116,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9587,Pointe-A-Pitre,97110,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9586,Petit canal,97131,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9585,Petit bourg,97170,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9584,Le moule,97160,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9583,Morne a l eau,97111,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9582,Lamentin,97129,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9581,Goyave,97128,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9580,Le Gosier,97190,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9579,Grand-Bourg,97112,Antilles Guyane West Indies,,Guadeloupe,Autres les Îles de Guadeloupe,0 +9578,Deshaies,97126,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9577,La desirade,97127,Antilles Guyane West Indies,,Guadeloupe,Autres les Îles de Guadeloupe,0 +9576,Gourbeyre,97113,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9575,Capesterre de Marie-Galante,97140,Antilles Guyane West Indies,,Guadeloupe,Autres les Îles de Guadeloupe,0 +9574,Capesterre belle eau,97130,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9573,Bouillante,97125,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9572,Basse terre,97100,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9571,Baillif,97123,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9570,Baie-Mahault,97122,Antilles Guyane West Indies,,Guadeloupe,Basse Terre,0 +9569,Anse-Bertrand,97121,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +9568,Les abymes,97139,Antilles Guyane West Indies,,Guadeloupe,Grande Terre,0 +11371,Cul-de-Sac,97150,Antilles Guyane West Indies,,St Martin,null,0 +11370,Ilet Pinel,97150,Antilles Guyane West Indies,,St Martin,null,0 +11369,Simpson Bay,97150,Antilles Guyane West Indies,,St Martin,null,0 +11368,Anse Marcel,97150,Antilles Guyane West Indies,,St Martin,null,0 +11367,Orient Bay,97150,Antilles Guyane West Indies,,St Martin,null,0 +11366,Marigot,97150,Antilles Guyane West Indies,,St Martin,null,0 +11365,Baie Longue,97150,Antilles Guyane West Indies,,St Martin,null,0 +11364,Baie Nettle,97150,Antilles Guyane West Indies,,St Martin,null,0 +11363,Baie Orientale,97150,Antilles Guyane West Indies,,St Martin,null,0 +11362,Oyster Pond,97150,Antilles Guyane West Indies,,St Martin,null,0 +11349,Rodney Bay,LC01 401,Antilles Guyane West Indies,,Sainte-Lucie,null,0 +11348,Good Lands,null,Antilles Guyane West Indies,,Sainte-Lucie,null,0 +11347,Soufriere,null,Antilles Guyane West Indies,,Sainte-Lucie,null,0 +11343,Gros Islet,LC0001,Antilles Guyane West Indies,,Sainte-Lucie,null,0 +11342,CAP ESTATE,null,Antilles Guyane West Indies,,Sainte-Lucie,null,0 +11341,Castries,null,Antilles Guyane West Indies,,Sainte-Lucie,null,0 +11303,Saint- Louis,97134,Antilles Guyane West Indies,,Guadeloupe,Autres les Îles de Guadeloupe,0 +11302,Grand Cul de Sac,97133,Antilles Guyane West Indies,,St Barthelemy,null,0 +11301,Grand Case,97150,Antilles Guyane West Indies,,St Martin,null,0 \ No newline at end of file diff --git a/apps/location/transfer_data.py b/apps/location/transfer_data.py index aaddf25d..b28f3480 100644 --- a/apps/location/transfer_data.py +++ b/apps/location/transfer_data.py @@ -3,6 +3,7 @@ from transfer import models as transfer_models from location.models import Country, Region, City, Address, WineRegion, CityGallery from pprint import pprint import json +from django.db.transaction import atomic from gallery.models import Image from pprint import pprint @@ -17,6 +18,8 @@ from news.models import News from review.models import Review from tag.models import TagCategory, ChosenTagSettings +import csv + from transfer.utils import clean_old_records @@ -541,65 +544,84 @@ def transfer_city_gallery(): f'Already added: {gallery_obj_exists_counter}') +@atomic def add_fake_country(): # add country country_data = { "name": '{"en-GB": "Antilles Guyane West Indies"}', - "code": "aa" + "code": "aa", + "svg_image": "svg/country/11-02-2019/658714.svg", + "mysql_ids": [] } - country_mysql_ids = transfer_models.Cities.objects.filter(country_code_2="AA").only("id") - if len(country_mysql_ids) < 1: - raise ValueError("Incorrect country code") - - country_data['mysql_ids'] = list(country_mysql_ids.values_list('id', flat=True)) country = Country.objects.create(**country_data) + # add regions and subregions regions_data = [ { "name": "Guadeloupe", - "code": "GP", + "code": "gp", "subregions": [ { "name": "Basse Terre", - "code": "", + "code": "bat", }, { "name": "Grande Terre", - "code": "", + "code": "grt", + }, + { + "name": "Autres les Îles de Guadeloupe", + "code": "aug", }, ] }, { "name": "Martinique", - "code": "MQ", + "code": "mq", + "subregions": [ + { + "name": "Nord", + "code": "nor", + }, + { + "name": "Sud", + "code": "sud", + }, + ] }, { "name": "Guyane", - "code": "GY", + "code": "gy", }, { "name": "St Barthelemy", - "code": "BL", + "code": "bl", }, { "name": "St Martin", - "code": "MF", + "code": "mf", }, { "name": "Sainte-Lucie", - "code": "LC", + "code": "lc", }, ] regions = {} for region_data in regions_data: - subregions = region_data['subregions'] if "subregions" in region_data else False + if "subregions" in region_data: + subregions = region_data['subregions'] + del(region_data['subregions']) + else: + subregions = False region_name = region_data['name'] region_data['name'] = '{"en-GB": "' + region_name + '"}' region_data['country'] = country + region_data['mysql_ids'] = [] + regions[region_name] = Region.objects.create(**region_data) if subregions: @@ -608,9 +630,70 @@ def add_fake_country(): subregion_data['name'] = '{"en-GB": "' + subregion_name + '"}' subregion_data['country'] = country subregion_data['parent_region'] = regions[region_name] + subregion_data['mysql_ids'] = [] regions[subregion_name] = Region.objects.create(**subregion_data) + # add cities + file = open(f"{settings.PROJECT_ROOT}/apps/location/csv/aa_cities.csv") + reader = csv.DictReader(file, delimiter=',') + for city_data in reader: + del(city_data['']) + + city_data['mysql_id'] = city_data['old_id'] + del(city_data['old_id']) + + city_data['postal_code'] = city_data['zip_code'] + del(city_data['zip_code']) + + if city_data['postal_code'] == 'null' or city_data['postal_code'] == '': + del(city_data['postal_code']) + + city_data["country"] = country + + if city_data['subregion'] != 'null': + region = regions[city_data['subregion']] + elif city_data['region'] != 'null': + region = regions[city_data['region']] + else: + del(city_data['region']) + region = None + + del(city_data['subregion']) + + city_data['region'] = region + + city_data['name_translated'] = '{"en-GB": "' + city_data['name'] + '"}' + + city_data['is_island'] = True if int(city_data['is_island']) > 0 else False + + if region is not None: + region.mysql_ids.append(city_data['mysql_id']) + + country.mysql_ids.append(city_data['mysql_id']) + + try: + mysql_data = transfer_models.Cities.objects.\ + only("map1", "map2", "map_ref", "situation").get(id=city_data['mysql_id']) + city_data['map1'] = mysql_data.map1 + city_data['map2'] = mysql_data.map2 + city_data['map_ref'] = mysql_data.map_ref + city_data['situation'] = mysql_data.situation + + except transfer_models.Cities.DoesNotExist: + pass + + City.objects.create(**city_data) + + country.save() + + for region_name, region in regions.items(): + if len(region.mysql_ids) > 0: + region.save() + + + + data_types = { "dictionaries": [ diff --git a/project/settings/local.py b/project/settings/local.py index 911eb06d..6c62c9e2 100644 --- a/project/settings/local.py +++ b/project/settings/local.py @@ -41,7 +41,19 @@ DATABASES.update({ 'PORT': 3306, 'NAME': 'dev', 'USER': 'dev', - 'PASSWORD': 'octosecret123'}}) + 'PASSWORD': 'octosecret123'}, + 'default': { + 'ENGINE': 'django.contrib.gis.db.backends.postgis', + 'NAME': os.environ.get('DB_NAME'), + 'USER': os.environ.get('DB_USERNAME'), + 'PASSWORD': os.environ.get('DB_PASSWORD'), + 'HOST': os.environ.get('DB_HOSTNAME'), + 'PORT': os.environ.get('DB_PORT'), + 'OPTIONS': { + 'options': '-c search_path=gm,public' + }, + }, + }) # LOGGING