diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index 9d4020444..543fe1be5 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -4,6 +4,10 @@ 2005-05-19 Alex Roitman * src/MergePeople.py (merge_family_pair): Properly use handles. + * src/RelLib.py (SourceNote.replace_source_references): Properly + replace references; (MediaBase.replace_media_references): Properly + replace references. + * src/MergeData.py: Correct comments. 2005-05-19 Martin Hawlisch * src/GenericFilter.py: Catch invalid input in some filters; diff --git a/gramps2/src/MergeData.py b/gramps2/src/MergeData.py index b3b52bbff..14944aa51 100644 --- a/gramps2/src/MergeData.py +++ b/gramps2/src/MergeData.py @@ -168,8 +168,8 @@ class MergePlaces: #------------------------------------------------------------------------- class MergeSources: """ - Merges to places into a single place. Displays a dialog box that - allows the places to be combined into one. + Merges to sources into a single source. Displays a dialog box that + allows the sources to be combined into one. """ def __init__(self,database,new_handle,old_handle,update): self.db = database @@ -291,7 +291,7 @@ class MergeSources: event = self.db.get_event_from_handle(handle) if event.has_source_reference(self.old_handle): event.replace_source_references(self.old_handle,self.new_handle) - self.db.commit_event(event,self.trans) + self.db.commit_event(event,self.trans) # sources for handle in self.db.get_source_handles(): diff --git a/gramps2/src/RelLib.py b/gramps2/src/RelLib.py index 73fb1fd32..93a21eafb 100644 --- a/gramps2/src/RelLib.py +++ b/gramps2/src/RelLib.py @@ -523,10 +523,13 @@ class SourceNote(BaseObject,NoteBase): @param new_handle: The source handle to replace the old one with. @type new_handle: str """ - while old_handle in self.source_list: - ix = self.source_list.index(old_handle) - self.source_list[ix] = new_handle - + refs_list = [ src_ref.ref for src_ref in self.source_list ] + n_replace = refs_list.count(old_handle) + for ix_replace in xrange(n_replace): + ix = refs_list.index(old_handle) + self.source_list[ix].ref = new_handle + refs_list.pop(ix) + for item in self.get_sourcref_child_list(): item.replace_source_references(old_handle,new_handle) @@ -620,9 +623,12 @@ class MediaBase: @param new_handle: The media handle to replace the old one with. @type new_handle: str """ - while old_handle in self.media_list: - ix = self.media_list.index(old_handle) - self.media_list[ix] = new_handle + refs_list = [ media_ref.ref for media_ref in self.media_list ] + n_replace = refs_list.count(old_handle) + for ix_replace in xrange(n_replace): + ix = refs_list.index(old_handle) + self.media_list[ix].ref = new_handle + refs_list.pop(ix) class DateBase: """ @@ -2950,7 +2956,7 @@ class LdsOrd(SourceNote,DateBase,PlaceBase): if self.place: return [('Place',self.place)] else: - return [] + return [] def get_handle_referents(self): """ @@ -3890,7 +3896,7 @@ class Witness(BaseObject,PrivacyBase): if self.type == Event.ID: return [('Person',self.val)] else: - return [] + return [] def set_type(self,type): self.type = type