* src/AutoComp.py: remove double display of data

* src/FamilyView.py: remove unused check
* src/GrampsBSDDB.py: search by gramps_id
* src/GrampsDbBase.py: search by gramps_id, unicode/str conversions
* src/Marriage.py: handle gramps_id editing
* src/ReadXML.py: fix handle/gramps_id on import
* src/plugins/RelCalc.py: display date instead of event handle
* src/Relationship.py: family handles working
* src/PeopleModel.py: comment out unused functions
* src/PeopleModel.py: simplify model interface
* src/AddSpouse.py: get_family_from_handle fixes
* src/EditPerson.py: get_family_from_handle fixes
* src/EditSource.py: get_family_from_handle fixes
* src/GraphLayout.py: get_family_from_handle fixes
* src/ImageSelect.py: get_family_from_handle fixes
* src/MediaView.py: get_family_from_handle fixes
* src/MergeData.py: get_family_from_handle fixes
* src/PlaceView.py: get_family_from_handle fixes
* src/ReadXML.py: get_family_from_handle fixes
* src/RelLib.py: get_family_from_handle fixes
* src/Relationship.py: get_family_from_handle fixes
* src/SelectChild.py: get_family_from_handle fixes
* src/SourceView.py: get_family_from_handle fixes
* src/SubstKeywords.py: get_family_from_handle fixes
* src/WriteXML.py: get_family_from_handle fixes
* src/gramps_main.py: get_family_from_handle fixes


svn: r3446
This commit is contained in:
Don Allingham 2004-08-20 02:20:06 +00:00
parent 9b427a6f64
commit e50e33cba6
11 changed files with 219 additions and 166 deletions

View File

@ -1,21 +1,30 @@
2004-08-19 Don Allingham <dallingham@users.sourceforge.net> 2004-08-19 Don Allingham <dallingham@users.sourceforge.net>
* PeopleModel.py: simplify model interface * src/AutoComp.py: remove double display of data
* AddSpouse.py: get_family_from_handle fixes * src/FamilyView.py: remove unused check
* EditPerson.py: get_family_from_handle fixes * src/GrampsBSDDB.py: search by gramps_id
* EditSource.py: get_family_from_handle fixes * src/GrampsDbBase.py: search by gramps_id, unicode/str conversions
* GraphLayout.py: get_family_from_handle fixes * src/Marriage.py: handle gramps_id editing
* ImageSelect.py: get_family_from_handle fixes * src/ReadXML.py: fix handle/gramps_id on import
* MediaView.py: get_family_from_handle fixes * src/plugins/RelCalc.py: display date instead of event handle
* MergeData.py: get_family_from_handle fixes * src/Relationship.py: family handles working
* PlaceView.py: get_family_from_handle fixes * src/PeopleModel.py: comment out unused functions
* ReadXML.py: get_family_from_handle fixes * src/PeopleModel.py: simplify model interface
* RelLib.py: get_family_from_handle fixes * src/AddSpouse.py: get_family_from_handle fixes
* Relationship.py: get_family_from_handle fixes * src/EditPerson.py: get_family_from_handle fixes
* SelectChild.py: get_family_from_handle fixes * src/EditSource.py: get_family_from_handle fixes
* SourceView.py: get_family_from_handle fixes * src/GraphLayout.py: get_family_from_handle fixes
* SubstKeywords.py: get_family_from_handle fixes * src/ImageSelect.py: get_family_from_handle fixes
* WriteXML.py: get_family_from_handle fixes * src/MediaView.py: get_family_from_handle fixes
* gramps_main.py: get_family_from_handle fixes * src/MergeData.py: get_family_from_handle fixes
* src/PlaceView.py: get_family_from_handle fixes
* src/ReadXML.py: get_family_from_handle fixes
* src/RelLib.py: get_family_from_handle fixes
* src/Relationship.py: get_family_from_handle fixes
* src/SelectChild.py: get_family_from_handle fixes
* src/SourceView.py: get_family_from_handle fixes
* src/SubstKeywords.py: get_family_from_handle fixes
* src/WriteXML.py: get_family_from_handle fixes
* src/gramps_main.py: get_family_from_handle fixes
* plugins/AncestorChart.py: get_family_from_handle fixes * plugins/AncestorChart.py: get_family_from_handle fixes
* plugins/AncestorChart2.py: get_family_from_handle fixes * plugins/AncestorChart2.py: get_family_from_handle fixes
* plugins/AncestorReport.py: get_family_from_handle fixes * plugins/AncestorReport.py: get_family_from_handle fixes

View File

@ -44,7 +44,6 @@ def fill_combo(combo,data_list):
def fill_entry(entry,data_list): def fill_entry(entry,data_list):
store = gtk.ListStore(gobject.TYPE_STRING) store = gtk.ListStore(gobject.TYPE_STRING)
for data in data_list: for data in data_list:
store.append(row=[data]) store.append(row=[data])
@ -55,15 +54,13 @@ def fill_entry(entry,data_list):
entry.set_completion(completion) entry.set_completion(completion)
def fill_option_text(combobox,data): def fill_option_text(combobox,data):
store = gtk.ListStore(gobject.TYPE_STRING) store = gtk.ListStore(gobject.TYPE_STRING)
cell = gtk.CellRendererText() cell = gtk.CellRendererText()
combobox.pack_start(cell,gtk.TRUE) for item in data:
combobox.add_attribute(cell,'text',0) store.append(row=[item])
for item in data: combobox.set_model(store)
store.append(row=[item]) combobox.set_active(0)
combobox.set_model(store)
combobox.set_active(0)
def get_option(combobox): def get_option(combobox):
store = combobox.get_model() store = combobox.get_model()
return store.get_value(combobox.get_active_iter(),0) return store.get_value(combobox.get_active_iter(),0)

View File

@ -907,8 +907,6 @@ class FamilyView:
flist = {} flist = {}
for f in splist: for f in splist:
if not f:
continue
fm = self.parent.db.get_family_from_handle(f) fm = self.parent.db.get_family_from_handle(f)
if fm.get_father_handle() == self.person.get_handle(): if fm.get_father_handle() == self.person.get_handle():

View File

@ -32,6 +32,9 @@ def find_surname(key,data):
def find_idmap(key,data): def find_idmap(key,data):
return str(data[1]) return str(data[1])
def find_fidmap(key,data):
return str(data[1])
def find_eventname(key,data): def find_eventname(key,data):
return str(data[1]) return str(data[1])
@ -76,11 +79,16 @@ class GrampsBSDDB(GrampsDbBase):
self.id_trans.set_flags(db.DB_DUP) self.id_trans.set_flags(db.DB_DUP)
self.id_trans.open(name, "idtrans", db.DB_HASH, flags=db.DB_CREATE) self.id_trans.open(name, "idtrans", db.DB_HASH, flags=db.DB_CREATE)
self.fid_trans = db.DB(self.env)
self.fid_trans.set_flags(db.DB_DUP)
self.fid_trans.open(name, "fidtrans", db.DB_HASH, flags=db.DB_CREATE)
self.eventnames = db.DB(self.env) self.eventnames = db.DB(self.env)
self.eventnames.set_flags(db.DB_DUP) self.eventnames.set_flags(db.DB_DUP)
self.eventnames.open(name, "eventnames", db.DB_HASH, flags=db.DB_CREATE) self.eventnames.open(name, "eventnames", db.DB_HASH, flags=db.DB_CREATE)
self.person_map.associate(self.surnames, find_surname, db.DB_CREATE) self.person_map.associate(self.surnames, find_surname, db.DB_CREATE)
self.person_map.associate(self.id_trans, find_idmap, db.DB_CREATE) self.person_map.associate(self.id_trans, find_idmap, db.DB_CREATE)
self.person_map.associate(self.fid_trans, find_fidmap, db.DB_CREATE)
self.event_map.associate(self.eventnames, find_eventname, db.DB_CREATE) self.event_map.associate(self.eventnames, find_eventname, db.DB_CREATE)
self.undodb = db.DB() self.undodb = db.DB()
@ -106,6 +114,7 @@ class GrampsBSDDB(GrampsDbBase):
self.surnames.close() self.surnames.close()
self.eventnames.close() self.eventnames.close()
self.id_trans.close() self.id_trans.close()
self.fid_trans.close()
self.env.close() self.env.close()
self.undodb.close() self.undodb.close()
@ -167,3 +176,26 @@ class GrampsBSDDB(GrampsDbBase):
transaction.add(EVENT_KEY,handle,old_data) transaction.add(EVENT_KEY,handle,old_data)
self.event_map.delete(str(handle)) self.event_map.delete(str(handle))
def get_person_from_gramps_id(self,val):
"""finds a Person in the database from the passed gramps' ID.
If no such Person exists, a new Person is added to the database."""
data = self.id_trans.get(str(val))
if data:
person = Person()
person.unserialize(cPickle.loads(data))
return person
else:
return None
def get_family_from_gramps_id(self,val):
"""finds a Person in the database from the passed gramps' ID.
If no such Person exists, a new Person is added to the database."""
data = self.fid_trans.get(str(val))
if data:
family = Family()
family.unserialize(cPickle.loads(data))
return family
else:
return None

