* src/GrampsBSDDB.py, src/GrampsDbBase.py, src/GrampsInMemDB.py,

src/RelLib.py: Catch invalid arguments instead of crashing.
TODO: raise TypeError or HandleError instead of simply returning?


svn: r4613
This commit is contained in:
Martin Hawlisch 2005-05-18 08:43:04 +00:00
parent 76fe79a9c0
commit 64aac6f002
5 changed files with 42 additions and 23 deletions

View File

@ -1,3 +1,8 @@
2005-05-18 Martin Hawlisch <Martin.Hawlisch@gmx.de>
* src/GrampsBSDDB.py, src/GrampsDbBase.py, src/GrampsInMemDB.py,
src/RelLib.py: Catch invalid arguments instead of crashing.
TODO: raise TypeError or HandleError instead of simply returning?
2005-05-17 Alex Roitman <shura@gramps-project.org>
* src/GenericFilter.py: Change filter rule names to make them consistent.
* src/gramps_main.py: Change filter names to make them consistent.

View File

@ -275,7 +275,7 @@ class GrampsBSDDB(GrampsDbBase):
return vals
def remove_person(self,handle,transaction):
if not self.readonly:
if not self.readonly and handle and str(handle) in self.person_map:
person = self.get_person_from_handle(handle)
self.genderStats.uncount_person (person)
if transaction != None:
@ -284,7 +284,7 @@ class GrampsBSDDB(GrampsDbBase):
self.person_map.delete(str(handle))
def remove_source(self,handle,transaction):
if not self.readonly:
if not self.readonly and handle and str(handle) in self.source_map:
if transaction != None:
old_data = self.source_map.get(str(handle))
transaction.add(SOURCE_KEY,handle,old_data)
@ -292,7 +292,7 @@ class GrampsBSDDB(GrampsDbBase):
self.source_map.delete(str(handle))
def remove_family(self,handle,transaction):
if not self.readonly:
if not self.readonly and handle and str(handle) in self.family_map:
if transaction != None:
old_data = self.family_map.get(str(handle))
transaction.add(FAMILY_KEY,handle,old_data)
@ -300,14 +300,14 @@ class GrampsBSDDB(GrampsDbBase):
self.family_map.delete(str(handle))
def remove_event(self,handle,transaction):
if not self.readonly:
if not self.readonly and handle and str(handle) in self.event_map:
if transaction != None:
old_data = self.event_map.get(str(handle))
transaction.add(EVENT_KEY,handle,old_data)
self.event_map.delete(str(handle))
def remove_place(self,handle,transaction):
if not self.readonly:
if not self.readonly and handle and str(handle) in self.place_map:
if transaction != None:
old_data = self.place_map.get(handle)
transaction.add(PLACE_KEY,handle,old_data)
@ -315,7 +315,7 @@ class GrampsBSDDB(GrampsDbBase):
self.place_map.delete(str(handle))
def remove_object(self,handle,transaction):
if not self.readonly:
if not self.readonly and handle and str(handle) in self.media_map:
if transaction != None:
old_data = self.media_map.get(handle)
transaction.add(PLACE_KEY,handle,old_data)

View File

@ -265,7 +265,7 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Commits the specified Person to the database, storing the changes
as part of the transaction.
"""
if self.readonly or not person.get_handle():
if self.readonly or not person or not person.get_handle():
return
if change_time:
person.change = int(change_time)
@ -287,7 +287,7 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Commits the specified MediaObject to the database, storing the changes
as part of the transaction.
"""
if self.readonly or not obj.get_handle():
if self.readonly or not obj or not obj.get_handle():
return
if change_time:
obj.change = int(change_time)
@ -308,7 +308,7 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Commits the specified Source to the database, storing the changes
as part of the transaction.
"""
if self.readonly or not source.get_handle():
if self.readonly or not source or not source.get_handle():
return
if change_time:
source.change = int(change_time)
@ -329,7 +329,7 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Commits the specified Place to the database, storing the changes
as part of the transaction.
"""
if self.readonly or not place.get_handle():
if self.readonly or not place or not place.get_handle():
return
if change_time:
place.change = int(change_time)
@ -350,7 +350,7 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Commits the specified Event to the database, storing the changes
as part of the transaction.
"""
if self.readonly or not event.get_handle():
if self.readonly or not event or not event.get_handle():
return
if change_time:
event.change = int(change_time)
@ -367,7 +367,7 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Commits the specified Family to the database, storing the changes
as part of the transaction.
"""
if self.readonly or not family.handle:
if self.readonly or not family or not family.handle:
return
if change_time:
family.change = int(change_time)
@ -648,6 +648,8 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Adds a Person to the database, assigning internal IDs if they have
not already been defined.
"""
if not person:
return None
if not person.get_gramps_id():
person.set_gramps_id(self.find_next_person_gramps_id())
if not person.get_handle():
@ -661,6 +663,8 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Adds a Family to the database, assigning internal IDs if they have
not already been defined.
"""
if not family:
return None
if family.get_gramps_id() == None:
family.set_gramps_id(self.find_next_family_gramps_id())
if family.get_handle() == None:
@ -673,6 +677,8 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Adds a Source to the database, assigning internal IDs if they have
not already been defined.
"""
if not source:
return None
if source.get_handle() == None:
source.set_handle(self.create_id())
if source.get_gramps_id() == None:
@ -685,6 +691,8 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Adds an Event to the database, assigning internal IDs if they have
not already been defined.
"""
if not event:
return None
if event.get_handle() == None:
event.set_handle(self.create_id())
if event.get_gramps_id() == None:
@ -697,6 +705,8 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Adds a Place to the database, assigning internal IDs if they have
not already been defined.
"""
if not place:
return None
if place.get_handle() == None:
index = self.create_id()
place.set_handle(index)
@ -710,6 +720,8 @@ class GrampsDbBase(GrampsDBCallback.GrampsDBCallback):
Adds a MediaObject to the database, assigning internal IDs if they have
not already been defined.
"""
if not obj:
return None
index = obj.get_handle()
if index == None:
index = self.create_id()

View File

@ -135,7 +135,7 @@ class GrampsInMemDB(GrampsDbBase):
return vals
def remove_person(self,handle,transaction):
if self.readonly:
if self.readonly or not handle or str(handle) not in self.person_map:
return
person = self.get_person_from_handle(handle)
self.genderStats.uncount_person (person)
@ -147,7 +147,7 @@ class GrampsInMemDB(GrampsDbBase):
del self.person_map[handle]
def remove_source(self,handle,transaction):
if self.readonly:
if self.readonly or not handle or str(handle) not in self.source_map:
return
source = self.get_source_from_handle(handle)
if transaction != None:
@ -158,7 +158,7 @@ class GrampsInMemDB(GrampsDbBase):
del self.source_map[str(handle)]
def remove_place(self,handle,transaction):
if self.readonly:
if self.readonly or not handle or str(handle) not in self.place_map:
return
place = self.get_place_from_handle(handle)
if transaction != None:
@ -169,7 +169,7 @@ class GrampsInMemDB(GrampsDbBase):
del self.place_map[str(handle)]
def remove_object(self,handle,transaction):
if self.readonly:
if self.readonly or not handle or str(handle) not in self.media_map:
return
obj = self.get_object_from_handle(handle)
if transaction != None:
@ -179,7 +179,7 @@ class GrampsInMemDB(GrampsDbBase):
del self.media_map[str(handle)]
def remove_family(self,handle,transaction):
if self.readonly:
if self.readonly or not handle or str(handle) not in self.family_map:
return
family = self.get_family_from_handle(handle)
if transaction != None:
@ -190,7 +190,7 @@ class GrampsInMemDB(GrampsDbBase):
del self.family_map[str(handle)]
def remove_event(self,handle,transaction):
if self.readonly:
if self.readonly or not handle or str(handle) not in self.event_map:
return
if transaction != None:
old_data = self.event_map.get(str(handle))
@ -198,35 +198,35 @@ class GrampsInMemDB(GrampsDbBase):
del self.event_map[str(handle)]
def commit_person(self,person,transaction,change_time=None):
if self.readonly or not person.get_handle():
if self.readonly or not person or not person.get_handle():
return
gid = person.get_gramps_id()
self.id_trans[gid] = person.get_handle()
GrampsDbBase.commit_person(self,person,transaction,change_time)
def commit_place(self,place,transaction,change_time=None):
if self.readonly or not place.get_handle():
if self.readonly or not place or not place.get_handle():
return
gid = place.get_gramps_id()
self.pid_trans[gid] = place.get_handle()
GrampsDbBase.commit_place(self,place,transaction,change_time)
def commit_family(self,family,transaction,change_time=None):
if self.readonly or not family.get_handle():
if self.readonly or not family or not family.get_handle():
return
gid = family.get_gramps_id()
self.fid_trans[gid] = family.get_handle()
GrampsDbBase.commit_family(self,family,transaction,change_time)
def commit_media_object(self,obj,transaction,change_time=None):
if self.readonly or not obj.get_handle():
if self.readonly or not obj or not obj.get_handle():
return
gid = obj.get_gramps_id()
self.oid_trans[gid] = obj.get_handle()
GrampsDbBase.commit_media_object(self,obj,transaction,change_time)
def commit_source(self,source,transaction,change_time=None):
if self.readonly or not source.get_handle():
if self.readonly or not source or not source.get_handle():
return
gid = source.get_gramps_id()
self.sid_trans[gid] = source.get_handle()

View File

@ -4046,6 +4046,8 @@ class GenderStats:
return (0, 0, 0)
def count_person (self, person, db, undo = 0):
if not person:
return
# Let the Person do their own counting later
person.db = db