8945: Move extract city tool to third-party addons
This commit is contained in:
parent
ec289350a4
commit
6c77ef5e33
@ -1,642 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Gramps - a GTK+/GNOME based genealogy program
|
|
||||||
#
|
|
||||||
# Copyright (C) 2000-2007 Donald N. Allingham
|
|
||||||
# Copyright (C) 2008 Brian G. Matherly
|
|
||||||
# Copyright (C) 2010 Jakim Friant
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
|
|
||||||
"""Tools/Database Processing/Extract Place Data from a Place Title"""
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# python modules
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
import re
|
|
||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
|
||||||
_ = glocale.translation.gettext
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# gnome/gtk
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
from gi.repository import Gtk
|
|
||||||
from gi.repository import GObject
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# gramps modules
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
from gramps.gen.db import DbTxn
|
|
||||||
from gramps.gui.managedwindow import ManagedWindow
|
|
||||||
from gramps.gui.display import display_help
|
|
||||||
from gramps.plugins.lib.libplaceimport import PlaceImport
|
|
||||||
from gramps.gen.utils.location import get_main_location
|
|
||||||
from gramps.gen.display.place import displayer as place_displayer
|
|
||||||
from gramps.gen.lib import PlaceType, PlaceName
|
|
||||||
|
|
||||||
from gramps.gui.plug import tool
|
|
||||||
from gramps.gui.utils import ProgressMeter
|
|
||||||
from gramps.gui.glade import Glade
|
|
||||||
|
|
||||||
CITY_STATE_ZIP = re.compile("((\w|\s)+)\s*,\s*((\w|\s)+)\s*(,\s*((\d|-)+))", re.UNICODE)
|
|
||||||
CITY_STATE = re.compile("((?:\w|\s)+(?:-(?:\w|\s)+)*),((?:\w|\s)+)", re.UNICODE)
|
|
||||||
CITY_LAEN = re.compile("((?:\w|\s)+(?:-(?:\w|\s)+)*)\(((?:\w|\s)+)", re.UNICODE)
|
|
||||||
STATE_ZIP = re.compile("(.+)\s+([\d-]+)", re.UNICODE)
|
|
||||||
|
|
||||||
COUNTRY = ( _("United States of America"), _("Canada"), _("France"),_("Sweden"))
|
|
||||||
|
|
||||||
STATE_MAP = {
|
|
||||||
"AL" : ("Alabama", 0),
|
|
||||||
"AL." : ("Alabama", 0),
|
|
||||||
"ALABAMA" : ("Alabama", 0),
|
|
||||||
"AK" : ("Alaska" , 0),
|
|
||||||
"AK." : ("Alaska" , 0),
|
|
||||||
"ALASKA" : ("Alaska" , 0),
|
|
||||||
"AS" : ("American Samoa", 0),
|
|
||||||
"AS." : ("American Samoa", 0),
|
|
||||||
"AMERICAN SAMOA": ("American Samoa", 0),
|
|
||||||
"AZ" : ("Arizona", 0),
|
|
||||||
"AZ." : ("Arizona", 0),
|
|
||||||
"ARIZONA" : ("Arizona", 0),
|
|
||||||
"AR" : ("Arkansas" , 0),
|
|
||||||
"AR." : ("Arkansas" , 0),
|
|
||||||
"ARKANSAS" : ("Arkansas" , 0),
|
|
||||||
"ARK." : ("Arkansas" , 0),
|
|
||||||
"ARK" : ("Arkansas" , 0),
|
|
||||||
"CA" : ("California" , 0),
|
|
||||||
"CA." : ("California" , 0),
|
|
||||||
"CALIFORNIA" : ("California" , 0),
|
|
||||||
"CO" : ("Colorado" , 0),
|
|
||||||
"COLO" : ("Colorado" , 0),
|
|
||||||
"COLO." : ("Colorado" , 0),
|
|
||||||
"COLORADO" : ("Colorado" , 0),
|
|
||||||
"CT" : ("Connecticut" , 0),
|
|
||||||
"CT." : ("Connecticut" , 0),
|
|
||||||
"CONNECTICUT" : ("Connecticut" , 0),
|
|
||||||
"DE" : ("Delaware" , 0),
|
|
||||||
"DE." : ("Delaware" , 0),
|
|
||||||
"DELAWARE" : ("Delaware" , 0),
|
|
||||||
"DC" : ("District of Columbia" , 0),
|
|
||||||
"D.C." : ("District of Columbia" , 0),
|
|
||||||
"DC." : ("District of Columbia" , 0),
|
|
||||||
"DISTRICT OF COLUMBIA" : ("District of Columbia" , 0),
|
|
||||||
"FL" : ("Florida" , 0),
|
|
||||||
"FL." : ("Florida" , 0),
|
|
||||||
"FLA" : ("Florida" , 0),
|
|
||||||
"FLA." : ("Florida" , 0),
|
|
||||||
"FLORIDA" : ("Florida" , 0),
|
|
||||||
"GA" : ("Georgia" , 0),
|
|
||||||
"GA." : ("Georgia" , 0),
|
|
||||||
"GEORGIA" : ("Georgia" , 0),
|
|
||||||
"GU" : ("Guam" , 0),
|
|
||||||
"GU." : ("Guam" , 0),
|
|
||||||
"GUAM" : ("Guam" , 0),
|
|
||||||
"HI" : ("Hawaii" , 0),
|
|
||||||
"HI." : ("Hawaii" , 0),
|
|
||||||
"HAWAII" : ("Hawaii" , 0),
|
|
||||||
"ID" : ("Idaho" , 0),
|
|
||||||
"ID." : ("Idaho" , 0),
|
|
||||||
"IDAHO" : ("Idaho" , 0),
|
|
||||||
"IL" : ("Illinois" , 0),
|
|
||||||
"IL." : ("Illinois" , 0),
|
|
||||||
"ILLINOIS" : ("Illinois" , 0),
|
|
||||||
"ILL" : ("Illinois" , 0),
|
|
||||||
"ILL." : ("Illinois" , 0),
|
|
||||||
"ILLS" : ("Illinois" , 0),
|
|
||||||
"ILLS." : ("Illinois" , 0),
|
|
||||||
"IN" : ("Indiana" , 0),
|
|
||||||
"IN." : ("Indiana" , 0),
|
|
||||||
"INDIANA" : ("Indiana" , 0),
|
|
||||||
"IA" : ("Iowa" , 0),
|
|
||||||
"IA." : ("Iowa" , 0),
|
|
||||||
"IOWA" : ("Iowa" , 0),
|
|
||||||
"KS" : ("Kansas" , 0),
|
|
||||||
"KS." : ("Kansas" , 0),
|
|
||||||
"KANSAS" : ("Kansas" , 0),
|
|
||||||
"KY" : ("Kentucky" , 0),
|
|
||||||
"KY." : ("Kentucky" , 0),
|
|
||||||
"KENTUCKY" : ("Kentucky" , 0),
|
|
||||||
"LA" : ("Louisiana" , 0),
|
|
||||||
"LA." : ("Louisiana" , 0),
|
|
||||||
"LOUISIANA" : ("Louisiana" , 0),
|
|
||||||
"ME" : ("Maine" , 0),
|
|
||||||
"ME." : ("Maine" , 0),
|
|
||||||
"MAINE" : ("Maine" , 0),
|
|
||||||
"MD" : ("Maryland" , 0),
|
|
||||||
"MD." : ("Maryland" , 0),
|
|
||||||
"MARYLAND" : ("Maryland" , 0),
|
|
||||||
"MA" : ("Massachusetts" , 0),
|
|
||||||
"MA." : ("Massachusetts" , 0),
|
|
||||||
"MASSACHUSETTS" : ("Massachusetts" , 0),
|
|
||||||
"MI" : ("Michigan" , 0),
|
|
||||||
"MI." : ("Michigan" , 0),
|
|
||||||
"MICH." : ("Michigan" , 0),
|
|
||||||
"MICH" : ("Michigan" , 0),
|
|
||||||
"MN" : ("Minnesota" , 0),
|
|
||||||
"MN." : ("Minnesota" , 0),
|
|
||||||
"MINNESOTA" : ("Minnesota" , 0),
|
|
||||||
"MS" : ("Mississippi" , 0),
|
|
||||||
"MS." : ("Mississippi" , 0),
|
|
||||||
"MISSISSIPPI" : ("Mississippi" , 0),
|
|
||||||
"MO" : ("Missouri" , 0),
|
|
||||||
"MO." : ("Missouri" , 0),
|
|
||||||
"MISSOURI" : ("Missouri" , 0),
|
|
||||||
"MT" : ("Montana" , 0),
|
|
||||||
"MT." : ("Montana" , 0),
|
|
||||||
"MONTANA" : ("Montana" , 0),
|
|
||||||
"NE" : ("Nebraska" , 0),
|
|
||||||
"NE." : ("Nebraska" , 0),
|
|
||||||
"NEBRASKA" : ("Nebraska" , 0),
|
|
||||||
"NV" : ("Nevada" , 0),
|
|
||||||
"NV." : ("Nevada" , 0),
|
|
||||||
"NEVADA" : ("Nevada" , 0),
|
|
||||||
"NH" : ("New Hampshire" , 0),
|
|
||||||
"NH." : ("New Hampshire" , 0),
|
|
||||||
"N.H." : ("New Hampshire" , 0),
|
|
||||||
"NEW HAMPSHIRE" : ("New Hampshire" , 0),
|
|
||||||
"NJ" : ("New Jersey" , 0),
|
|
||||||
"NJ." : ("New Jersey" , 0),
|
|
||||||
"N.J." : ("New Jersey" , 0),
|
|
||||||
"NEW JERSEY" : ("New Jersey" , 0),
|
|
||||||
"NM" : ("New Mexico" , 0),
|
|
||||||
"NM." : ("New Mexico" , 0),
|
|
||||||
"NEW MEXICO" : ("New Mexico" , 0),
|
|
||||||
"NY" : ("New York" , 0),
|
|
||||||
"N.Y." : ("New York" , 0),
|
|
||||||
"NY." : ("New York" , 0),
|
|
||||||
"NEW YORK" : ("New York" , 0),
|
|
||||||
"NC" : ("North Carolina" , 0),
|
|
||||||
"NC." : ("North Carolina" , 0),
|
|
||||||
"N.C." : ("North Carolina" , 0),
|
|
||||||
"NORTH CAROLINA": ("North Carolina" , 0),
|
|
||||||
"ND" : ("North Dakota" , 0),
|
|
||||||
"ND." : ("North Dakota" , 0),
|
|
||||||
"N.D." : ("North Dakota" , 0),
|
|
||||||
"NORTH DAKOTA" : ("North Dakota" , 0),
|
|
||||||
"OH" : ("Ohio" , 0),
|
|
||||||
"OH." : ("Ohio" , 0),
|
|
||||||
"OHIO" : ("Ohio" , 0),
|
|
||||||
"OK" : ("Oklahoma" , 0),
|
|
||||||
"OKLA" : ("Oklahoma" , 0),
|
|
||||||
"OKLA." : ("Oklahoma" , 0),
|
|
||||||
"OK." : ("Oklahoma" , 0),
|
|
||||||
"OKLAHOMA" : ("Oklahoma" , 0),
|
|
||||||
"OR" : ("Oregon" , 0),
|
|
||||||
"OR." : ("Oregon" , 0),
|
|
||||||
"OREGON" : ("Oregon" , 0),
|
|
||||||
"PA" : ("Pennsylvania" , 0),
|
|
||||||
"PA." : ("Pennsylvania" , 0),
|
|
||||||
"PENNSYLVANIA" : ("Pennsylvania" , 0),
|
|
||||||
"PR" : ("Puerto Rico" , 0),
|
|
||||||
"PUERTO RICO" : ("Puerto Rico" , 0),
|
|
||||||
"RI" : ("Rhode Island" , 0),
|
|
||||||
"RI." : ("Rhode Island" , 0),
|
|
||||||
"R.I." : ("Rhode Island" , 0),
|
|
||||||
"RHODE ISLAND" : ("Rhode Island" , 0),
|
|
||||||
"SC" : ("South Carolina" , 0),
|
|
||||||
"SC." : ("South Carolina" , 0),
|
|
||||||
"S.C." : ("South Carolina" , 0),
|
|
||||||
"SOUTH CAROLINA": ("South Carolina" , 0),
|
|
||||||
"SD" : ("South Dakota" , 0),
|
|
||||||
"SD." : ("South Dakota" , 0),
|
|
||||||
"S.D." : ("South Dakota" , 0),
|
|
||||||
"SOUTH DAKOTA" : ("South Dakota" , 0),
|
|
||||||
"TN" : ("Tennessee" , 0),
|
|
||||||
"TN." : ("Tennessee" , 0),
|
|
||||||
"TENNESSEE" : ("Tennessee" , 0),
|
|
||||||
"TENN." : ("Tennessee" , 0),
|
|
||||||
"TENN" : ("Tennessee" , 0),
|
|
||||||
"TX" : ("Texas" , 0),
|
|
||||||
"TX." : ("Texas" , 0),
|
|
||||||
"TEXAS" : ("Texas" , 0),
|
|
||||||
"UT" : ("Utah" , 0),
|
|
||||||
"UT." : ("Utah" , 0),
|
|
||||||
"UTAH" : ("Utah" , 0),
|
|
||||||
"VT" : ("Vermont" , 0),
|
|
||||||
"VT." : ("Vermont" , 0),
|
|
||||||
"VERMONT" : ("Vermont" , 0),
|
|
||||||
"VI" : ("Virgin Islands" , 0),
|
|
||||||
"VIRGIN ISLANDS": ("Virgin Islands" , 0),
|
|
||||||
"VA" : ("Virginia" , 0),
|
|
||||||
"VA." : ("Virginia" , 0),
|
|
||||||
"VIRGINIA" : ("Virginia" , 0),
|
|
||||||
"WA" : ("Washington" , 0),
|
|
||||||
"WA." : ("Washington" , 0),
|
|
||||||
"WASHINGTON" : ("Washington" , 0),
|
|
||||||
"WV" : ("West Virginia" , 0),
|
|
||||||
"WV." : ("West Virginia" , 0),
|
|
||||||
"W.V." : ("West Virginia" , 0),
|
|
||||||
"WEST VIRGINIA" : ("West Virginia" , 0),
|
|
||||||
"WI" : ("Wisconsin" , 0),
|
|
||||||
"WI." : ("Wisconsin" , 0),
|
|
||||||
"WISCONSIN" : ("Wisconsin" , 0),
|
|
||||||
"WY" : ("Wyoming" , 0),
|
|
||||||
"WY." : ("Wyoming" , 0),
|
|
||||||
"WYOMING" : ("Wyoming" , 0),
|
|
||||||
"AB" : ("Alberta", 1),
|
|
||||||
"AB." : ("Alberta", 1),
|
|
||||||
"ALBERTA" : ("Alberta", 1),
|
|
||||||
"BC" : ("British Columbia", 1),
|
|
||||||
"BC." : ("British Columbia", 1),
|
|
||||||
"B.C." : ("British Columbia", 1),
|
|
||||||
"MB" : ("Manitoba", 1),
|
|
||||||
"MB." : ("Manitoba", 1),
|
|
||||||
"MANITOBA" : ("Manitoba", 1),
|
|
||||||
"NB" : ("New Brunswick", 1),
|
|
||||||
"N.B." : ("New Brunswick", 1),
|
|
||||||
"NB." : ("New Brunswick", 1),
|
|
||||||
"NEW BRUNSWICK" : ("New Brunswick", 1),
|
|
||||||
"NL" : ("Newfoundland and Labrador", 1),
|
|
||||||
"NL." : ("Newfoundland and Labrador", 1),
|
|
||||||
"N.L." : ("Newfoundland and Labrador", 1),
|
|
||||||
"NEWFOUNDLAND" : ("Newfoundland and Labrador", 1),
|
|
||||||
"NEWFOUNDLAND AND LABRADOR" : ("Newfoundland and Labrador", 1),
|
|
||||||
"LABRADOR" : ("Newfoundland and Labrador", 1),
|
|
||||||
"NT" : ("Northwest Territories", 1),
|
|
||||||
"NT." : ("Northwest Territories", 1),
|
|
||||||
"N.T." : ("Northwest Territories", 1),
|
|
||||||
"NORTHWEST TERRITORIES" : ("Northwest Territories", 1),
|
|
||||||
"NS" : ("Nova Scotia", 1),
|
|
||||||
"NS." : ("Nova Scotia", 1),
|
|
||||||
"N.S." : ("Nova Scotia", 1),
|
|
||||||
"NOVA SCOTIA" : ("Nova Scotia", 1),
|
|
||||||
"NU" : ("Nunavut", 1),
|
|
||||||
"NU." : ("Nunavut", 1),
|
|
||||||
"NUNAVUT" : ("Nunavut", 1),
|
|
||||||
"ON" : ("Ontario", 1),
|
|
||||||
"ON." : ("Ontario", 1),
|
|
||||||
"ONTARIO" : ("Ontario", 1),
|
|
||||||
"PE" : ("Prince Edward Island", 1),
|
|
||||||
"PE." : ("Prince Edward Island", 1),
|
|
||||||
"PRINCE EDWARD ISLAND" : ("Prince Edward Island", 1),
|
|
||||||
"QC" : ("Quebec", 1),
|
|
||||||
"QC." : ("Quebec", 1),
|
|
||||||
"QUEBEC" : ("Quebec", 1),
|
|
||||||
"SK" : ("Saskatchewan", 1),
|
|
||||||
"SK." : ("Saskatchewan", 1),
|
|
||||||
"SASKATCHEWAN" : ("Saskatchewan", 1),
|
|
||||||
"YT" : ("Yukon", 1),
|
|
||||||
"YT." : ("Yukon", 1),
|
|
||||||
"YUKON" : ("Yukon", 1),
|
|
||||||
"ALSACE" : ("Alsace", 2),
|
|
||||||
"ALS" : ("ALS-Alsace", 2),
|
|
||||||
"AQUITAINE" : ("Aquitaine", 2),
|
|
||||||
"AQU" : ("AQU-Aquitaine", 2),
|
|
||||||
"AUVERGNE" : ("Auvergne", 2),
|
|
||||||
"AUV" : ("AUV-Auvergne", 2),
|
|
||||||
"BOURGOGNE" : ("Bourgogne", 2),
|
|
||||||
"BOU" : ("BOU-Bourgogne", 2),
|
|
||||||
"BRETAGNE" : ("Bretagne", 2),
|
|
||||||
"BRE" : ("BRE-Bretagne", 2),
|
|
||||||
"CENTRE" : ("Centre - Val de Loire", 2),
|
|
||||||
"CEN" : ("CEN-Centre - Val de Loire", 2),
|
|
||||||
"CHAMPAGNE" : ("Champagne-Ardennes", 2),
|
|
||||||
"CHA" : ("CHA-Champagne-Ardennes", 2),
|
|
||||||
"CORSE" : ("Corse", 2),
|
|
||||||
"COR" : ("COR-Corse", 2),
|
|
||||||
"FRANCHE-COMTE" : ("Franche-Comté", 2),
|
|
||||||
"FCO" : ("FCO-Franche-Comté", 2),
|
|
||||||
"ILE DE FRANCE" : ("Ile de France", 2),
|
|
||||||
"IDF" : ("IDF-Ile de France", 2),
|
|
||||||
"LIMOUSIN" : ("Limousin", 2),
|
|
||||||
"LIM" : ("LIM-Limousin", 2),
|
|
||||||
"LORRAINE" : ("Lorraine", 2),
|
|
||||||
"LOR" : ("LOR-Lorraine", 2),
|
|
||||||
"LANGUEDOC" : ("Languedoc-Roussillon", 2),
|
|
||||||
"LRO" : ("LRO-Languedoc-Roussillon", 2),
|
|
||||||
"MIDI PYRENEE" : ("Midi-Pyrénée", 2),
|
|
||||||
"MPY" : ("MPY-Midi-Pyrénée", 2),
|
|
||||||
"HAUTE NORMANDIE": ("Haute Normandie", 2),
|
|
||||||
"NOH" : ("NOH-Haute Normandie", 2),
|
|
||||||
"BASSE NORMANDIE": ("Basse Normandie", 2),
|
|
||||||
"NOB" : ("NOB-Basse Normandie", 2),
|
|
||||||
"NORD PAS CALAIS": ("Nord-Pas de Calais", 2),
|
|
||||||
"NPC" : ("NPC-Nord-Pas de Calais", 2),
|
|
||||||
"PROVENCE" : ("Provence-Alpes-Côte d'Azur", 2),
|
|
||||||
"PCA" : ("PCA-Provence-Alpes-Côte d'Azur", 2),
|
|
||||||
"POITOU-CHARENTES": ("Poitou-Charentes", 2),
|
|
||||||
"PCH" : ("PCH-Poitou-Charentes", 2),
|
|
||||||
"PAYS DE LOIRE" : ("Pays de Loire", 2),
|
|
||||||
"PDL" : ("PDL-Pays de Loire", 2),
|
|
||||||
"PICARDIE" : ("Picardie", 2),
|
|
||||||
"PIC" : ("PIC-Picardie", 2),
|
|
||||||
"RHONE-ALPES" : ("Rhône-Alpes", 2),
|
|
||||||
"RAL" : ("RAL-Rhône-Alpes", 2),
|
|
||||||
"AOM" : ("AOM-Autres Territoires d'Outre-Mer", 2),
|
|
||||||
"COM" : ("COM-Collectivité Territoriale d'Outre-Mer", 2),
|
|
||||||
"DOM" : ("DOM-Départements d'Outre-Mer", 2),
|
|
||||||
"TOM" : ("TOM-Territoires d'Outre-Mer", 2),
|
|
||||||
"GUA" : ("GUA-Guadeloupe", 2),
|
|
||||||
"GUADELOUPE" : ("Guadeloupe", 2),
|
|
||||||
"MAR" : ("MAR-Martinique", 2),
|
|
||||||
"MARTINIQUE" : ("Martinique", 2),
|
|
||||||
"GUY" : ("GUY-Guyane", 2),
|
|
||||||
"GUYANE" : ("Guyane", 2),
|
|
||||||
"REU" : ("REU-Réunion", 2),
|
|
||||||
"REUNION" : ("Réunion", 2),
|
|
||||||
"MIQ" : ("MIQ-Saint-Pierre et Miquelon", 2),
|
|
||||||
"MIQUELON" : ("Saint-Pierre et Miquelon", 2),
|
|
||||||
"MAY" : ("MAY-Mayotte", 2),
|
|
||||||
"MAYOTTE" : ("Mayotte", 2),
|
|
||||||
"(A)" : ("Stockholms stad", 3),
|
|
||||||
"(AB)" : ("Stockholms stad/län", 3),
|
|
||||||
"(B)" : ("Stockholms län", 3),
|
|
||||||
"(C)" : ("Uppsala län", 3),
|
|
||||||
"(D)" : ("Södermanlands län", 3),
|
|
||||||
"(E)" : ("Östergötlands län", 3),
|
|
||||||
"(F)" : ("Jönköpings län", 3),
|
|
||||||
"(G)" : ("Kronobergs län", 3),
|
|
||||||
"(H)" : ("Kalmar län", 3),
|
|
||||||
"(I)" : ("Gotlands län", 3),
|
|
||||||
"(K)" : ("Blekinge län", 3),
|
|
||||||
"(L)" : ("Kristianstads län", 3),
|
|
||||||
"(M)" : ("Malmöhus län", 3),
|
|
||||||
"(N)" : ("Hallands län", 3),
|
|
||||||
"(O)" : ("Göteborgs- och Bohuslän", 3),
|
|
||||||
"(P)" : ("Älvsborgs län", 3),
|
|
||||||
"(R)" : ("Skaraborg län", 3),
|
|
||||||
"(S)" : ("Värmlands län", 3),
|
|
||||||
"(T)" : ("Örebro län", 3),
|
|
||||||
"(U)" : ("Västmanlands län", 3),
|
|
||||||
"(W)" : ("Kopparbergs län", 3),
|
|
||||||
"(X)" : ("Gävleborgs län", 3),
|
|
||||||
"(Y)" : ("Västernorrlands län", 3),
|
|
||||||
"(AC)" : ("Västerbottens län", 3),
|
|
||||||
"(BD)" : ("Norrbottens län", 3),
|
|
||||||
}
|
|
||||||
|
|
||||||
COLS = [
|
|
||||||
(_('Place title'), 1),
|
|
||||||
(_('City'), 2),
|
|
||||||
(_('State'), 3),
|
|
||||||
(_('ZIP/Postal Code'), 4),
|
|
||||||
(_('Country'), 5)
|
|
||||||
]
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# ExtractCity
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
class ExtractCity(tool.BatchTool, ManagedWindow):
|
|
||||||
"""
|
|
||||||
Extracts city, state, and zip code information from an place description
|
|
||||||
if the title is empty and the description falls into the category of:
|
|
||||||
|
|
||||||
New York, NY 10000
|
|
||||||
|
|
||||||
Sorry for those not in the US or Canada. I doubt this will work for any
|
|
||||||
other locales.
|
|
||||||
Works for Sweden if the decriptions is like
|
|
||||||
Stockholm (A)
|
|
||||||
where the letter A is the abbreviation letter for laen.
|
|
||||||
Works for France if the description is like
|
|
||||||
Paris, IDF 75000, FRA
|
|
||||||
or Paris, ILE DE FRANCE 75000, FRA
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, dbstate, user, options_class, name, callback=None):
|
|
||||||
self.uistate = user.uistate
|
|
||||||
self.label = _('Extract Place data')
|
|
||||||
|
|
||||||
ManagedWindow.__init__(self, self.uistate, [], self.__class__)
|
|
||||||
self.set_window(Gtk.Window(), Gtk.Label(), '')
|
|
||||||
|
|
||||||
tool.BatchTool.__init__(self, dbstate, user, options_class, name)
|
|
||||||
|
|
||||||
if not self.fail:
|
|
||||||
self.uistate.set_busy_cursor(True)
|
|
||||||
self.run(dbstate.db)
|
|
||||||
self.uistate.set_busy_cursor(False)
|
|
||||||
|
|
||||||
def run(self, db):
|
|
||||||
"""
|
|
||||||
Performs the actual extraction of information
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.progress = ProgressMeter(_('Checking Place Titles'), '')
|
|
||||||
self.progress.set_pass(_('Looking for place fields'),
|
|
||||||
self.db.get_number_of_places())
|
|
||||||
|
|
||||||
self.name_list = []
|
|
||||||
self.place_import = PlaceImport(db)
|
|
||||||
|
|
||||||
for place in db.iter_places():
|
|
||||||
descr = place_displayer.display(db, place)
|
|
||||||
self.progress.step()
|
|
||||||
|
|
||||||
loc = get_main_location(db, place)
|
|
||||||
location = ((loc.get(PlaceType.STREET, '')),
|
|
||||||
(loc.get(PlaceType.LOCALITY, '')),
|
|
||||||
(loc.get(PlaceType.PARISH, '')),
|
|
||||||
(loc.get(PlaceType.CITY, '')),
|
|
||||||
(loc.get(PlaceType.COUNTY, '')),
|
|
||||||
(loc.get(PlaceType.STATE, '')),
|
|
||||||
(loc.get(PlaceType.COUNTRY, '')))
|
|
||||||
self.place_import.store_location(location, place.handle)
|
|
||||||
|
|
||||||
if len(place.get_placeref_list()) == 0:
|
|
||||||
|
|
||||||
match = CITY_STATE_ZIP.match(descr.strip())
|
|
||||||
if match:
|
|
||||||
data = match.groups()
|
|
||||||
city = data[0]
|
|
||||||
state = data[2]
|
|
||||||
postal = data[5]
|
|
||||||
|
|
||||||
val = " ".join(state.strip().split()).upper()
|
|
||||||
if state:
|
|
||||||
new_state = STATE_MAP.get(val.upper())
|
|
||||||
if new_state:
|
|
||||||
self.name_list.append(
|
|
||||||
(place.handle, (city, new_state[0], postal,
|
|
||||||
COUNTRY[new_state[1]])))
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Check if there is a left parant. in the string, might be Swedish laen.
|
|
||||||
match = CITY_LAEN.match(descr.strip().replace(","," "))
|
|
||||||
if match:
|
|
||||||
data = match.groups()
|
|
||||||
city = data[0]
|
|
||||||
state = '(' + data[1] + ')'
|
|
||||||
postal = None
|
|
||||||
val = " ".join(state.strip().split()).upper()
|
|
||||||
if state:
|
|
||||||
new_state = STATE_MAP.get(val.upper())
|
|
||||||
if new_state:
|
|
||||||
self.name_list.append(
|
|
||||||
(place.handle, (city, new_state[0], postal,
|
|
||||||
COUNTRY[new_state[1]])))
|
|
||||||
continue
|
|
||||||
match = CITY_STATE.match(descr.strip())
|
|
||||||
if match:
|
|
||||||
data = match.groups()
|
|
||||||
city = data[0]
|
|
||||||
state = data[1]
|
|
||||||
postal = None
|
|
||||||
if state:
|
|
||||||
m0 = STATE_ZIP.match(state)
|
|
||||||
if m0:
|
|
||||||
(state, postal) = m0.groups()
|
|
||||||
|
|
||||||
val = " ".join(state.strip().split()).upper()
|
|
||||||
if state:
|
|
||||||
new_state = STATE_MAP.get(val.upper())
|
|
||||||
if new_state:
|
|
||||||
self.name_list.append(
|
|
||||||
(place.handle, (city, new_state[0], postal,
|
|
||||||
COUNTRY[new_state[1]])))
|
|
||||||
continue
|
|
||||||
|
|
||||||
val = " ".join(descr.strip().split()).upper()
|
|
||||||
new_state = STATE_MAP.get(val)
|
|
||||||
if new_state:
|
|
||||||
self.name_list.append(
|
|
||||||
(place.handle, (None, new_state[0], None,
|
|
||||||
COUNTRY[new_state[1]])))
|
|
||||||
self.progress.close()
|
|
||||||
|
|
||||||
if self.name_list:
|
|
||||||
self.display()
|
|
||||||
else:
|
|
||||||
self.close()
|
|
||||||
from gramps.gui.dialog import OkDialog
|
|
||||||
OkDialog(_('No modifications made'),
|
|
||||||
_("No place information could be extracted."),
|
|
||||||
parent=self.uistate.window)
|
|
||||||
|
|
||||||
def display(self):
|
|
||||||
|
|
||||||
self.top = Glade("changenames.glade")
|
|
||||||
window = self.top.toplevel
|
|
||||||
self.top.connect_signals({
|
|
||||||
"destroy_passed_object" : self.close,
|
|
||||||
"on_ok_clicked" : self.on_ok_clicked,
|
|
||||||
"on_help_clicked" : self.on_help_clicked,
|
|
||||||
"on_delete_event" : self.close,
|
|
||||||
})
|
|
||||||
|
|
||||||
self.list = self.top.get_object("list")
|
|
||||||
self.set_window(window, self.top.get_object('title'), self.label)
|
|
||||||
lbl = self.top.get_object('info')
|
|
||||||
lbl.set_line_wrap(True)
|
|
||||||
lbl.set_text(
|
|
||||||
_('Below is a list of Places with the possible data that can '
|
|
||||||
'be extracted from the place title. Select the places you '
|
|
||||||
'wish Gramps to convert.'))
|
|
||||||
|
|
||||||
self.model = Gtk.ListStore(GObject.TYPE_BOOLEAN, GObject.TYPE_STRING,
|
|
||||||
GObject.TYPE_STRING, GObject.TYPE_STRING,
|
|
||||||
GObject.TYPE_STRING, GObject.TYPE_STRING,
|
|
||||||
GObject.TYPE_STRING)
|
|
||||||
|
|
||||||
r = Gtk.CellRendererToggle()
|
|
||||||
r.connect('toggled', self.toggled)
|
|
||||||
c = Gtk.TreeViewColumn(_('Select'), r, active=0)
|
|
||||||
self.list.append_column(c)
|
|
||||||
|
|
||||||
for (title, col) in COLS:
|
|
||||||
render = Gtk.CellRendererText()
|
|
||||||
if col > 1:
|
|
||||||
render.set_property('editable', True)
|
|
||||||
render.connect('edited', self.__change_name, col)
|
|
||||||
|
|
||||||
self.list.append_column(
|
|
||||||
Gtk.TreeViewColumn(title, render, text=col))
|
|
||||||
self.list.set_model(self.model)
|
|
||||||
|
|
||||||
self.iter_list = []
|
|
||||||
self.progress.set_pass(_('Building display'), len(self.name_list))
|
|
||||||
for (id, data) in self.name_list:
|
|
||||||
|
|
||||||
place = self.db.get_place_from_handle(id)
|
|
||||||
descr = place_displayer.display(self.db, place)
|
|
||||||
|
|
||||||
handle = self.model.append()
|
|
||||||
self.model.set_value(handle, 0, True)
|
|
||||||
self.model.set_value(handle, 1, descr)
|
|
||||||
if data[0]:
|
|
||||||
self.model.set_value(handle, 2, data[0])
|
|
||||||
if data[1]:
|
|
||||||
self.model.set_value(handle, 3, data[1])
|
|
||||||
if data[2]:
|
|
||||||
self.model.set_value(handle, 4, data[2])
|
|
||||||
if data[3]:
|
|
||||||
self.model.set_value(handle, 5, data[3])
|
|
||||||
self.model.set_value(handle, 6, id)
|
|
||||||
self.iter_list.append(handle)
|
|
||||||
self.progress.step()
|
|
||||||
self.progress.close()
|
|
||||||
|
|
||||||
self.show()
|
|
||||||
|
|
||||||
def __change_name(self, text, path, new_text, col):
|
|
||||||
self.model[path][col] = new_text
|
|
||||||
return
|
|
||||||
|
|
||||||
def toggled(self, cell, path_string):
|
|
||||||
path = tuple(map(int, path_string.split(':')))
|
|
||||||
row = self.model[path]
|
|
||||||
row[0] = not row[0]
|
|
||||||
|
|
||||||
def build_menu_names(self, obj):
|
|
||||||
return (self.label, None)
|
|
||||||
|
|
||||||
def on_help_clicked(self, obj):
|
|
||||||
"""Display the relevant portion of GRAMPS manual"""
|
|
||||||
display_help()
|
|
||||||
|
|
||||||
def on_ok_clicked(self, obj):
|
|
||||||
with DbTxn(_("Extract Place data"), self.db, batch=True) as self.trans:
|
|
||||||
self.db.disable_signals()
|
|
||||||
changelist = [node for node in self.iter_list
|
|
||||||
if self.model.get_value(node, 0)]
|
|
||||||
|
|
||||||
for change in changelist:
|
|
||||||
row = self.model[change]
|
|
||||||
place = self.db.get_place_from_handle(row[6])
|
|
||||||
location = ('', '', '', row[2], '', row[3], row[5])
|
|
||||||
self.place_import.store_location(location, place.handle)
|
|
||||||
if row[2]:
|
|
||||||
place.set_name(PlaceName(value=row[2]))
|
|
||||||
place.set_type(PlaceType.CITY)
|
|
||||||
if row[4]:
|
|
||||||
place.set_code(row[4])
|
|
||||||
self.db.commit_place(place, self.trans)
|
|
||||||
|
|
||||||
self.place_import.generate_hierarchy(self.trans)
|
|
||||||
|
|
||||||
self.db.enable_signals()
|
|
||||||
self.db.request_rebuild()
|
|
||||||
self.close()
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
class ExtractCityOptions(tool.ToolOptions):
|
|
||||||
"""
|
|
||||||
Defines options and provides handling interface.
|
|
||||||
"""
|
|
||||||
def __init__(self, name, person_id=None):
|
|
||||||
tool.ToolOptions.__init__(self, name, person_id)
|
|
@ -139,29 +139,6 @@ optionclass = 'EventNamesOptions',
|
|||||||
tool_modes = [TOOL_MODE_GUI, TOOL_MODE_CLI]
|
tool_modes = [TOOL_MODE_GUI, TOOL_MODE_CLI]
|
||||||
)
|
)
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Extract Place Data from a Place Title
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
|
|
||||||
register(TOOL,
|
|
||||||
id = 'excity',
|
|
||||||
name = _("Extract Place Data from a Place Title"),
|
|
||||||
description = _("Attempts to extract city and state/province "
|
|
||||||
"from a place title"),
|
|
||||||
version = '1.0',
|
|
||||||
gramps_target_version = MODULE_VERSION,
|
|
||||||
status = STABLE,
|
|
||||||
fname = 'extractcity.py',
|
|
||||||
authors = ["Donald N. Allingham"],
|
|
||||||
authors_email = ["don@gramps-project.org"],
|
|
||||||
category = TOOL_DBPROC,
|
|
||||||
toolclass = 'ExtractCity',
|
|
||||||
optionclass = 'ExtractCityOptions',
|
|
||||||
tool_modes = [TOOL_MODE_GUI]
|
|
||||||
)
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Find Possible Duplicate People
|
# Find Possible Duplicate People
|
||||||
|
Loading…
x
Reference in New Issue
Block a user