From e5d564dbf005174561581ebb905a0b71befafbb6 Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Fri, 7 Aug 2015 09:56:06 -0400 Subject: [PATCH] ImportCSV: allow person, family, and marriage to reference places with place_id columns --- gramps/plugins/importer/importcsv.py | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/gramps/plugins/importer/importcsv.py b/gramps/plugins/importer/importcsv.py index c295d8965..29a849f45 100644 --- a/gramps/plugins/importer/importcsv.py +++ b/gramps/plugins/importer/importcsv.py @@ -161,6 +161,9 @@ class CSVParser(object): "note": ("Note", _("Note"), "note", _("note")), "birthplace": ("Birthplace", "Birth place", _("Birth place"), "birthplace", "birth_place", "birth place", _("birth place")), + "birthplace_id": ("Birthplaceid", "Birth place id", _("Birth place id"), + "birthplaceid", "birth_place_id", "birth place id", _("birth place id"), + "birthplace_id"), "birthdate": ("Birthdate", "Birth date", _("Birth date"), "birthdate", "birth_date", "birth date", _("birth date")), "birthsource": ("Birthsource", "Birth source", _("Birth source"), @@ -169,6 +172,10 @@ class CSVParser(object): "baptismplace": ("Baptismplace", "Baptism place", _("Baptism place"), "baptismplace", "baptism place", _("baptism place")), + "baptismplace_id": ("Baptismplaceid", "Baptism place id", + _("Baptism place id"), "baptismplaceid", "baptism place id", + _("baptism place id"), "baptism_place_id", + "baptismplace_id"), "baptismdate": ("Baptismdate", "Baptism date", _("Baptism date"), "baptismdate", "baptism date", _("baptism date")), "baptismsource": ("Baptismsource", "Baptism source", @@ -176,6 +183,9 @@ class CSVParser(object): _("baptism source")), "burialplace": ("Burialplace", "Burial place", _("Burial place"), "burialplace", "burial place", _("burial place")), + "burialplace_id": ("Burialplaceid", "Burial place id", _("Burial place id"), + "burialplaceid", "burial place id", _("burial place id"), + "burial_place_id", "burialplace_id"), "burialdate": ("Burialdate", "Burial date", _("Burial date"), "burialdate", "burial date", _("burial date")), "burialsource": ("Burialsource", "Burial source", @@ -183,6 +193,9 @@ class CSVParser(object): _("burial source")), "deathplace": ("Deathplace", "Death place", _("Death place"), "deathplace", "death_place", "death place", _("death place")), + "deathplace_id": ("Deathplaceid", "Death place id", _("Death place id"), + "deathplaceid", "death_place_id", "death place id", _("death place id"), + "death_place_id", "deathplace_id"), "deathdate": ("Deathdate", "Death date", _("Death date"), "deathdate", "death_date", "death date", _("death date")), "deathsource": ("Deathsource", "Death source", _("Death source"), @@ -206,6 +219,7 @@ class CSVParser(object): "marriage": ("Marriage", _("Marriage"), "marriage", _("marriage")), "date": ("Date", _("Date"), "date", _("date")), "place": ("Place", _("Place"), "place", _("place")), + "place_id": ("Placeid", "place id", "Place id", "place_id", "placeid"), "name": ("Name", _("Name"), "name", _("name")), "type": ("Type", _("Type"), "type", _("type")), "latitude": ("Latitude", _("latitude"), "latitude", _("latitude")), @@ -384,10 +398,12 @@ class CSVParser(object): def _parse_marriage(self, line_number, row, col): "Parse the content of a Marriage,Husband,Wife line." marriage_ref = rd(line_number, row, col, "marriage") + import pdb; pdb.set_trace() husband = rd(line_number, row, col, "husband") wife = rd(line_number, row, col, "wife") marriagedate = rd(line_number, row, col, "date") marriageplace = rd(line_number, row, col, "place") + marriageplace_id = rd(line_number, row, col, "place_id") marriagesource = rd(line_number, row, col, "source") note = rd(line_number, row, col, "note") wife = self.lookup("person", wife) @@ -413,9 +429,14 @@ class CSVParser(object): if marriagesource: # add, if new new, marriagesource = self.get_or_create_source(marriagesource) + if marriageplace and marriageplace_id: + raise Error("Error in marriage: can't have a place and place_id") if marriageplace: # add, if new new, marriageplace = self.get_or_create_place(marriageplace) + elif marriageplace_id: + # better exist already, locally or in database: + marriageplace = self.lookup("place", marriageplace_id) if marriagedate: marriagedate = _dp.parse(marriagedate) if marriagedate or marriageplace or marriagesource or note: @@ -544,15 +565,19 @@ class CSVParser(object): source = rd(line_number, row, col, "source") note = rd(line_number, row, col, "note") birthplace = rd(line_number, row, col, "birthplace") + birthplace_id = rd(line_number, row, col, "birthplace_id") birthdate = rd(line_number, row, col, "birthdate") birthsource = rd(line_number, row, col, "birthsource") baptismplace = rd(line_number, row, col, "baptismplace") + baptismplace_id = rd(line_number, row, col, "baptismplace_id") baptismdate = rd(line_number, row, col, "baptismdate") baptismsource = rd(line_number, row, col, "baptismsource") burialplace = rd(line_number, row, col, "burialplace") + burialplace_id = rd(line_number, row, col, "burialplace_id") burialdate = rd(line_number, row, col, "burialdate") burialsource = rd(line_number, row, col, "burialsource") deathplace = rd(line_number, row, col, "deathplace") + deathplace_id = rd(line_number, row, col, "deathplace_id") deathdate = rd(line_number, row, col, "deathdate") deathsource = rd(line_number, row, col, "deathsource") deathcause = rd(line_number, row, col, "deathcause") @@ -638,8 +663,13 @@ class CSVParser(object): # Birth: if birthdate is not None: birthdate = _dp.parse(birthdate) + if birthplace and birthplace_id: + raise Error("Error in person: can't have a birthplace and birthplace_id") if birthplace is not None: new, birthplace = self.get_or_create_place(birthplace) + elif birthplace_id: + # better exist already, locally or in database: + birthplace = self.lookup("place", birthplace_id) if birthsource is not None: new, birthsource = self.get_or_create_source(birthsource) if birthdate or birthplace or birthsource: @@ -655,8 +685,13 @@ class CSVParser(object): # Baptism: if baptismdate is not None: baptismdate = _dp.parse(baptismdate) + if baptismplace and baptismplace_id: + raise Error("Error in person: can't have a baptismplace and baptismplace_id") if baptismplace is not None: new, baptismplace = self.get_or_create_place(baptismplace) + elif baptismplace_id: + # better exist already, locally or in database: + baptismplace = self.lookup("place", baptismplace_id) if baptismsource is not None: new, baptismsource = self.get_or_create_source(baptismsource) if baptismdate or baptismplace or baptismsource: @@ -673,8 +708,13 @@ class CSVParser(object): # Death: if deathdate is not None: deathdate = _dp.parse(deathdate) + if deathplace and deathplace_id: + raise Error("Error in person: can't have a deathplace and deathplace_id") if deathplace is not None: new, deathplace = self.get_or_create_place(deathplace) + elif deathplace_id: + # better exist already, locally or in database: + deathplace = self.lookup("place", deathplace_id) if deathsource is not None: new, deathsource = self.get_or_create_source(deathsource) if deathdate or deathplace or deathsource or deathcause: @@ -693,8 +733,13 @@ class CSVParser(object): # Burial: if burialdate is not None: burialdate = _dp.parse(burialdate) + if burialplace and burialplace_id: + raise Error("Error in person: can't have a burialplace and burialplace_id") if burialplace is not None: new, burialplace = self.get_or_create_place(burialplace) + elif burialplace_id: + # better exist already, locally or in database: + burialplace = self.lookup("place", burialplace_id) if burialsource is not None: new, burialsource = self.get_or_create_source(burialsource) if burialdate or burialplace or burialsource: