From 2a1da2efba7402952a3757cac5383fb25b8cf515 Mon Sep 17 00:00:00 2001 From: kulath Date: Thu, 26 Mar 2015 12:19:26 +0000 Subject: [PATCH] Fix bug in processing of Place FORM in GEDCOM import as a result of fix for 8233. When an unused Place was removed, PlaceImport still tried to generate the place hierarchy. Also fixed bug in GEDCOM import where a default PLAC FORM in the GEDCOM header was ignored. --- gramps/plugins/lib/libgedcom.py | 4 +++- gramps/plugins/lib/libplaceimport.py | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gramps/plugins/lib/libgedcom.py b/gramps/plugins/lib/libgedcom.py index 19a148f1e..11e5d0a32 100644 --- a/gramps/plugins/lib/libgedcom.py +++ b/gramps/plugins/lib/libgedcom.py @@ -5372,6 +5372,7 @@ class GedcomParser(UpdateCallback): self.place_names[title].append(place_handle) else: place.merge(old_place) + self.place_import.remove_location(old_place.handle) self.dbase.remove_place(place_handle, self.trans) self.place_names[old_title].remove(place_handle) else: @@ -5392,7 +5393,7 @@ class GedcomParser(UpdateCallback): sub_state = CurrentState() sub_state.place = place sub_state.level = state.level+1 - sub_state.pf = PlaceParser() + sub_state.pf = self.place_parser self.__parse_level(sub_state, self.event_place_map, self.__undefined) @@ -5538,6 +5539,7 @@ class GedcomParser(UpdateCallback): self.__add_location(place, location) else: place.merge(old_place) + self.place_import.remove_location(old_place.handle) self.dbase.remove_place(place_handle, self.trans) self.place_names[title].remove(place_handle) else: diff --git a/gramps/plugins/lib/libplaceimport.py b/gramps/plugins/lib/libplaceimport.py index 9ff00c929..cdf20886d 100644 --- a/gramps/plugins/lib/libplaceimport.py +++ b/gramps/plugins/lib/libplaceimport.py @@ -51,6 +51,15 @@ class PlaceImport(object): self.loc2handle[location] = handle self.handle2loc[handle] = location + def remove_location(self, handle): + """ + Remove the location of a place already in the database. + """ + if handle in self.handle2loc: + loc = self.handle2loc[handle] + del(self.loc2handle[loc]) + del(self.handle2loc[handle]) + def generate_hierarchy(self, trans): """ Generate missing places in the place hierarchy.