From 51eb45c59a1d8c18747ccb8696ccb7b1660602ed Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Wed, 7 May 2003 03:36:28 +0000 Subject: [PATCH] Fixed the place and family references on import svn: r1501 --- src/GrampsParser.py | 31 +++++++++++++++++++++---------- src/RelLib.py | 25 +++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/GrampsParser.py b/src/GrampsParser.py index cc8d05a7d..55822b883 100644 --- a/src/GrampsParser.py +++ b/src/GrampsParser.py @@ -873,6 +873,23 @@ class GrampsImportParser(GrampsParser): self.func_map["placeobj"] = (self.start_placeobj,self.stop_placeobj) self.func_map["source"] = (self.start_source, self.stop_source) self.func_map["sourceref"]= (self.start_sourceref, self.stop_sourceref) + self.func_map["childof"] = (self.start_childof,None) + self.func_map["parentin"] = (self.start_parentin,None) + + def start_childof(self,attrs): + family = self.db.findFamilyNoConflict(attrs["ref"],self.fmap) + if attrs.has_key("mrel"): + mrel = attrs["mrel"] + else: + mrel = "Birth" + if attrs.has_key("frel"): + frel = attrs["frel"] + else: + frel = "Birth" + self.person.AltFamilyList.append((family,mrel,frel)) + + def start_parentin(self,attrs): + self.person.FamilyList.append(self.db.findFamilyNoConflict(attrs["ref"],self.fmap)) def start_bmark(self,attrs): person = self.db.findPersonNoConflicts(attrs["ref"],self.pmap) @@ -885,16 +902,13 @@ class GrampsImportParser(GrampsParser): self.person = self.db.findPersonNoConflicts(attrs["id"],self.pmap) def start_father(self,attrs): - father = self.db.findPersonNoConflicts(attrs["ref"],self.pmap) - self.family.setFather(father) + self.family.Father = self.db.findPersonNoConflicts(attrs["ref"],self.pmap) def start_mother(self,attrs): - mother = self.db.findPersonNoConflicts(attrs["ref"],self.pmap) - self.family.setMother(mother) + self.family.Mother = self.db.findPersonNoConflicts(attrs["ref"],self.pmap) def start_child(self,attrs): - child = self.db.findPersonNoConflicts(attrs["ref"],self.pmap) - self.family.addChild(child) + self.family.Children.append(self.db.findPersonNoConflicts(attrs["ref"],self.pmap)) def start_family(self,attrs): if self.callback != None and self.count % self.increment == 0: @@ -950,10 +964,7 @@ class GrampsImportParser(GrampsParser): self.placeobj.addSourceRef(self.source_ref) def start_place(self,attrs): - if attrs.has_key('ref'): - self.placeobj = self.db.findPlaceNoConflicts(attrs['ref'],self.lmap) - else: - self.placeobj = None + self.placeobj = self.db.findPlaceNoConflicts(attrs['ref'],self.lmap) def start_placeobj(self,attrs): self.placeobj = self.db.findPlaceNoConflicts(attrs['id'],self.lmap) diff --git a/src/RelLib.py b/src/RelLib.py index c4d2557cb..0ae5c86eb 100644 --- a/src/RelLib.py +++ b/src/RelLib.py @@ -2383,7 +2383,7 @@ class GrampsDB(Persistent): return index def removeObject(self,id): - del self.placeMap[id] + del self.objectMap[id] def removePlace(self,id): del self.placeMap[id] @@ -2392,6 +2392,7 @@ class GrampsDB(Persistent): def addPlaceAs(self,place): self.placeMap[place.getId()] = place self.placeTable[place.getId()] = place.getDisplayInfo() + return place.getId() def findPlace(self,idVal,map): """finds a Place in the database using the idVal and map @@ -2419,7 +2420,6 @@ class GrampsDB(Persistent): idVal - external ID number map - map build by findPlace of external to gramp's IDs""" - idVal = str(idVal) if map.has_key(idVal): place = self.placeMap[map[idVal]] else: @@ -2518,6 +2518,27 @@ class GrampsDB(Persistent): map[idVal] = family.getId() return family + def findFamilyNoConflict(self,idVal,map): + """finds a Family in the database using the idVal and map + variables to translate between the external ID and gramps' + internal ID. If no such Family exists, a new Family instance + is created. + + idVal - external ID number + map - map build by findFamily of external to gramp's IDs""" + + if map.has_key(idVal): + family = self.familyMap[map[idVal]] + else: + family = self.familyMap.get(idVal) + if not family: + family = Family() + family.id = idVal + self.familyMap[idVal] = family + self.fmapIndex = self.fmapIndex + 1 + map[idVal] = family.getId() + return family + def findFamilyNoMap(self,val): """finds a Family in the database from the passed gramps' ID. If no such Family exists, a new Family is added to the database."""