0005785: print statements in Check.py causing a crash in Windows (pythonw.exe) after outputting 4096 characters. Change to logging.warning and logging.info.
svn: r19994
This commit is contained in:
parent
d15031df00
commit
3fa004ce98
@ -48,7 +48,6 @@ from collections import defaultdict
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
import logging
|
||||
LOG_OBJ = logging.getLogger(".CheckRepair")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -82,10 +81,6 @@ from gui.glade import Glade
|
||||
# All except 09, 0A, 0D are replaced with space.
|
||||
strip_dict = dict.fromkeys(range(9)+range(11,13)+range(14, 32), u" ")
|
||||
|
||||
# This is assigned so that it can be either LOG_OBJ.debug or print, depending on
|
||||
# which is deemed to better interface for Gramps
|
||||
LOG = print
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Low Level repair
|
||||
@ -105,7 +100,7 @@ def cross_table_duplicates(db):
|
||||
"""
|
||||
progress = ProgressMeter(_('Checking Database'),'')
|
||||
progress.set_pass(_('Looking for cross table duplicates'), 9)
|
||||
LOG('Looking for cross table duplicates')
|
||||
logging.info('Looking for cross table duplicates')
|
||||
total_nr_handles = 0
|
||||
all_handles = set([])
|
||||
for the_map in [db.person_map, db.family_map, db.event_map, db.place_map,
|
||||
@ -117,8 +112,11 @@ def cross_table_duplicates(db):
|
||||
progress.step()
|
||||
progress.close()
|
||||
num_errors = total_nr_handles - len(all_handles)
|
||||
LOG(' OK: No cross table duplicates' if num_errors == 0 else
|
||||
' FAIL: Found %d cross table duplicates' % num_errors)
|
||||
if num_errors == 0:
|
||||
logging.info(' OK: No cross table duplicates')
|
||||
else:
|
||||
logging.warning(' FAIL: Found %d cross table duplicates' %
|
||||
num_errors)
|
||||
return total_nr_handles > len(all_handles)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -255,7 +253,7 @@ class CheckIntegrity(object):
|
||||
"""
|
||||
self.progress.set_pass(_('Looking for invalid name format references'),
|
||||
self.db.get_number_of_people())
|
||||
LOG('Looking for invalid name format references')
|
||||
logging.info('Looking for invalid name format references')
|
||||
|
||||
deleted_name_formats = [number for (number, name, fmt_str,act)
|
||||
in self.db.name_formats if not act]
|
||||
@ -301,13 +299,13 @@ class CheckIntegrity(object):
|
||||
only_active=False)
|
||||
|
||||
if len(self.removed_name_format) == 0:
|
||||
LOG(' OK: no invalid name formats found found')
|
||||
logging.info(' OK: no invalid name formats found found')
|
||||
|
||||
def cleanup_duplicate_spouses(self):
|
||||
|
||||
self.progress.set_pass(_('Looking for duplicate spouses'),
|
||||
self.db.get_number_of_people())
|
||||
LOG('Looking for duplicate spouses')
|
||||
logging.info('Looking for duplicate spouses')
|
||||
previous_errors = len(self.duplicate_links)
|
||||
|
||||
for handle in self.db.person_map.keys():
|
||||
@ -325,12 +323,12 @@ class CheckIntegrity(object):
|
||||
self.progress.step()
|
||||
|
||||
if previous_errors == len(self.duplicate_links):
|
||||
LOG(' OK: no duplicate spouses found')
|
||||
logging.info(' OK: no duplicate spouses found')
|
||||
|
||||
def fix_encoding(self):
|
||||
self.progress.set_pass(_('Looking for character encoding errors'),
|
||||
self.db.get_number_of_media_objects())
|
||||
LOG('Looking for character encoding errors')
|
||||
logging.info('Looking for character encoding errors')
|
||||
error_count = 0
|
||||
for handle in self.db.media_map.keys():
|
||||
data = self.db.media_map[handle]
|
||||
@ -340,11 +338,13 @@ class CheckIntegrity(object):
|
||||
obj.desc = fix_encoding( obj.desc, errors='ignore')
|
||||
self.db.commit_media_object(obj, self.trans)
|
||||
if not isinstance(data[2], unicode):
|
||||
LOG(' FAIL: encoding error on media object "%s"'
|
||||
' path "%s"' % (obj.gramps_id, obj.path))
|
||||
logging.warning(' FAIL: encoding error on media object '
|
||||
'"%(gid)s" path "%(path)s"' %
|
||||
{'gid' : obj.gramps_id, 'path' : obj.path})
|
||||
if not isinstance(data[2], unicode):
|
||||
LOG(' FAIL: encoding error on media object "%s"'
|
||||
' description "%s"' % (obj.gramps_id, obj.desc))
|
||||
logging.warning(' FAIL: encoding error on media object '
|
||||
'"%(gid)s" description "%(desc)s"' %
|
||||
{'gid' : obj.gramps_id, 'desc' : obj.desc})
|
||||
error_count += 1
|
||||
# Once we are here, fix the mime string if not str
|
||||
if not isinstance(data[3], str):
|
||||
@ -357,17 +357,18 @@ class CheckIntegrity(object):
|
||||
except:
|
||||
obj.mime = ""
|
||||
self.db.commit_media_object(obj, self.trans)
|
||||
LOG(' FAIL: encoding error on media object "%s"'
|
||||
' mime "%s"' % (obj.desc, obj.mime))
|
||||
logging.warning(' FAIL: encoding error on media object '
|
||||
'"%(desc)s" mime "%(mime)s"' %
|
||||
{'desc' : obj.desc, 'mime' : obj.mime})
|
||||
error_count += 1
|
||||
self.progress.step()
|
||||
if error_count == 0:
|
||||
LOG(' OK: no encoding errors found')
|
||||
logging.info(' OK: no encoding errors found')
|
||||
|
||||
def fix_ctrlchars_in_notes(self):
|
||||
self.progress.set_pass(_('Looking for ctrl characters in notes'),
|
||||
self.db.get_number_of_notes())
|
||||
LOG('Looking for ctrl characters in notes')
|
||||
logging.info('Looking for ctrl characters in notes')
|
||||
error_count = 0
|
||||
for handle in self.db.note_map.keys():
|
||||
note = self.db.get_note_from_handle(handle)
|
||||
@ -375,7 +376,7 @@ class CheckIntegrity(object):
|
||||
old_text = unicode(stext)
|
||||
new_text = old_text.translate(strip_dict)
|
||||
if old_text != new_text:
|
||||
LOG(' FAIL: control characters found in note "%s"' %
|
||||
logging.warning(' FAIL: control characters found in note "%s"' %
|
||||
self.db.note_map[handle][1])
|
||||
error_count += 1
|
||||
# Commit only if ctrl char found.
|
||||
@ -384,7 +385,7 @@ class CheckIntegrity(object):
|
||||
self.db.commit_note(note, self.trans)
|
||||
self.progress.step()
|
||||
if error_count == 0:
|
||||
LOG(' OK: no ctrl characters in notes found')
|
||||
logging.info(' OK: no ctrl characters in notes found')
|
||||
|
||||
def check_for_broken_family_links(self):
|
||||
# Check persons referenced by the family objects
|
||||
@ -393,7 +394,7 @@ class CheckIntegrity(object):
|
||||
self.progress.set_pass(_('Looking for broken family links'),
|
||||
len(fhandle_list) +
|
||||
self.db.get_number_of_people())
|
||||
LOG('Looking for broken family links')
|
||||
logging.info('Looking for broken family links')
|
||||
previous_errors = len(self.broken_parent_links + self.broken_links)
|
||||
|
||||
for family_handle in fhandle_list:
|
||||
@ -410,8 +411,10 @@ class CheckIntegrity(object):
|
||||
family.set_father_handle(None)
|
||||
self.db.commit_family(family, self.trans)
|
||||
self.broken_parent_links.append((father_handle, family_handle))
|
||||
LOG(" FAIL: family '%s' father handle '%s'"
|
||||
" does not exist" % (family.gramps_id, father_handle))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' "
|
||||
"father handle '%(hand)s' does not exist" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'hand' : father_handle})
|
||||
father_handle = None
|
||||
if mother_handle:
|
||||
mother = self.db.get_person_from_handle(mother_handle)
|
||||
@ -423,8 +426,10 @@ class CheckIntegrity(object):
|
||||
family.set_mother_handle(None)
|
||||
self.db.commit_family(family, self.trans)
|
||||
self.broken_parent_links.append((mother_handle, family_handle))
|
||||
LOG(" FAIL: family '%s' mother handle '%s'"
|
||||
" does not exist" % (family.gramps_id, mother_handle))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' "
|
||||
"mother handle '%(hand)s' does not exist" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'hand' : mother_handle})
|
||||
mother_handle = None
|
||||
|
||||
if father_handle and father and \
|
||||
@ -435,9 +440,10 @@ class CheckIntegrity(object):
|
||||
self.broken_parent_links.append((father_handle, family_handle))
|
||||
father.add_family_handle(family_handle)
|
||||
self.db.commit_person(father, self.trans)
|
||||
LOG(" FAIL: family '%s' father '%s'"
|
||||
" does not refer back to the family" %
|
||||
(family.gramps_id, father_handle))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' father "
|
||||
"'%(hand)s' does not refer back to the family" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'hand' : father_handle})
|
||||
|
||||
if mother_handle and mother and \
|
||||
family_handle not in mother.get_family_handle_list():
|
||||
@ -447,9 +453,10 @@ class CheckIntegrity(object):
|
||||
self.broken_parent_links.append((mother_handle, family_handle))
|
||||
mother.add_family_handle(family_handle)
|
||||
self.db.commit_person(mother, self.trans)
|
||||
LOG(" FAIL: family '%s' mother '%s'"
|
||||
" does not refer back to the family" %
|
||||
(family.gramps_id, mother_handle))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' mother "
|
||||
"'%(hand)s' does not refer back to the family" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'hand' : mother_handle})
|
||||
|
||||
for child_ref in family.get_child_ref_list():
|
||||
child_handle = child_ref.ref
|
||||
@ -460,9 +467,11 @@ class CheckIntegrity(object):
|
||||
# such child from the family
|
||||
# This is tested by TestcaseGenerator where the father
|
||||
# is "Broken19"
|
||||
LOG(" FAIL: family '%s' child '%s'"
|
||||
" is one of the parents" %
|
||||
(family.gramps_id, child.gramps_id))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' "
|
||||
"child '%(child_gid)s' is one of the "
|
||||
"parents" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'child_gid' : child.gramps_id})
|
||||
family.remove_child_ref(child_ref)
|
||||
self.db.commit_family(family, self.trans)
|
||||
self.broken_links.append((child_handle, family_handle))
|
||||
@ -474,9 +483,11 @@ class CheckIntegrity(object):
|
||||
# The referenced child has no reference to the family
|
||||
# This is tested by TestcaseGenerator where the father
|
||||
# is "Broken8"
|
||||
LOG(" FAIL: family '%s' child '%s'"
|
||||
" has no reference to the family" %
|
||||
(family.gramps_id, child.gramps_id))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' "
|
||||
"child '%(child_gid)s' has no reference"
|
||||
" to the family" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'child_gid' : child.gramps_id})
|
||||
family.remove_child_ref(child_ref)
|
||||
self.db.commit_family(family, self.trans)
|
||||
self.broken_links.append((child_handle, family_handle))
|
||||
@ -485,9 +496,10 @@ class CheckIntegrity(object):
|
||||
# does not exist in the database
|
||||
# This is tested by TestcaseGenerator where the father
|
||||
# is "Broken20"
|
||||
LOG(" FAIL: family '%s' child '%s'"
|
||||
" does not exist in the database" %
|
||||
(family.gramps_id, child_handle))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' child "
|
||||
"'%(hand)s' does not exist in the database" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'hand' : child_handle})
|
||||
family.remove_child_ref(child_ref)
|
||||
self.db.commit_family(family, self.trans)
|
||||
self.broken_links.append((child_handle, family_handle))
|
||||
@ -533,9 +545,11 @@ class CheckIntegrity(object):
|
||||
# Person is not a child in the referenced parent family
|
||||
# This is tested by TestcaseGenerator where the father
|
||||
# is "Broken9"
|
||||
LOG(" FAIL: family '%s' person '%s'"
|
||||
" is not a child in the referenced parent family" %
|
||||
(family.gramps_id, person.gramps_id))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' person "
|
||||
"'%(pers_gid)s' is not a child in the "
|
||||
"referenced parent family" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'pers_gid' :person.gramps_id})
|
||||
person.remove_parent_family_handle(par_family_handle)
|
||||
self.db.commit_person(person, self.trans)
|
||||
self.broken_links.append((person_handle,family_handle))
|
||||
@ -545,9 +559,11 @@ class CheckIntegrity(object):
|
||||
# The referenced family does not exist in database
|
||||
# This is tested by TestcaseGenerator where the father
|
||||
# is "Broken20"
|
||||
LOG(" FAIL: person '%s' refers to "
|
||||
"family '%s' which is not in the database" %
|
||||
(person.gramps_id, family_handle))
|
||||
logging.warning(" FAIL: person '%(pers_gid)s' refers to "
|
||||
"family '%(hand)s' which is not in the "
|
||||
"database" %
|
||||
{'pers_gid' : person.gramps_id,
|
||||
'hand' : family_handle})
|
||||
person.remove_family_handle(family_handle)
|
||||
self.db.commit_person(person, self.trans)
|
||||
self.broken_links.append((person_handle, family_handle))
|
||||
@ -561,22 +577,24 @@ class CheckIntegrity(object):
|
||||
# "Broken2" and the family misses the link to the father, and
|
||||
# where the mother is "Broken3" and the family misses the link
|
||||
# to the mother
|
||||
LOG(" FAIL: family '%s' person '%s'"
|
||||
" is not member of the referenced family" %
|
||||
(family.gramps_id, person.gramps_id))
|
||||
logging.warning(" FAIL: family '%(fam_gid)s' person "
|
||||
"'%(pers_gid)s' is not member of the referenced"
|
||||
" family" %
|
||||
{'fam_gid' : family.gramps_id,
|
||||
'pers_gid' : person.gramps_id})
|
||||
person.remove_family_handle(family_handle)
|
||||
self.db.commit_person(person, self.trans)
|
||||
self.broken_links.append((person_handle, family_handle))
|
||||
self.progress.step()
|
||||
|
||||
if previous_errors == len(self.broken_parent_links + self.broken_links):
|
||||
LOG(' OK: no broken family links found')
|
||||
logging.info(' OK: no broken family links found')
|
||||
|
||||
def cleanup_missing_photos(self, cl=0):
|
||||
|
||||
self.progress.set_pass(_('Looking for unused objects'),
|
||||
len(self.db.get_media_object_handles()))
|
||||
LOG('Looking for missing photos')
|
||||
logging.info('Looking for missing photos')
|
||||
|
||||
missmedia_action = 0
|
||||
#-------------------------------------------------------------------------
|
||||
@ -621,17 +639,18 @@ class CheckIntegrity(object):
|
||||
|
||||
self.removed_photo.append(ObjectId)
|
||||
self.db.remove_object(ObjectId,self.trans)
|
||||
LOG(' FAIL: media object and all references to it removed')
|
||||
logging.warning(' FAIL: media object and all references to '
|
||||
'it removed')
|
||||
|
||||
def leave_clicked():
|
||||
self.bad_photo.append(ObjectId)
|
||||
LOG(' FAIL: references to missing file kept')
|
||||
logging.warning(' FAIL: references to missing file kept')
|
||||
|
||||
def select_clicked():
|
||||
# File is lost => select a file to replace the lost one
|
||||
def fs_close_window(obj):
|
||||
self.bad_photo.append(ObjectId)
|
||||
LOG(' FAIL: references to missing file kept')
|
||||
logging.warning(' FAIL: references to missing file kept')
|
||||
|
||||
def fs_ok_clicked(obj):
|
||||
name = get_unicode_path_from_file_chooser(fs_top.get_filename())
|
||||
@ -641,10 +660,11 @@ class CheckIntegrity(object):
|
||||
self.db.commit_media_object(obj, self.trans)
|
||||
self.replaced_photo.append(ObjectId)
|
||||
self.last_img_dir = os.path.dirname(name)
|
||||
LOG(' FAIL: media object reselected to "%s"' % name)
|
||||
logging.warning(' FAIL: media object reselected to '
|
||||
'"%s"' % name)
|
||||
else:
|
||||
self.bad_photo.append(ObjectId)
|
||||
LOG(' FAIL: references to missing file kept')
|
||||
logging.warning(' FAIL: references to missing file kept')
|
||||
|
||||
fs_top = gtk.FileChooserDialog("%s - Gramps" % _("Select file"),
|
||||
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
|
||||
@ -668,12 +688,16 @@ class CheckIntegrity(object):
|
||||
if cl:
|
||||
# Convert to file system encoding before prining
|
||||
fn = os.path.basename(photo_name).encode(sys.getfilesystemencoding())
|
||||
print ("Warning: media file %s was not found." % fn)
|
||||
logging.warning(" FAIL: media file %s was not found." %
|
||||
fn)
|
||||
self.bad_photo.append(ObjectId)
|
||||
else:
|
||||
if missmedia_action == 0:
|
||||
LOG(' FAIL: media object "%s" reference to missing '
|
||||
'file "%s" found' % (photo_desc, photo_name))
|
||||
logging.warning(' FAIL: media object "%(desc)s" '
|
||||
'reference to missing file "%(name)s" '
|
||||
'found' %
|
||||
{'desc' : photo_desc,
|
||||
'name' : photo_name})
|
||||
mmd = MissingMediaDialog(_("Media object could not be found"),
|
||||
_("The file:\n %(file_name)s \nis referenced in the database, but no longer exists. "
|
||||
"The file may have been deleted or moved to a different location. "
|
||||
@ -683,20 +707,29 @@ class CheckIntegrity(object):
|
||||
remove_clicked, leave_clicked, select_clicked)
|
||||
missmedia_action = mmd.default_action
|
||||
elif missmedia_action == 1:
|
||||
LOG(' FAIL: media object "%s" reference to missing '
|
||||
'file "%s" found' % (photo_desc, photo_name))
|
||||
logging.warning(' FAIL: media object "%(desc)s" '
|
||||
'reference to missing file "%(name)s" '
|
||||
'found' %
|
||||
{'desc' : photo_desc,
|
||||
'name' : photo_name})
|
||||
remove_clicked()
|
||||
elif missmedia_action == 2:
|
||||
LOG(' FAIL: media object "%s" reference to missing '
|
||||
'file "%s" found' % (photo_desc, photo_name))
|
||||
logging.warning(' FAIL: media object "%(desc)s" '
|
||||
'reference to missing file "%(name)s" '
|
||||
'found' %
|
||||
{'desc' : photo_desc,
|
||||
'name' : photo_name})
|
||||
leave_clicked()
|
||||
elif missmedia_action == 3:
|
||||
LOG(' FAIL: media object "%s" reference to missing '
|
||||
'file "%s" found' % (photo_desc, photo_name))
|
||||
logging.warning(' FAIL: media object "%(desc)s" '
|
||||
'reference to missing file "%(name)s" '
|
||||
'found' %
|
||||
{'desc' : photo_desc,
|
||||
'name' : photo_name})
|
||||
select_clicked()
|
||||
self.progress.step()
|
||||
if len(self.bad_photo + self.removed_photo) == 0:
|
||||
LOG(' OK: no missing photos found')
|
||||
logging.info(' OK: no missing photos found')
|
||||
|
||||
def cleanup_empty_objects(self):
|
||||
#the position of the change column in the primary objects
|
||||
@ -821,22 +854,23 @@ class CheckIntegrity(object):
|
||||
with cursor_func() as cursor:
|
||||
total = total_func()
|
||||
self.progress.set_pass(text, total)
|
||||
LOG(text)
|
||||
logging.info(text)
|
||||
|
||||
for handle, data in cursor:
|
||||
self.progress.step()
|
||||
if check_func(data):
|
||||
# we cannot remove here as that would destroy cursor
|
||||
# so save the handles for later removal
|
||||
LOG(' FAIL: empty %s record with handle "%s" was found'
|
||||
% (the_type, handle))
|
||||
logging.warning(' FAIL: empty %(type)s record with '
|
||||
'handle "%(hand)s" was found' %
|
||||
{'type' : the_type, 'hand' : handle})
|
||||
self.empty_objects[the_type].append(handle)
|
||||
|
||||
#now remove
|
||||
for handle in self.empty_objects[the_type]:
|
||||
remove_func(handle, self.trans)
|
||||
if len(self.empty_objects[the_type]) == 0:
|
||||
LOG(' OK: no empty %s found' % the_type)
|
||||
logging.info(' OK: no empty %s found' % the_type)
|
||||
|
||||
def _check_empty(self, data, empty_data, changepos):
|
||||
"""compare the data with the data of an empty object
|
||||
@ -854,7 +888,7 @@ class CheckIntegrity(object):
|
||||
|
||||
self.progress.set_pass(_('Looking for empty families'),
|
||||
len(fhandle_list))
|
||||
LOG('Looking for empty families')
|
||||
logging.info('Looking for empty families')
|
||||
previous_errors = len(self.empty_family)
|
||||
for family_handle in fhandle_list:
|
||||
self.progress.step()
|
||||
@ -870,7 +904,7 @@ class CheckIntegrity(object):
|
||||
self.delete_empty_family(family_handle)
|
||||
|
||||
if previous_errors == len(self.empty_family):
|
||||
LOG(' OK: no empty families found')
|
||||
logging.info(' OK: no empty families found')
|
||||
|
||||
def delete_empty_family(self, family_handle):
|
||||
for key in self.db.get_person_handles(sort_handles=False):
|
||||
@ -889,7 +923,7 @@ class CheckIntegrity(object):
|
||||
fhandle_list = self.db.get_family_handles()
|
||||
self.progress.set_pass(_('Looking for broken parent relationships'),
|
||||
len(fhandle_list))
|
||||
LOG('Looking for broken parent relationships')
|
||||
logging.info('Looking for broken parent relationships')
|
||||
previous_errors = len(self.fam_rel)
|
||||
|
||||
for family_handle in fhandle_list:
|
||||
@ -913,7 +947,7 @@ class CheckIntegrity(object):
|
||||
if (fgender == gen.lib.Person.FEMALE
|
||||
or mgender == gen.lib.Person.MALE) and fgender != mgender:
|
||||
# swap. note: (at most) one handle may be None
|
||||
LOG(' FAIL: the family "%s" has a father=female or '
|
||||
logging.warning(' FAIL: the family "%s" has a father=female or '
|
||||
' mother=male in a different sex family' % family.gramps_id)
|
||||
family.set_father_handle(mother_handle)
|
||||
family.set_mother_handle(father_handle)
|
||||
@ -921,13 +955,13 @@ class CheckIntegrity(object):
|
||||
self.fam_rel.append(family_handle)
|
||||
|
||||
if previous_errors == len(self.fam_rel):
|
||||
LOG(' OK: no broken parent relationships found')
|
||||
logging.info(' OK: no broken parent relationships found')
|
||||
|
||||
def check_events(self):
|
||||
self.progress.set_pass(_('Looking for event problems'),
|
||||
self.db.get_number_of_people()
|
||||
+self.db.get_number_of_families())
|
||||
LOG('Looking for event problems')
|
||||
logging.info('Looking for event problems')
|
||||
|
||||
for key in self.db.get_person_handles(sort_handles=False):
|
||||
self.progress.step()
|
||||
@ -949,17 +983,21 @@ class CheckIntegrity(object):
|
||||
make_unknown(birth_handle, self.explanation.handle,
|
||||
self.class_event, self.commit_event, self.trans,
|
||||
type=gen.lib.EventType.BIRTH)
|
||||
LOG(' FAIL: the person "%s" refers to a birth event'
|
||||
' "%s" which does not exist in the database' %
|
||||
(person.gramps_id, birth_handle))
|
||||
logging.warning(' FAIL: the person "%(gid)s" refers to '
|
||||
'a birth event "%(hand)s" which does not '
|
||||
'exist in the database' %
|
||||
{'gid' : person.gramps_id,
|
||||
'hand' : birth_handle})
|
||||
self.invalid_events.add(key)
|
||||
else:
|
||||
if int(birth.get_type()) != gen.lib.EventType.BIRTH:
|
||||
# Birth event was not of the type "Birth"
|
||||
# This is tested by TestcaseGenerator person "Broken14"
|
||||
LOG(' FAIL: the person "%s" refers to a birth event'
|
||||
' which is of type "%s" instead of Birth' %
|
||||
(person.gramps_id, int(birth.get_type())))
|
||||
logging.warning(' FAIL: the person "%(gid)s" refers '
|
||||
'to a birth event which is of type '
|
||||
'"%(type)s" instead of Birth' %
|
||||
{'gid' : person.gramps_id,
|
||||
'type' : int(birth.get_type())})
|
||||
birth.set_type(gen.lib.EventType(gen.lib.EventType.BIRTH))
|
||||
self.db.commit_event(birth, self.trans)
|
||||
self.invalid_birth_events.add(key)
|
||||
@ -980,9 +1018,11 @@ class CheckIntegrity(object):
|
||||
# The death event referenced by the death handle
|
||||
# does not exist in the database
|
||||
# This is tested by TestcaseGenerator person "Broken12"
|
||||
LOG(' FAIL: the person "%s" refers to a death event'
|
||||
' "%s" which does not exist in the database' %
|
||||
(person.gramps_id, death_handle))
|
||||
logging.warning(' FAIL: the person "%(gid)s" refers to '
|
||||
'a death event "%(hand)s" which does not '
|
||||
'exist in the database' %
|
||||
{'gid' : person.gramps_id,
|
||||
'hand' : death_handle})
|
||||
make_unknown(death_handle, self.explanation.handle,
|
||||
self.class_event, self.commit_event, self.trans,
|
||||
type=gen.lib.EventType.DEATH)
|
||||
@ -991,9 +1031,11 @@ class CheckIntegrity(object):
|
||||
if int(death.get_type()) != gen.lib.EventType.DEATH:
|
||||
# Death event was not of the type "Death"
|
||||
# This is tested by TestcaseGenerator person "Broken15"
|
||||
LOG(' FAIL: the person "%s" refers to a death event'
|
||||
' which is of type "%s" instead of Death' %
|
||||
(person.gramps_id, int(death.get_type())))
|
||||
logging.warning(' FAIL: the person "%(gid)s" refers '
|
||||
'to a death event which is of type '
|
||||
'"%(type)s" instead of Death' %
|
||||
{'gid' : person.gramps_id,
|
||||
'type' : int(death.get_type())})
|
||||
death.set_type(gen.lib.EventType(gen.lib.EventType.DEATH))
|
||||
self.db.commit_event(death, self.trans)
|
||||
self.invalid_death_events.add(key)
|
||||
@ -1018,9 +1060,11 @@ class CheckIntegrity(object):
|
||||
# This is tested by TestcaseGenerator person "Broken11"
|
||||
# This is tested by TestcaseGenerator person "Broken12"
|
||||
# This is tested by TestcaseGenerator person "Broken13"
|
||||
LOG(' FAIL: the person "%s" refers to an event'
|
||||
' "%s" which does not exist in the database' %
|
||||
(person.gramps_id, event_handle))
|
||||
logging.warning(' FAIL: the person "%(gid)s" refers '
|
||||
'to an event "%(hand)s" which does not '
|
||||
'exist in the database' %
|
||||
{ 'gid' : person.gramps_id,
|
||||
'hand' : event_handle})
|
||||
make_unknown(event_handle,
|
||||
self.explanation.handle, self.class_event,
|
||||
self.commit_event, self.trans)
|
||||
@ -1030,7 +1074,7 @@ class CheckIntegrity(object):
|
||||
self.db.commit_person(person, self.trans)
|
||||
elif not isinstance(person.get_event_ref_list(), list):
|
||||
# event_list is None or other garbage
|
||||
LOG(' FAIL: the person "%s" has an event ref list'
|
||||
logging.warning(' FAIL: the person "%s" has an event ref list'
|
||||
' which is invalid' % (person.gramps_id))
|
||||
person.set_event_ref_list([])
|
||||
self.db.commit_person(person, self.trans)
|
||||
@ -1052,9 +1096,11 @@ class CheckIntegrity(object):
|
||||
if not event:
|
||||
# The event referenced by the family
|
||||
# does not exist in the database
|
||||
LOG(' FAIL: the family "%s" refers to an event'
|
||||
' "%s" which does not exist in the database' %
|
||||
(family.gramps_id, event_handle))
|
||||
logging.warning(' FAIL: the family "%(gid)s" refers '
|
||||
'to an event "%(hand)s" which does not '
|
||||
'exist in the database' %
|
||||
{'gid' : family.gramps_id,
|
||||
'hand' : event_handle})
|
||||
make_unknown(event_handle, self.explanation,
|
||||
self.class_event, self.commit_event, self.trans)
|
||||
self.invalid_events.add(key)
|
||||
@ -1063,7 +1109,7 @@ class CheckIntegrity(object):
|
||||
self.db.commit_family(family, self.trans)
|
||||
elif not isinstance(family.get_event_ref_list(), list):
|
||||
# event_list is None or other garbage
|
||||
LOG(' FAIL: the family "%s" has an event ref list'
|
||||
logging.warning(' FAIL: the family "%s" has an event ref list'
|
||||
' which is invalid' % (family.gramps_id))
|
||||
family.set_event_ref_list([])
|
||||
self.db.commit_family(family, self.trans)
|
||||
@ -1071,14 +1117,14 @@ class CheckIntegrity(object):
|
||||
|
||||
if len (self.invalid_birth_events) + len(self.invalid_death_events) +\
|
||||
len(self.invalid_events) == 0:
|
||||
LOG(' OK: no event problems found')
|
||||
logging.info(' OK: no event problems found')
|
||||
|
||||
def check_person_references(self):
|
||||
plist = self.db.get_person_handles()
|
||||
|
||||
self.progress.set_pass(_('Looking for person reference problems'),
|
||||
len(plist))
|
||||
LOG('Looking for person reference problems')
|
||||
logging.info('Looking for person reference problems')
|
||||
|
||||
for key in plist:
|
||||
self.progress.step()
|
||||
@ -1101,14 +1147,14 @@ class CheckIntegrity(object):
|
||||
self.db.commit_person(person, self.trans)
|
||||
|
||||
if len (self.invalid_person_references) == 0:
|
||||
LOG(' OK: no event problems found')
|
||||
logging.info(' OK: no event problems found')
|
||||
|
||||
def check_family_references(self):
|
||||
plist = self.db.get_person_handles()
|
||||
|
||||
self.progress.set_pass(_('Looking for family reference problems'),
|
||||
len(plist))
|
||||
LOG('Looking for family reference problems')
|
||||
logging.info('Looking for family reference problems')
|
||||
|
||||
for key in plist:
|
||||
self.progress.step()
|
||||
@ -1125,14 +1171,14 @@ class CheckIntegrity(object):
|
||||
self.invalid_family_references.add(key)
|
||||
|
||||
if len (self.invalid_family_references) == 0:
|
||||
LOG(' OK: no event problems found')
|
||||
logging.info(' OK: no event problems found')
|
||||
|
||||
def check_repo_references(self):
|
||||
slist = self.db.get_source_handles()
|
||||
|
||||
self.progress.set_pass(_('Looking for repository reference problems'),
|
||||
len(slist))
|
||||
LOG('Looking for repository reference problems')
|
||||
logging.info('Looking for repository reference problems')
|
||||
|
||||
for key in slist:
|
||||
self.progress.step()
|
||||
@ -1155,7 +1201,7 @@ class CheckIntegrity(object):
|
||||
self.db.commit_source(source, self.trans)
|
||||
|
||||
if len (self.invalid_repo_references) == 0:
|
||||
LOG(' OK: no repository reference problems found')
|
||||
logging.info(' OK: no repository reference problems found')
|
||||
|
||||
def check_place_references(self):
|
||||
plist = self.db.get_person_handles()
|
||||
@ -1163,7 +1209,7 @@ class CheckIntegrity(object):
|
||||
elist = self.db.get_event_handles()
|
||||
self.progress.set_pass(_('Looking for place reference problems'),
|
||||
len(elist)+len(plist)+len(flist))
|
||||
LOG('Looking for place reference problems')
|
||||
logging.info('Looking for place reference problems')
|
||||
|
||||
# check persons -> the LdsOrd references a place
|
||||
for key in plist:
|
||||
@ -1180,9 +1226,11 @@ class CheckIntegrity(object):
|
||||
make_unknown(place_handle,
|
||||
self.explanation.handle, self.class_place,
|
||||
self.commit_place, self.trans)
|
||||
LOG(' FAIL: the person "%s" refers to an LdsOrd'
|
||||
' place "%s" which does not exist in the database' %
|
||||
(person.gramps_id, place_handle))
|
||||
logging.warning(' FAIL: the person "%(gid)s" refers '
|
||||
'to an LdsOrd place "%(hand)s" which '
|
||||
'does not exist in the database' %
|
||||
{'gid' : person.gramps_id,
|
||||
'hand' : place_handle})
|
||||
self.invalid_place_references.add(key)
|
||||
# check families -> the LdsOrd references a place
|
||||
for key in flist:
|
||||
@ -1197,9 +1245,11 @@ class CheckIntegrity(object):
|
||||
make_unknown(place_handle,
|
||||
self.explanation.handle, self.class_place,
|
||||
self.commit_place, self.trans)
|
||||
LOG(' FAIL: the family "%s" refers to an LdsOrd'
|
||||
' place "%s" which does not exist in the database' %
|
||||
(family.gramps_id, place_handle))
|
||||
logging.warning(' FAIL: the family "%(gid)s" refers '
|
||||
'to an LdsOrd place "%(hand)s" which '
|
||||
'does not exist in the database' %
|
||||
{'gid' : family.gramps_id,
|
||||
'hand' : place_handle})
|
||||
self.invalid_place_references.add(key)
|
||||
# check events
|
||||
for key in elist:
|
||||
@ -1213,13 +1263,15 @@ class CheckIntegrity(object):
|
||||
make_unknown(place_handle,
|
||||
self.explanation.handle, self.class_place,
|
||||
self.commit_place, self.trans)
|
||||
LOG(' FAIL: the event "%s" refers to an LdsOrd place'
|
||||
' "%s" which does not exist in the database' %
|
||||
(event.gramps_id, place_handle))
|
||||
logging.warning(' FAIL: the event "%(gid)s" refers '
|
||||
'to an LdsOrd place "%(hand)s" which '
|
||||
'does not exist in the database' %
|
||||
{'gid' : event.gramps_id,
|
||||
'hand' : place_handle})
|
||||
self.invalid_place_references.add(key)
|
||||
|
||||
if len (self.invalid_place_references) == 0:
|
||||
LOG(' OK: no place reference problems found')
|
||||
logging.info(' OK: no place reference problems found')
|
||||
|
||||
def check_citation_references(self):
|
||||
known_handles = self.db.get_citation_handles()
|
||||
@ -1237,7 +1289,7 @@ class CheckIntegrity(object):
|
||||
|
||||
self.progress.set_pass(_('Looking for citation reference problems'),
|
||||
total)
|
||||
LOG('Looking for citation reference problems')
|
||||
logging.info('Looking for citation reference problems')
|
||||
|
||||
for handle in self.db.person_map.keys():
|
||||
self.progress.step()
|
||||
@ -1360,13 +1412,13 @@ class CheckIntegrity(object):
|
||||
self.invalid_source_references.add(created[0].handle)
|
||||
|
||||
if len(self.invalid_citation_references) == 0:
|
||||
LOG(' OK: no citation reference problems found')
|
||||
logging.info(' OK: no citation reference problems found')
|
||||
|
||||
def check_source_references(self):
|
||||
clist = self.db.get_citation_handles()
|
||||
self.progress.set_pass(_('Looking for source reference problems'),
|
||||
len(clist))
|
||||
LOG('Looking for source reference problems')
|
||||
logging.info('Looking for source reference problems')
|
||||
|
||||
for key in clist:
|
||||
self.progress.step()
|
||||
@ -1382,12 +1434,14 @@ class CheckIntegrity(object):
|
||||
# The referenced source does not exist in the database
|
||||
make_unknown(source_handle, self.explanation.handle,
|
||||
self.class_source, self.commit_source, self.trans)
|
||||
LOG(' FAIL: the citation "%s" refers to source '
|
||||
' "%s" which does not exist in the database' %
|
||||
(citation.gramps_id, source_handle))
|
||||
logging.warning(' FAIL: the citation "%(gid)s" refers '
|
||||
'to source "%(hand)s" which does not exist '
|
||||
'in the database' %
|
||||
{'gid' : citation.gramps_id,
|
||||
'hand' : source_handle})
|
||||
self.invalid_source_references.add(key)
|
||||
if len(self.invalid_source_references) == 0:
|
||||
LOG(' OK: no source reference problems found')
|
||||
logging.info(' OK: no source reference problems found')
|
||||
|
||||
def check_media_references(self):
|
||||
known_handles = self.db.get_media_object_handles(False)
|
||||
@ -1403,7 +1457,7 @@ class CheckIntegrity(object):
|
||||
|
||||
self.progress.set_pass(_('Looking for media object reference problems'),
|
||||
total)
|
||||
LOG('Looking for media object reference problems')
|
||||
logging.info('Looking for media object reference problems')
|
||||
|
||||
for handle in self.db.person_map.keys():
|
||||
self.progress.step()
|
||||
@ -1506,7 +1560,7 @@ class CheckIntegrity(object):
|
||||
self.class_object, self.commit_object, self.trans)
|
||||
|
||||
if len (self.invalid_media_references) == 0:
|
||||
LOG(' OK: no media reference problems found')
|
||||
logging.info(' OK: no media reference problems found')
|
||||
|
||||
def check_note_references(self):
|
||||
# Here I assume check note_references runs after all the next checks.
|
||||
@ -1539,7 +1593,7 @@ class CheckIntegrity(object):
|
||||
|
||||
self.progress.set_pass(_('Looking for note reference problems'),
|
||||
total)
|
||||
LOG('Looking for note reference problems')
|
||||
logging.info('Looking for note reference problems')
|
||||
|
||||
for handle in self.db.person_map.keys():
|
||||
self.progress.step()
|
||||
@ -1674,7 +1728,7 @@ class CheckIntegrity(object):
|
||||
self.class_note, self.commit_note, self.trans)
|
||||
|
||||
if len (self.invalid_note_references) == 0:
|
||||
LOG(' OK: no note reference problems found')
|
||||
logging.info(' OK: no note reference problems found')
|
||||
else:
|
||||
if not missing_references:
|
||||
self.db.add_note(self.explanation, self.trans, set_gid=True)
|
||||
@ -1691,7 +1745,7 @@ class CheckIntegrity(object):
|
||||
|
||||
self.progress.set_pass(_('Looking for tag reference problems'),
|
||||
total)
|
||||
LOG('Looking for tag reference problems')
|
||||
logging.info('Looking for tag reference problems')
|
||||
|
||||
for handle in self.db.person_map.keys():
|
||||
self.progress.step()
|
||||
@ -1762,7 +1816,7 @@ class CheckIntegrity(object):
|
||||
self.commit_tag, self.trans)
|
||||
|
||||
if len(self.invalid_tag_references) == 0:
|
||||
LOG(' OK: no tag reference problems found')
|
||||
logging.info(' OK: no tag reference problems found')
|
||||
|
||||
def class_person(self, handle):
|
||||
person = gen.lib.Person()
|
||||
|
Loading…
Reference in New Issue
Block a user