View File

@ -106,14 +106,14 @@ class GrampsDbBase:
Opens the specified database. The method needs to be overridden Opens the specified database. The method needs to be overridden
in the derived class. in the derived class.
""" """
assert(0,"Needs to be overridden in the derived class") assert(False,"Needs to be overridden in the derived class")
def close(self): def close(self):
""" """
Closes the specified database. The method needs to be overridden Closes the specified database. The method needs to be overridden
in the derived class. in the derived class.
""" """
assert(0,"Needs to be overridden in the derived class") assert(False,"Needs to be overridden in the derived class")
def is_open(self): def is_open(self):
""" """
@ -126,7 +126,7 @@ class GrampsDbBase:
Commits the specified Person to the database, storing the changes Commits the specified Person to the database, storing the changes
as part of the transaction. as part of the transaction.
""" """
handle = person.get_handle() handle = str(person.get_handle())
if transaction != None: if transaction != None:
old_data = self.person_map.get(handle) old_data = self.person_map.get(handle)
transaction.add(PERSON_KEY,handle,old_data) transaction.add(PERSON_KEY,handle,old_data)
@ -141,7 +141,7 @@ class GrampsDbBase:
if transaction != None: if transaction != None:
old_data = self.media_map.get(handle) old_data = self.media_map.get(handle)
transaction.add(MEDIA_KEY,handle,old_data) transaction.add(MEDIA_KEY,handle,old_data)
self.media_map[str(obj.get_handle())] = obj.serialize() self.media_map[handle] = obj.serialize()
def commit_source(self,source,transaction): def commit_source(self,source,transaction):
""" """
@ -152,7 +152,7 @@ class GrampsDbBase:
if transaction != None: if transaction != None:
old_data = self.source_map.get(handle) old_data = self.source_map.get(handle)
transaction.add(SOURCE_KEY,handle,old_data) transaction.add(SOURCE_KEY,handle,old_data)
self.source_map[str(source.get_handle())] = source.serialize() self.source_map[handle] = source.serialize()
def commit_place(self,place,transaction): def commit_place(self,place,transaction):
""" """
@ -163,7 +163,7 @@ class GrampsDbBase:
if transaction != None: if transaction != None:
old_data = self.place_map.get(handle) old_data = self.place_map.get(handle)
transaction.add(PLACE_KEY,handle,old_data) transaction.add(PLACE_KEY,handle,old_data)
self.place_map[str(place.get_handle())] = place.serialize() self.place_map[handle] = place.serialize()
def commit_event(self,event,transaction): def commit_event(self,event,transaction):
""" """
@ -174,7 +174,7 @@ class GrampsDbBase:
if transaction != None: if transaction != None:
old_data = self.event_map.get(handle) old_data = self.event_map.get(handle)
transaction.add(EVENT_KEY,handle,old_data) transaction.add(EVENT_KEY,handle,old_data)
self.event_map[str(event.get_handle())] = event.serialize() self.event_map[handle] = event.serialize()
def commit_family(self,family,transaction): def commit_family(self,family,transaction):
""" """
@ -185,7 +185,7 @@ class GrampsDbBase:
if transaction != None: if transaction != None:
old_data = self.family_map.get(handle) old_data = self.family_map.get(handle)
transaction.add(FAMILY_KEY,handle,old_data) transaction.add(FAMILY_KEY,handle,old_data)
self.family_map[str(family.get_handle())] = family.serialize() self.family_map[handle] = family.serialize()
def find_next_person_gramps_id(self): def find_next_person_gramps_id(self):
""" """
@ -263,7 +263,7 @@ class GrampsDbBase:
"""finds a Person in the database from the passed gramps' ID. """finds a Person in the database from the passed gramps' ID.
If no such Person exists, a new Person is added to the database.""" If no such Person exists, a new Person is added to the database."""
data = self.person_map.get(val) data = self.person_map.get(str(val))
if data: if data:
person = Person() person = Person()
person.unserialize(data) person.unserialize(data)
@ -336,7 +336,7 @@ class GrampsDbBase:
person.set_handle(val) person.set_handle(val)
if transaction != None: if transaction != None:
transaction.add(PERSON_KEY, val, None) transaction.add(PERSON_KEY, val, None)
self.person_map[val] = person.serialize() self.person_map[str(val)] = person.serialize()
self.genderStats.count_person (person, self) self.genderStats.count_person (person, self)
return person return person
@ -390,7 +390,7 @@ class GrampsDbBase:
data = self.place_map.get(str(handle)) data = self.place_map.get(str(handle))
place = Place() place = Place()
if not data: if not data:
place.handle = handle place.set_handle(handle)
if transaction != None: if transaction != None:
transaction.add(PLACE_KEY,handle,None) transaction.add(PLACE_KEY,handle,None)
self.place_map[str(handle)] = place.serialize() self.place_map[str(handle)] = place.serialize()
@ -408,13 +408,37 @@ class GrampsDbBase:
if data: if data:
family.unserialize(data) family.unserialize(data)
else: else:
family.handle = val family.set_handle(val)
if transaction: if transaction:
transaction.add(FAMILY_KEY,val,None) transaction.add(FAMILY_KEY,val,None)
self.family_map[str(val)] = family.serialize() self.family_map[str(val)] = family.serialize()
self.fmap_index = self.fmap_index + 1 self.fmap_index = self.fmap_index + 1
return family return family
def get_person_from_gramps_id(self,val):
"""
Finds a Person in the database from the passed GRAMPS ID.
If no such Person exists, None is returned.
Needs to be overridden by the derrived class.
"""
data = self.id_trans.get(str(val))
if data:
person = Person()
person.unserialize(cPickle.loads(data))
return person
else:
return None
def get_family_from_gramps_id(self,val):
"""
Finds a Family in the database from the passed GRAMPS ID.
If no such Family exists, None is returned.
Needs to be overridden by the derrived class.
"""
assert(False,"Needs to be overridden in the derived class")
def add_person(self,person,transaction): def add_person(self,person,transaction):
""" """
Adds a Person to the database, assigning internal IDs if they have Adds a Person to the database, assigning internal IDs if they have
@ -906,49 +930,23 @@ class GrampsDbBase:
""" """
return self.media_map.has_key(str(handle)) != None return self.media_map.has_key(str(handle)) != None
def get_person_from_gramps_id(self,val):
"""finds a Person in the database from the passed gramps' ID.
If no such Person exists, a new Person is added to the database."""
data = self.id_trans.get(str(val))
if data:
person = Person()
person.unserialize(cPickle.loads(data))
return person
else:
return None
def find_person_from_gramps_id(self,val,transaction):
"""finds a Person in the database from the passed gramps' ID.
If no such Person exists, a new Person is added to the database."""
person = Person()
data = self.id_trans.get(str(val))
if data:
person.unserialize(cPickle.loads(data))
else:
intid = Utils.create_id()
person.set_handle(intid)
person.set_gramps_id(val)
self.add_person(person,transaction)
return person
def _sortbyname(self,f,s): def _sortbyname(self,f,s):
n1 = self.person_map.get(f)[2].sname n1 = self.person_map.get(str(f))[2].sname
n2 = self.person_map.get(s)[2].sname n2 = self.person_map.get(str(s))[2].sname
return cmp(n1,n2) return cmp(n1,n2)
def _sortbyplace(self,f,s): def _sortbyplace(self,f,s):
return cmp(self.place_map.get(f)[2].upper(), self.place_map.get(s)[2].upper()) return cmp(self.place_map.get(str(f))[2].upper(),
self.place_map.get(str(s))[2].upper())
def _sortbysource(self,f,s): def _sortbysource(self,f,s):
fp = self.source_map[f][2].upper() fp = self.source_map[str(f)][2].upper()
sp = self.source_map[s][2].upper() sp = self.source_map[str(s)][2].upper()
return cmp(fp,sp) return cmp(fp,sp)
def _sortbymedia(self,f,s): def _sortbymedia(self,f,s):
fp = self.media_map[f][4].upper() fp = self.media_map[str(f)][4].upper()
sp = self.media_map[s][4].upper() sp = self.media_map[str(s)][4].upper()
return cmp(fp,sp) return cmp(fp,sp)
def set_person_column_order(self,list): def set_person_column_order(self,list):

