Convert NarrativeWeb report to use PrivateProxyDb.

svn: r8809
This commit is contained in:
Brian Matherly
2007-08-12 02:42:22 +00:00
parent b00e2a935e
commit c7edf38176
3 changed files with 56 additions and 355 deletions

View File

@@ -1179,216 +1179,6 @@ def estimate_age_on_date(db, person, ddata=_TODAY):
age = (-1, -1)
return age
def sanitize_list(obj_list,exclude_private):
"""
Removes private objects from the list.
@param obj_list: objects that have a privacy flag
@type obj_list: list
@param exclude_private: indicates if objects marked private
are eliminated from the list
@type exclude_private: bool
@returns: objects that match the privacy request
@rtype: list
"""
if exclude_private:
return [obj for obj in obj_list if not obj.get_privacy()]
else:
return obj_list
def sanitize_media_ref_list(db, media_ref_list, exclude_private):
"""
Removes private references and references to private objects
from the list.
@param db: GRAMPS database to which the references belongs
@type db: GrampsDbBase
@param ref_list: references to objects that have a privacy flag
@type ref_list: list
@param exclude_private: indicates if objects marked private
are eliminated from the list
@type exclude_private: bool
@returns: references to objects that match the privacy request
@rtype: list
"""
if exclude_private == True:
new_list = []
for media_ref in media_ref_list:
if media_ref.get_privacy() == False:
handle = media_ref.get_reference_handle()
media_object = db.get_object_from_handle(handle)
if media_object.get_privacy() == False:
new_list.append(media_ref)
return new_list
else:
return media_ref_list
def sanitize_person(db,person):
"""
Creates a new Person instance based off the passed Person
instance. The returned instance has all private records
removed from it.
@param db: GRAMPS database to which the Person object belongs
@type db: GrampsDbBase
@param person: source Person object that will be copied with
privacy records removed
@type person: Person
@returns: 'cleansed' Person object
@rtype: Person
"""
new_person = RelLib.Person()
# copy gender
new_person.set_gender(person.get_gender())
new_person.set_gramps_id(person.get_gramps_id())
new_person.set_handle(person.get_handle())
# copy names if not private
name = person.get_primary_name()
if name.get_privacy() or person.get_privacy():
name = RelLib.Name()
name.set_surname(_('Private'))
new_person.set_primary_name(name)
# copy Family reference list
for handle in person.get_family_handle_list():
new_person.add_family_handle(handle)
# copy Family reference list
for handle in person.get_parent_family_handle_list():
family = db.get_family_from_handle(handle)
child_ref_list = family.get_child_ref_list()
for child_ref in child_ref_list:
if child_ref.get_reference_handle() == person.get_handle():
if child_ref.get_privacy() == False:
new_person.add_parent_family_handle(handle)
break
if person.get_privacy():
return new_person
for name in person.get_alternate_names():
if not name.get_privacy():
new_person.add_alternate_name(name)
# set complete flag
new_person.set_marker(person.get_marker())
# copy event list
for event_ref in person.get_event_ref_list():
if event_ref and event_ref.get_privacy() == False:
event = db.get_event_from_handle(event_ref.ref)
if not event.get_privacy():
new_person.add_event_ref(event_ref)
# Copy birth and death after event list to maintain the order.
# copy birth event
event_ref = person.get_birth_ref()
if event_ref and event_ref.get_privacy() == False:
event = db.get_event_from_handle(event_ref.ref)
if not event.get_privacy():
new_person.set_birth_ref(event_ref)
# copy death event
event_ref = person.get_death_ref()
if event_ref and event_ref.get_privacy() == False:
event = db.get_event_from_handle(event_ref.ref)
if not event.get_privacy():
new_person.set_death_ref(event_ref)
# copy address list
for address in person.get_address_list():
if not address.get_privacy():
new_person.add_address(RelLib.Address(address))
# copy attribute list
for attribute in person.get_attribute_list():
if not attribute.get_privacy():
new_person.add_attribute(RelLib.Attribute(attribute))
# copy source references
for ref in person.get_source_references():
if not ref.get_privacy():
handle = ref.get_reference_handle()
source = db.get_source_from_handle(handle)
if source.get_privacy() == False:
new_person.add_source_reference(RelLib.SourceRef(ref))
# copy URL list
for url in person.get_url_list():
if not url.get_privacy():
new_person.add_url(url)
# copy Media reference list
clean_list = sanitize_media_ref_list(db,person.get_media_list(),True)
for ref in clean_list:
new_person.add_media_reference(RelLib.MediaRef(ref))
# LDS ordinances
for lds_ord in person.get_lds_ord_list():
lds_type = lds_ord.get_type()
if lds_type == RelLib.LdsOrd.BAPTISM or \
lds_type == RelLib.LdsOrd.ENDOWMENT or \
lds_type == RelLib.LdsOrd.SEAL_TO_PARENTS or \
lds_type == RelLib.LdsOrd.SEAL_TO_SPOUSE :
new_person.add_lds_ord( lds_ord )
new_person.set_note_list(person.get_note_list())
return new_person
def dont_restrict(db,person):
return person
def restrict_with_names(db,person):
return restrict_person(db,person,False)
def restrict_no_names(db,person):
return restrict_person(db,person,True)
def restrict_person(db,person,no_names=False):
"""
Creates a new Person instance based off the passed Person
instance. The returned instance has all private records
removed from it.
@param db: GRAMPS database to which the Person object belongs
@type db: GrampsDbBase
@param person: source Person object that will be copied with
privacy records removed
@type person: Person
@returns: 'cleansed' Person object
@rtype: Person
"""
new_person = RelLib.Person()
# copy gender
new_person.set_gender(person.get_gender())
new_person.set_gramps_id(person.get_gramps_id())
new_person.set_handle(person.get_handle())
# copy names if not private
if no_names:
name = RelLib.Name()
name.set_surname(_('Private'))
else:
name = person.get_primary_name()
name.set_source_reference_list([])
new_person.set_primary_name(name)
# copy Family reference list
for handle in person.get_family_handle_list():
new_person.add_family_handle(handle)
# copy Family reference list
for item in person.get_parent_family_handle_list():
new_person.add_parent_family_handle(item[0],item[1],item[2])
return new_person
#-------------------------------------------------------------------------
#
# Roman numbers