6960: Error merging citations

Error merging citations containing objects with citations.
reapply from gramps40 the fix to MergeCitationQuery
merge_ref_test suite still fails :(

svn: r22938
This commit is contained in:
Vassilii Khachaturov 2013-08-29 16:33:21 +00:00
parent 0bf91f7708
commit 9487b3c1b7

View File

@ -30,7 +30,8 @@ Provide merge capabilities for citations.
# Gramps modules # Gramps modules
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from ..lib import (Person, Family, Event, Place, MediaObject, Repository) from ..lib import (Person, Family, Event, Place,
MediaObject, Repository, Citation)
from ..db import DbTxn from ..db import DbTxn
from ..const import GRAMPS_LOCALE as glocale from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.sgettext _ = glocale.translation.sgettext
@ -94,6 +95,12 @@ class MergeCitationQuery(object):
repository.replace_citation_references(old_handle, repository.replace_citation_references(old_handle,
new_handle) new_handle)
self.database.commit_repository(repository, trans) self.database.commit_repository(repository, trans)
elif class_name == Citation.__name__:
citation = self.database.get_citation_from_handle(handle)
assert(citation.has_citation_reference(old_handle))
citation.replace_citation_references(old_handle,
new_handle)
self.database.commit_citation(citation, trans)
else: else:
raise MergeError("Encounter an object of type %s that has " raise MergeError("Encounter an object of type %s that has "
"a citation reference." % class_name) "a citation reference." % class_name)