View File

@ -199,7 +199,7 @@ class Marriage:
frel = family.get_relationship() frel = family.get_relationship()
self.type_field.set_active(frel) self.type_field.set_active(frel)
self.gid.set_text(family.get_handle()) self.gid.set_text(family.get_gramps_id())
self.gid.set_editable(1) self.gid.set_editable(1)
AutoComp.fill_combo(self.lds_temple,_temple_names) AutoComp.fill_combo(self.lds_temple,_temple_names)
@ -556,6 +556,9 @@ class Marriage:
else: else:
self.close(0) self.close(0)
def save(self):
self.on_close_marriage_editor(None)
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.on_cancel_edit(obj) self.on_cancel_edit(obj)
@ -565,11 +568,9 @@ class Marriage:
idval = unicode(self.gid.get_text()) idval = unicode(self.gid.get_text())
family = self.family family = self.family
if idval != family.get_handle(): if idval != family.get_gramps_id():
if not self.db.has_family_handle(idval): if not self.db.get_family_from_gramps_id(idval):
if self.db.has_family_handle(family.get_handle()): family.set_gramps_id(idval)
self.db.remove_family_handle(family.get_handle(),trans)
family.set_handle(idval)
else: else:
WarningDialog(_("GRAMPS ID value was not changed."), WarningDialog(_("GRAMPS ID value was not changed."),
_('The GRAMPS ID that you chose for this ' _('The GRAMPS ID that you chose for this '

View File

@ -97,31 +97,8 @@ class PeopleModel(gtk.GenericTreeModel):
else: else:
self.rebuild_data() self.rebuild_data()
self.connect('row-deleted',self.on_row_deleted) # self.connect('row-deleted',self.on_row_deleted)
self.connect('row-inserted',self.on_row_inserted) # self.connect('row-inserted',self.on_row_inserted)
def on_row_inserted(self,model,path,iter):
pass
def on_row_deleted(self,model,path):
surname = self.top_path2iter[path[0]]
pid = self.path2iter[(surname,path[1])]
for idval in self.sname_sub[surname]:
key = self.iter2path[idval]
del self.iter2path[idval]
del self.path2iter[key]
self.sname_sub[surname].remove(pid)
val = 0
entries = self.sname_sub[surname]
entries.sort(self.byname)
for person_handle in entries:
tpl = (surname,val)
self.iter2path[person_handle] = tpl
self.path2iter[tpl] = person_handle
val += 1
return 0
def rebuild_data(self): def rebuild_data(self):
self.top_path2iter = [] self.top_path2iter = []
@ -165,44 +142,6 @@ class PeopleModel(gtk.GenericTreeModel):
self.path2iter, self.path2iter,
self.sname_sub) self.sname_sub)
def add_person(self,person):
pid = person.get_handle()
need = 0
surname = person.get_primary_name().get_surname()
if self.sname_sub.has_key(surname):
self.sname_sub[surname].append(pid)
else:
self.sname_sub[surname] = [pid]
inscol = 0
sval = 0
name_list = self.db.get_surname_list()
for name in name_list:
if self.sname_sub.has_key(name):
self.top_path2iter[sval] = name
if name == surname:
inscol = (sval,)
need = 1
sval += 1
column = 0
val = 0
entries = self.sname_sub[surname]
entries.sort(self.byname)
for person_handle in entries:
tpl = (surname,val)
self.iter2path[person_handle] = tpl
self.path2iter[tpl] = person_handle
if person_handle == pid:
column = val
val += 1
col = self.top_path2iter.index(surname)
mypath = (col[0],column)
if need:
self.row_inserted(inscol,self.get_iter(inscol))
self.row_inserted(mypath,self.get_iter(mypath))
def byname(self,f,s): def byname(self,f,s):
n1 = self.db.person_map.get(str(f))[_NAME_COL].get_sort_name() n1 = self.db.person_map.get(str(f))[_NAME_COL].get_sort_name()
n2 = self.db.person_map.get(str(s))[_NAME_COL].get_sort_name() n2 = self.db.person_map.get(str(s))[_NAME_COL].get_sort_name()
@ -384,4 +323,65 @@ class PeopleModel(gtk.GenericTreeModel):
return self.db.get_place_from_handle(place_handle).get_title() return self.db.get_place_from_handle(place_handle).get_title()
return u"" return u""
# def add_person(self,person):
# pid = person.get_handle()
# need = 0
# surname = person.get_primary_name().get_surname()
# if self.sname_sub.has_key(surname):
# self.sname_sub[surname].append(pid)
# else:
# self.sname_sub[surname] = [pid]
# inscol = 0
# sval = 0
# name_list = self.db.get_surname_list()
# for name in name_list:
# if self.sname_sub.has_key(name):
# self.top_path2iter[sval] = name
# if name == surname:
# inscol = (sval,)
# need = 1
# sval += 1
# column = 0
# val = 0
# entries = self.sname_sub[surname]
# entries.sort(self.byname)
# for person_handle in entries:
# tpl = (surname,val)
# self.iter2path[person_handle] = tpl
# self.path2iter[tpl] = person_handle
# if person_handle == pid:
# column = val
# val += 1
# col = self.top_path2iter.index(surname)
# mypath = (col[0],column)
# if need:
# self.row_inserted(inscol,self.get_iter(inscol))
# self.row_inserted(mypath,self.get_iter(mypath))
# def on_row_inserted(self,model,path,iter):
# pass
# def on_row_deleted(self,model,path):
# surname = self.top_path2iter[path[0]]
# pid = self.path2iter[(surname,path[1])]
# for idval in self.sname_sub[surname]:
# key = self.iter2path[idval]
# del self.iter2path[idval]
# del self.path2iter[key]
# self.sname_sub[surname].remove(pid)
# val = 0
# entries = self.sname_sub[surname]
# entries.sort(self.byname)
# for person_handle in entries:
# tpl = (surname,val)
# self.iter2path[person_handle] = tpl
# self.path2iter[tpl] = person_handle
# val += 1
# return 0
_GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ] _GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ]

