4590: Error on access of LDS editor when sealed to family has been removed.

svn: r16592
This commit is contained in:
Michiel Nauta
2011-02-09 16:03:52 +00:00
parent 38143d7ac4
commit 1231b1cac8
8 changed files with 81 additions and 39 deletions

View File

@@ -200,6 +200,7 @@ class Check(tool.BatchTool):
checker.check_events()
checker.check_person_references()
checker.check_family_references()
checker.check_place_references()
checker.check_source_references()
checker.check_media_references()
@@ -234,6 +235,7 @@ class CheckIntegrity(object):
self.invalid_birth_events = []
self.invalid_death_events = []
self.invalid_person_references = []
self.invalid_family_references = []
self.invalid_place_references = []
self.invalid_source_references = []
self.invalid_repo_references = []
@@ -871,6 +873,24 @@ class CheckIntegrity(object):
self.db.commit_person(person, self.trans)
self.invalid_person_references.append(key)
def check_family_references(self):
plist = self.db.get_person_handles()
self.progress.set_pass(_('Looking for family reference problems'),
len(plist))
for key in plist:
person = self.db.get_person_from_handle(key)
for ordinance in person.get_lds_ord_list():
family_handle = ordinance.get_family_handle()
if family_handle:
family = self.db.get_family_from_handle(family_handle)
if not family:
# The referenced family does not exist in the database
ordinance.set_family_handle(None)
self.db.commit_person(person, self.trans)
self.invalid_family_references.append(key)
def check_repo_references(self):
slist = self.db.get_source_handles()
@@ -1298,6 +1318,7 @@ class CheckIntegrity(object):
death_invalid = len(self.invalid_death_events)
person = birth_invalid + death_invalid
person_references = len(self.invalid_person_references)
family_references = len(self.invalid_family_references)
invalid_dates = len(self.invalid_dates)
place_references = len(self.invalid_place_references)
source_references = len(self.invalid_source_references)
@@ -1318,9 +1339,9 @@ class CheckIntegrity(object):
errors = (photos + efam + blink + plink + slink + rel +
event_invalid + person +
person_references + place_references + source_references +
repo_references + media_references + note_references +
name_format + empty_objs + invalid_dates
person_references + family_references + place_references +
source_references + repo_references + media_references +
note_references + name_format + empty_objs + invalid_dates
)
if errors == 0:
@@ -1427,6 +1448,13 @@ class CheckIntegrity(object):
person_references) % person_references
)
if family_references:
self.text.write(
ngettext("%d family was referenced but not found\n",
"%d families were referenced, but not found\n",
family_references) % family_references
)
if invalid_dates:
self.text.write(ngettext("%d date was corrected\n",
"%d dates were corrected\n",