8945: Move extract city tool to third-party addons
This commit is contained in:
		@@ -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]
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
#------------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
# 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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user