View File

@ -278,6 +278,7 @@ class GrampsParser:
self.tlist = [] self.tlist = []
self.conf = 2 self.conf = 2
self.gid2id = {} self.gid2id = {}
self.gid2fid = {}
self.ord = None self.ord = None
self.objref = None self.objref = None
@ -329,6 +330,7 @@ class GrampsParser:
self.func = None self.func = None
self.witness_comment = "" self.witness_comment = ""
self.idswap = {} self.idswap = {}
self.fidswap = {}
self.func_map = { self.func_map = {
"address" : (self.start_address, self.stop_address), "address" : (self.start_address, self.stop_address),
@ -414,26 +416,47 @@ class GrampsParser:
} }
def find_person_by_gramps_id(self,gramps_id): def find_person_by_gramps_id(self,gramps_id):
person = RelLib.Person()
intid = self.gid2id.get(gramps_id) intid = self.gid2id.get(gramps_id)
if intid: if intid:
person.unserialize(self.db.person_map.get(intid)) person = self.db.get_person_from_handle(intid)
else: else:
intid = Utils.create_id() intid = Utils.create_id()
person = RelLib.Person()
person.set_handle(intid) person.set_handle(intid)
person.set_gramps_id(gramps_id) person.set_gramps_id(gramps_id)
self.db.add_person(person,self.trans) self.db.add_person(person,self.trans)
self.gid2id[gramps_id] = intid self.gid2id[gramps_id] = intid
return person return person
def find_family_by_gramps_id(self,gramps_id):
intid = self.gid2fid.get(gramps_id)
if intid:
family = self.db.get_family_from_handle(intid)
else:
intid = Utils.create_id()
family = RelLib.Family()
family.set_handle(intid)
family.set_gramps_id(gramps_id)
self.db.add_family(family,self.trans)
self.gid2fid[gramps_id] = intid
return family
def map_gid(self,id): def map_gid(self,id):
if not self.idswap.get(id): if not self.idswap.get(id):
if self.db.id_trans.get(str(id)): if self.db.get_person_from_gramps_id(id):
self.idswap[id] = self.db.find_next_person_gramps_id() self.idswap[id] = self.db.find_next_person_gramps_id()
else: else:
self.idswap[id] = id self.idswap[id] = id
return self.idswap[id] return self.idswap[id]
def map_fid(self,id):
if not self.fidswap.get(id):
if self.db.get_family_from_gramps_id(id):
self.fidswap[id] = self.db.find_next_family_gramps_id()
else:
self.fidswap[id] = id
return self.fidswap[id]
def parse(self,file): def parse(self,file):
self.trans = self.db.transaction_begin() self.trans = self.db.transaction_begin()
p = xml.parsers.expat.ParserCreate() p = xml.parsers.expat.ParserCreate()
@ -444,7 +467,7 @@ class GrampsParser:
self.db.set_researcher(self.owner) self.db.set_researcher(self.owner)
if self.tempDefault != None: if self.tempDefault != None:
id = self.tempDefault id = self.map_gid(self.tempDefault)
person = self.find_person_by_gramps_id(id) person = self.find_person_by_gramps_id(id)
if person: if person:
self.db.set_default_person_handle(person.get_handle()) self.db.set_default_person_handle(person.get_handle())
@ -477,8 +500,8 @@ class GrampsParser:
self.ord.set_status(int(attrs['val'])) self.ord.set_status(int(attrs['val']))
def start_sealed_to(self,attrs): def start_sealed_to(self,attrs):
id = self.map_gid(attrs['ref']) id = self.map_fid(attrs['ref'])
self.ord.set_family_handle(self.db.find_family_from_handle(id,self.trans)) self.ord.set_family_handle(self.find_family_by_gramps_id(id))
def start_place(self,attrs): def start_place(self,attrs):
self.placeobj = self.db.find_place_from_handle(attrs['ref'],self.trans) self.placeobj = self.db.find_place_from_handle(attrs['ref'],self.trans)
@ -578,7 +601,8 @@ class GrampsParser:
self.address.private = int(attrs["priv"]) self.address.private = int(attrs["priv"])
def start_bmark(self,attrs): def start_bmark(self,attrs):
person = self.find_person_by_gramps_id(self.map_gid(attrs["ref"])) id = self.map_gid(attrs["ref"])
person = self.find_person_by_gramps_id(id)
self.db.bookmarks.append(person.get_handle()) self.db.bookmarks.append(person.get_handle())
def start_person(self,attrs): def start_person(self,attrs):
@ -635,7 +659,7 @@ class GrampsParser:
if self.callback != None and self.count % self.increment == 0: if self.callback != None and self.count % self.increment == 0:
self.callback(float(self.count)/float(self.entries)) self.callback(float(self.count)/float(self.entries))
self.count = self.count + 1 self.count = self.count + 1
self.family = self.db.find_family_from_handle(attrs["id"],self.trans) self.family = self.find_family_by_gramps_id(self.map_fid(attrs["id"]))
if attrs.has_key("type"): if attrs.has_key("type"):
self.family.set_relationship(_FAMILY_TRANS.get(attrs["type"], self.family.set_relationship(_FAMILY_TRANS.get(attrs["type"],
@ -646,7 +670,7 @@ class GrampsParser:
self.family.set_complete_flag(0) self.family.set_complete_flag(0)
def start_childof(self,attrs): def start_childof(self,attrs):
family = self.db.find_family_from_handle(attrs["ref"],self.trans) family = self.find_family_by_gramps_id(self.map_fid(attrs["ref"]))
if attrs.has_key("mrel"): if attrs.has_key("mrel"):
mrel = attrs["mrel"] mrel = attrs["mrel"]
else: else:
@ -658,7 +682,8 @@ class GrampsParser:
self.person.add_parent_family_handle(family.get_handle(),mrel,frel) self.person.add_parent_family_handle(family.get_handle(),mrel,frel)
def start_parentin(self,attrs): def start_parentin(self,attrs):
self.person.add_family_handle(attrs["ref"]) family = self.find_family_by_gramps_id(self.map_fid(attrs["ref"]))
self.person.add_family_handle(family.get_handle())
def start_name(self,attrs): def start_name(self,attrs):
if not self.in_witness: if not self.in_witness:

View File

@ -502,14 +502,6 @@ class Person(PrimaryObject,SourceNote):
else: else:
return self.parent_family_list[0][0] return self.parent_family_list[0][0]
def get_main_parents_family_handle(self):
"""returns the main Family of the Person, the Family in which the
Person is a natural born child"""
if len(self.parent_family_list) == 0:
return (None,None,None)
else:
return self.parent_family_list[0]
def set_lds_baptism(self,ord): def set_lds_baptism(self,ord):
"""Sets the LDS Baptism ordinance""" """Sets the LDS Baptism ordinance"""
self.lds_bapt = ord self.lds_bapt = ord

View File

@ -170,8 +170,8 @@ class RelationshipCalculator:
pmap[person.get_handle()] = index pmap[person.get_handle()] = index
family_handle = person.get_main_parents_family_handle() family_handle = person.get_main_parents_family_handle()
family = self.db.get_family_from_handle(family_handle) if family_handle != None:
if family != None: family = self.db.get_family_from_handle(family_handle)
father = self.db.get_person_from_handle(family.get_father_handle()) father = self.db.get_person_from_handle(family.get_father_handle())
mother = self.db.get_person_from_handle(family.get_mother_handle()) mother = self.db.get_person_from_handle(family.get_mother_handle())
self.apply_filter(father,index+1,plist,pmap) self.apply_filter(father,index+1,plist,pmap)

View File

@ -98,7 +98,8 @@ class RelCalc:
if p == self.person: if p == self.person:
continue continue
val = self.db.get_person_from_handle(key).get_display_info() val = self.db.get_person_from_handle(key).get_display_info()
self.clist.add([val[0],val[1],val[3],val[5],val[6]],p.get_handle()) event = self.db.find_event_from_handle(val[3])
self.clist.add([val[0],val[1],event.get_date(),val[5],val[6]],p.get_handle())
self.clist.connect_model() self.clist.connect_model()