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

@ -1,3 +1,7 @@
2007-08-11 Brian Matherly <brian@gramps-project.org>
* src/plugins/NarrativeWeb.py: Convert to use PrivateProxyDb
* src/ReportBase/_ReportUtils.py: remove "sanitize" functions.
2007-08-11 Brian Matherly <brian@gramps-project.org> 2007-08-11 Brian Matherly <brian@gramps-project.org>
* src/GrampsDbUtils/_PrivateProxyDb.py: Continued work. * src/GrampsDbUtils/_PrivateProxyDb.py: Continued work.

View File

@ -1179,216 +1179,6 @@ def estimate_age_on_date(db, person, ddata=_TODAY):
age = (-1, -1) age = (-1, -1)
return age 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 # Roman numbers

View File

@ -80,6 +80,7 @@ from QuestionDialog import ErrorDialog, WarningDialog
from BasicUtils import name_displayer as _nd from BasicUtils import name_displayer as _nd
from DateHandler import displayer as _dd from DateHandler import displayer as _dd
from DateHandler import parser as _dp from DateHandler import parser as _dp
from GrampsDbUtils import PrivateProxyDb
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -162,7 +163,6 @@ class BasePage:
self.header = options.handler.options_dict['NWEBheader'] self.header = options.handler.options_dict['NWEBheader']
self.footer = options.handler.options_dict['NWEBfooter'] self.footer = options.handler.options_dict['NWEBfooter']
self.photo_list = photo_list self.photo_list = photo_list
self.exclude_private = not options.handler.options_dict['NWEBincpriv']
self.usegraph = options.handler.options_dict['NWEBgraph'] self.usegraph = options.handler.options_dict['NWEBgraph']
self.graphgens = options.handler.options_dict['NWEBgraphgens'] self.graphgens = options.handler.options_dict['NWEBgraphgens']
self.use_home = self.options.handler.options_dict['NWEBhomenote'] != "" self.use_home = self.options.handler.options_dict['NWEBhomenote'] != ""
@ -652,8 +652,6 @@ class IndividualListPage(BasePage):
of.write('<tr><td colspan="%d">&nbsp;</td></tr>\n' % column_count) of.write('<tr><td colspan="%d">&nbsp;</td></tr>\n' % column_count)
for person_handle in handle_list: for person_handle in handle_list:
person = db.get_person_from_handle(person_handle) person = db.get_person_from_handle(person_handle)
if self.exclude_private:
person = ReportUtils.sanitize_person(db,person)
# surname column # surname column
of.write('<tr><td class="category">') of.write('<tr><td class="category">')
@ -709,8 +707,6 @@ class IndividualListPage(BasePage):
spouse_id = ReportUtils.find_spouse(person, family) spouse_id = ReportUtils.find_spouse(person, family)
if spouse_id: if spouse_id:
spouse = db.get_person_from_handle(spouse_id) spouse = db.get_person_from_handle(spouse_id)
if self.exclude_private:
spouse = ReportUtils.sanitize_person(db, spouse)
spouse_name = spouse.get_primary_name().get_regular_name() spouse_name = spouse.get_primary_name().get_regular_name()
if not first_family: if not first_family:
of.write(', ') of.write(', ')
@ -731,11 +727,9 @@ class IndividualListPage(BasePage):
mother_id = family.get_mother_handle() mother_id = family.get_mother_handle()
father = db.get_person_from_handle(father_id) father = db.get_person_from_handle(father_id)
mother = db.get_person_from_handle(mother_id) mother = db.get_person_from_handle(mother_id)
if father and self.exclude_private: if father:
father = ReportUtils.sanitize_person(db, father)
father_name = father.get_primary_name().get_regular_name() father_name = father.get_primary_name().get_regular_name()
if mother and self.exclude_private: if mother:
mother = ReportUtils.sanitize_person(db, mother)
mother_name = mother.get_primary_name().get_regular_name() mother_name = mother.get_primary_name().get_regular_name()
if mother and father: if mother and father:
of.write('%s, %s' % (father_name, mother_name)) of.write('%s, %s' % (father_name, mother_name))
@ -790,8 +784,6 @@ class SurnamePage(BasePage):
# firstname column # firstname column
person = db.get_person_from_handle(person_handle) person = db.get_person_from_handle(person_handle)
if self.exclude_private:
person = ReportUtils.sanitize_person(db,person)
of.write('<tr><td class="category">') of.write('<tr><td class="category">')
path = self.build_path(person.handle,"ppl",True) path = self.build_path(person.handle,"ppl",True)
self.person_link(of, self.build_name(path,person.handle), self.person_link(of, self.build_name(path,person.handle),
@ -838,8 +830,6 @@ class SurnamePage(BasePage):
spouse_id = ReportUtils.find_spouse(person, family) spouse_id = ReportUtils.find_spouse(person, family)
if spouse_id: if spouse_id:
spouse = db.get_person_from_handle(spouse_id) spouse = db.get_person_from_handle(spouse_id)
if self.exclude_private:
spouse = ReportUtils.sanitize_person(db, spouse)
spouse_name = spouse.get_primary_name().get_regular_name() spouse_name = spouse.get_primary_name().get_regular_name()
if not first_family: if not first_family:
of.write(', ') of.write(', ')
@ -860,11 +850,9 @@ class SurnamePage(BasePage):
mother_id = family.get_mother_handle() mother_id = family.get_mother_handle()
father = db.get_person_from_handle(father_id) father = db.get_person_from_handle(father_id)
mother = db.get_person_from_handle(mother_id) mother = db.get_person_from_handle(mother_id)
if father and self.exclude_private: if father:
father = ReportUtils.sanitize_person(db, father)
father_name = father.get_primary_name().get_regular_name() father_name = father.get_primary_name().get_regular_name()
if mother and self.exclude_private: if mother:
mother = ReportUtils.sanitize_person(db, mother)
mother_name = mother.get_primary_name().get_regular_name() mother_name = mother.get_primary_name().get_regular_name()
if mother and father: if mother and father:
of.write('%s, %s' % (father_name, mother_name)) of.write('%s, %s' % (father_name, mother_name))
@ -955,7 +943,6 @@ class PlacePage(BasePage):
get_researcher().get_name(),up=True) get_researcher().get_name(),up=True)
media_list = place.get_media_list() media_list = place.get_media_list()
media_list = ReportUtils.sanitize_media_ref_list( db, media_list, self.exclude_private)
self.display_first_image_as_thumbnail(of, db, media_list) self.display_first_image_as_thumbnail(of, db, media_list)
of.write('<div id="summaryarea">\n') of.write('<div id="summaryarea">\n')
@ -997,7 +984,7 @@ class PlacePage(BasePage):
if self.use_gallery: if self.use_gallery:
self.display_additional_images_as_gallery(of, db, media_list) self.display_additional_images_as_gallery(of, db, media_list)
self.display_note_list(of, db, place.get_note_list()) self.display_note_list(of, db, place.get_note_list())
self.display_url_list(of, ReportUtils.sanitize_list( place.get_url_list(), self.exclude_private)) self.display_url_list(of, place.get_url_list())
self.display_references(of,db,place_list[place.handle]) self.display_references(of,db,place_list[place.handle])
self.display_footer(of,db) self.display_footer(of,db)
self.close_file(of) self.close_file(of)
@ -1113,7 +1100,7 @@ class MediaPage(BasePage):
of.write('</div>\n') of.write('</div>\n')
self.display_note_list(of, db, photo.get_note_list()) self.display_note_list(of, db, photo.get_note_list())
self.display_attr_list(of, ReportUtils.sanitize_list( photo.get_attribute_list(), self.exclude_private)) self.display_attr_list(of, photo.get_attribute_list())
self.display_references(of,db,media_list) self.display_references(of,db,media_list)
self.display_footer(of,db) self.display_footer(of,db)
self.close_file(of) self.close_file(of)
@ -1417,7 +1404,6 @@ class SourcePage(BasePage):
get_researcher().get_name(),up=True) get_researcher().get_name(),up=True)
media_list = source.get_media_list() media_list = source.get_media_list()
media_list = ReportUtils.sanitize_media_ref_list(db, media_list, self.exclude_private)
self.display_first_image_as_thumbnail(of, db, media_list) self.display_first_image_as_thumbnail(of, db, media_list)
of.write('<div id="summaryarea">\n') of.write('<div id="summaryarea">\n')
@ -1621,8 +1607,8 @@ class IndividualPage(BasePage):
self.src_list = src_list self.src_list = src_list
self.bibli = Bibliography() self.bibli = Bibliography()
self.place_list = place_list self.place_list = place_list
self.sort_name = sort_nameof(self.person,self.exclude_private) self.sort_name = _nd.sorted(self.person)
self.name = sort_nameof(self.person,self.exclude_private) self.name = _nd.sorted(self.person)
of = self.create_link_file(person.handle,"ppl") of = self.create_link_file(person.handle,"ppl")
self.display_header(of,db, self.sort_name, self.display_header(of,db, self.sort_name,
@ -1636,28 +1622,20 @@ class IndividualPage(BasePage):
if not self.restrict: if not self.restrict:
media_list = [] media_list = []
photolist = ReportUtils.sanitize_media_ref_list( db, photolist = self.person.get_media_list()
self.person.get_media_list(),
self.exclude_private )
if len(photolist) > 1: if len(photolist) > 1:
media_list = photolist[1:] media_list = photolist[1:]
for handle in self.person.get_family_handle_list(): for handle in self.person.get_family_handle_list():
family = self.db.get_family_from_handle(handle) family = self.db.get_family_from_handle(handle)
media_list += ReportUtils.sanitize_media_ref_list( db, media_list += family.get_media_list()
family.get_media_list(),
self.exclude_private )
for evt_ref in family.get_event_ref_list(): for evt_ref in family.get_event_ref_list():
event = self.db.get_event_from_handle(evt_ref.ref) event = self.db.get_event_from_handle(evt_ref.ref)
media_list += ReportUtils.sanitize_media_ref_list( db, media_list += event.get_media_list()
event.get_media_list(),
self.exclude_private )
for evt_ref in self.person.get_primary_event_ref_list(): for evt_ref in self.person.get_primary_event_ref_list():
event = self.db.get_event_from_handle(evt_ref.ref) event = self.db.get_event_from_handle(evt_ref.ref)
if event: if event:
media_list += ReportUtils.sanitize_media_ref_list( db, media_list += event.get_media_list()
event.get_media_list(),
self.exclude_private )
self.display_additional_images_as_gallery(of, db, media_list) self.display_additional_images_as_gallery(of, db, media_list)
self.display_note_list(of, db, self.person.get_note_list()) self.display_note_list(of, db, self.person.get_note_list())
@ -1693,12 +1671,12 @@ class IndividualPage(BasePage):
of.write('<table><tr><td class="box">') of.write('<table><tr><td class="box">')
person_link = person.handle in self.ind_list person_link = person.handle in self.ind_list
if person_link: if person_link:
person_name = nameof(person,self.exclude_private) person_name = _nd.display(person)
path = self.build_path(person.handle,"ppl",False) path = self.build_path(person.handle,"ppl",False)
fname = self.build_name(path,person.handle) fname = self.build_name(path,person.handle)
self.person_link(of, fname, person_name) self.person_link(of, fname, person_name)
else: else:
of.write(nameof(person,self.exclude_private)) of.write(_nd.display(person))
of.write('</td></tr></table>\n') of.write('</td></tr></table>\n')
of.write('</div>\n') of.write('</div>\n')
of.write('<div class="shadow" style="top: %dpx; left: %dpx;"></div>\n' % (top+SHADOW,xoff+SHADOW)) of.write('<div class="shadow" style="top: %dpx; left: %dpx;"></div>\n' % (top+SHADOW,xoff+SHADOW))
@ -1730,8 +1708,6 @@ class IndividualPage(BasePage):
if not handle: if not handle:
return None return None
person = self.db.get_person_from_handle(handle) person = self.db.get_person_from_handle(handle)
if self.exclude_private:
person = ReportUtils.sanitize_person( self.db, person)
self.draw_box(of,center2,col,person) self.draw_box(of,center2,col,person)
self.connect_line(of,center1,center2,col) self.connect_line(of,center1,center2,col)
return person return person
@ -1854,11 +1830,7 @@ class IndividualPage(BasePage):
father_id = family.get_father_handle() father_id = family.get_father_handle()
mother_id = family.get_mother_handle() mother_id = family.get_mother_handle()
mother = self.db.get_person_from_handle(mother_id) mother = self.db.get_person_from_handle(mother_id)
if mother and self.exclude_private:
mother = ReportUtils.sanitize_person( self.db, mother)
father = self.db.get_person_from_handle(father_id) father = self.db.get_person_from_handle(father_id)
if father and self.exclude_private:
father = ReportUtils.sanitize_person( self.db, father)
else: else:
family = None family = None
father = None father = None
@ -1875,17 +1847,13 @@ class IndividualPage(BasePage):
self.pedigree_person(of,mother,True) self.pedigree_person(of,mother,True)
of.write('<div class="pedigreegen">\n') of.write('<div class="pedigreegen">\n')
if family: if family:
childlist = ReportUtils.sanitize_list( family.get_child_ref_list(), for child_ref in family.get_child_ref_list():
self.exclude_private )
for child_ref in childlist:
child_handle = child_ref.ref child_handle = child_ref.ref
if child_handle == self.person.handle: if child_handle == self.person.handle:
of.write('<span class="thisperson">%s</span><br />\n' % self.name) of.write('<span class="thisperson">%s</span><br />\n' % self.name)
self.pedigree_family(of) self.pedigree_family(of)
else: else:
child = self.db.get_person_from_handle(child_handle) child = self.db.get_person_from_handle(child_handle)
if child and self.exclude_private:
child = ReportUtils.sanitize_person( self.db, child)
self.pedigree_person(of,child) self.pedigree_person(of,child)
else: else:
of.write('<span class="thisperson">%s</span><br />\n' % self.name) of.write('<span class="thisperson">%s</span><br />\n' % self.name)
@ -1914,7 +1882,7 @@ class IndividualPage(BasePage):
# Names [and their sources] # Names [and their sources]
for name in [self.person.get_primary_name(),]+self.person.get_alternate_names(): for name in [self.person.get_primary_name(),]+self.person.get_alternate_names():
pname = name_nameof(name,self.exclude_private) pname = _nd.display_name(name)
pname += self.get_citation_links( name.get_source_references() ) pname += self.get_citation_links( name.get_source_references() )
type = str( name.get_type() ) type = str( name.get_type() )
of.write('<tr><td class="field">%s</td>\n' % _(type)) of.write('<tr><td class="field">%s</td>\n' % _(type))
@ -1986,33 +1954,29 @@ class IndividualPage(BasePage):
def display_child_link(self, of, child_handle): def display_child_link(self, of, child_handle):
use_link = child_handle in self.ind_list use_link = child_handle in self.ind_list
child = self.db.get_person_from_handle(child_handle) child = self.db.get_person_from_handle(child_handle)
if self.exclude_private:
child = ReportUtils.sanitize_person( self.db, child)
gid = child.get_gramps_id() gid = child.get_gramps_id()
if use_link: if use_link:
child_name = nameof(child, self.exclude_private) child_name = _nd.display(child)
path = self.build_path(child_handle,"ppl",False) path = self.build_path(child_handle,"ppl",False)
self.person_link(of, self.build_name(path,child_handle), self.person_link(of, self.build_name(path,child_handle),
child_name, gid) child_name, gid)
else: else:
of.write(nameof(child,self.exclude_private)) of.write(_nd.display(child))
of.write(u"<br />\n") of.write(u"<br />\n")
def display_parent(self, of, handle, title, rel): def display_parent(self, of, handle, title, rel):
use_link = handle in self.ind_list use_link = handle in self.ind_list
person = self.db.get_person_from_handle(handle) person = self.db.get_person_from_handle(handle)
if self.exclude_private:
person = ReportUtils.sanitize_person( self.db, person)
of.write('<td class="field">%s</td>\n' % title) of.write('<td class="field">%s</td>\n' % title)
of.write('<td class="data">') of.write('<td class="data">')
val = person.gramps_id val = person.gramps_id
if use_link: if use_link:
path = self.build_path(handle,"ppl",False) path = self.build_path(handle,"ppl",False)
fname = self.build_name(path,handle) fname = self.build_name(path,handle)
self.person_link(of, fname, nameof(person,self.exclude_private), self.person_link(of, fname, _nd.display(person),
val) val)
else: else:
of.write(nameof(person,self.exclude_private)) of.write(_nd.display(person))
if rel != RelLib.ChildRefType.BIRTH: if rel != RelLib.ChildRefType.BIRTH:
of.write('&nbsp;&nbsp;&nbsp;(%s)' % str(rel)) of.write('&nbsp;&nbsp;&nbsp;(%s)' % str(rel))
of.write('</td>\n') of.write('</td>\n')
@ -2037,8 +2001,7 @@ class IndividualPage(BasePage):
mrel = "" mrel = ""
sibling = set() sibling = set()
child_handle = self.person.get_handle() child_handle = self.person.get_handle()
child_ref_list = ReportUtils.sanitize_list( family.get_child_ref_list(), child_ref_list = family.get_child_ref_list()
self.exclude_private )
for child_ref in child_ref_list: for child_ref in child_ref_list:
if child_ref.ref == child_handle: if child_ref.ref == child_handle:
frel = str(child_ref.get_father_relation()) frel = str(child_ref.get_father_relation())
@ -2084,8 +2047,7 @@ class IndividualPage(BasePage):
father = self.db.get_person_from_handle(father_handle) father = self.db.get_person_from_handle(father_handle)
for family_handle in father.get_family_handle_list(): for family_handle in father.get_family_handle_list():
family = self.db.get_family_from_handle(family_handle) family = self.db.get_family_from_handle(family_handle)
step_child_ref_list = ReportUtils.sanitize_list(family.get_child_ref_list(), self.exclude_private) for step_child_ref in family.get_child_ref_list():
for step_child_ref in step_child_ref_list:
step_child_handle = step_child_ref.ref step_child_handle = step_child_ref.ref
if step_child_handle not in sibling: if step_child_handle not in sibling:
if step_child_handle != self.person.handle: if step_child_handle != self.person.handle:
@ -2097,8 +2059,7 @@ class IndividualPage(BasePage):
mother = self.db.get_person_from_handle(mother_handle) mother = self.db.get_person_from_handle(mother_handle)
for family_handle in mother.get_family_handle_list(): for family_handle in mother.get_family_handle_list():
family = self.db.get_family_from_handle(family_handle) family = self.db.get_family_from_handle(family_handle)
step_child_ref_list = ReportUtils.sanitize_list(family.get_child_ref_list(), self.exclude_private) for step_child_ref in family.get_child_ref_list():
for step_child_ref in step_child_ref_list:
step_child_handle = step_child_ref.ref step_child_handle = step_child_ref.ref
if step_child_handle not in sibling: if step_child_handle not in sibling:
if step_child_handle != self.person.handle: if step_child_handle != self.person.handle:
@ -2132,8 +2093,7 @@ class IndividualPage(BasePage):
family = self.db.get_family_from_handle(family_handle) family = self.db.get_family_from_handle(family_handle)
self.display_spouse(of,family,first) self.display_spouse(of,family,first)
first = False first = False
childlist = ReportUtils.sanitize_list( family.get_child_ref_list(), childlist = family.get_child_ref_list()
self.exclude_private )
if childlist: if childlist:
of.write('<tr><td>&nbsp;</td>\n') of.write('<tr><td>&nbsp;</td>\n')
of.write('<td class="field">%s</td>\n' % _("Children")) of.write('<td class="field">%s</td>\n' % _("Children"))
@ -2161,9 +2121,7 @@ class IndividualPage(BasePage):
spouse_id = ReportUtils.find_spouse(self.person,family) spouse_id = ReportUtils.find_spouse(self.person,family)
if spouse_id: if spouse_id:
spouse = self.db.get_person_from_handle(spouse_id) spouse = self.db.get_person_from_handle(spouse_id)
if self.exclude_private: name = _nd.display(spouse)
spouse = ReportUtils.sanitize_person( self.db, spouse)
name = nameof(spouse,self.exclude_private)
else: else:
name = _("unknown") name = _("unknown")
if not first: if not first:
@ -2176,7 +2134,7 @@ class IndividualPage(BasePage):
use_link = spouse_id in self.ind_list use_link = spouse_id in self.ind_list
gid = spouse.get_gramps_id() gid = spouse.get_gramps_id()
if use_link: if use_link:
spouse_name = nameof(spouse,self.exclude_private) spouse_name = _nd.display(spouse)
path = self.build_path(spouse.handle,"ppl",False) path = self.build_path(spouse.handle,"ppl",False)
fname = self.build_name(path,spouse.handle) fname = self.build_name(path,spouse.handle)
self.person_link(of, fname, spouse_name, gid) self.person_link(of, fname, spouse_name, gid)
@ -2189,9 +2147,6 @@ class IndividualPage(BasePage):
for event_ref in family.get_event_ref_list(): for event_ref in family.get_event_ref_list():
event = self.db.get_event_from_handle(event_ref.ref) event = self.db.get_event_from_handle(event_ref.ref)
if self.exclude_private and event.private:
continue
evtType = str(event.get_type()) evtType = str(event.get_type())
of.write('<tr><td>&nbsp;</td>\n') of.write('<tr><td>&nbsp;</td>\n')
of.write('<td class="field">%s</td>\n' % evtType) of.write('<td class="field">%s</td>\n' % evtType)
@ -2199,8 +2154,6 @@ class IndividualPage(BasePage):
of.write(self.format_event(event)) of.write(self.format_event(event))
of.write('</td>\n</tr>\n') of.write('</td>\n</tr>\n')
for attr in family.get_attribute_list(): for attr in family.get_attribute_list():
if self.exclude_private and attr.private:
continue
attrType = str(attr.get_type()) attrType = str(attr.get_type())
of.write('<tr><td>&nbsp;</td>\n') of.write('<tr><td>&nbsp;</td>\n')
of.write('<td class="field">%s</td>' % attrType) of.write('<td class="field">%s</td>' % attrType)
@ -2226,12 +2179,12 @@ class IndividualPage(BasePage):
if is_spouse: if is_spouse:
of.write('<span class="spouse">') of.write('<span class="spouse">')
if person_link: if person_link:
person_name = nameof(person,self.exclude_private) person_name = _nd.display(person)
path = self.build_path(person.handle,"ppl",False) path = self.build_path(person.handle,"ppl",False)
fname = self.build_name(path,person.handle) fname = self.build_name(path,person.handle)
self.person_link(of, fname, person_name) self.person_link(of, fname, person_name)
else: else:
of.write(nameof(person,self.exclude_private)) of.write(_nd.display(person))
if is_spouse: if is_spouse:
of.write('</span>') of.write('</span>')
of.write('<br />\n') of.write('<br />\n')
@ -2242,17 +2195,12 @@ class IndividualPage(BasePage):
spouse_handle = ReportUtils.find_spouse(self.person,rel_family) spouse_handle = ReportUtils.find_spouse(self.person,rel_family)
if spouse_handle: if spouse_handle:
spouse = self.db.get_person_from_handle(spouse_handle) spouse = self.db.get_person_from_handle(spouse_handle)
if self.exclude_private:
spouse = ReportUtils.sanitize_person( self.db, spouse)
self.pedigree_person(of,spouse,True) self.pedigree_person(of,spouse,True)
childlist = ReportUtils.sanitize_list( rel_family.get_child_ref_list(), childlist = rel_family.get_child_ref_list()
self.exclude_private )
if childlist: if childlist:
of.write('<div class="pedigreegen">\n') of.write('<div class="pedigreegen">\n')
for child_ref in childlist: for child_ref in childlist:
child = self.db.get_person_from_handle(child_ref.ref) child = self.db.get_person_from_handle(child_ref.ref)
if self.exclude_private:
child = ReportUtils.sanitize_person( self.db, child)
self.pedigree_person(of,child) self.pedigree_person(of,child)
of.write('</div>\n') of.write('</div>\n')
@ -2315,12 +2263,8 @@ class IndividualPage(BasePage):
text = "" text = ""
for sref in source_ref_list: for sref in source_ref_list:
if self.exclude_private and sref.private:
continue
handle = sref.get_reference_handle() handle = sref.get_reference_handle()
source = self.db.get_source_from_handle(handle) source = self.db.get_source_from_handle(handle)
if source.get_privacy() == True:
continue
gid_list.append(sref) gid_list.append(sref)
if self.src_list.has_key(handle): if self.src_list.has_key(handle):
@ -2378,8 +2322,11 @@ class WebReport(Report):
NWEBshowparents NWEBshowparents
NWEBshowhalfsiblings NWEBshowhalfsiblings
""" """
self.database = database if not options.handler.options_dict['NWEBincpriv']:
self.database = PrivateProxyDb(database)
else:
self.database = database
self.start_person = person self.start_person = person
self.options = options self.options = options
@ -2394,7 +2341,6 @@ class WebReport(Report):
self.css = options.handler.options_dict['NWEBcss'] self.css = options.handler.options_dict['NWEBcss']
self.restrict = options.handler.options_dict['NWEBrestrictinfo'] self.restrict = options.handler.options_dict['NWEBrestrictinfo']
self.restrict_years = options.handler.options_dict['NWEBrestrictyears'] self.restrict_years = options.handler.options_dict['NWEBrestrictyears']
self.exclude_private = not options.handler.options_dict['NWEBincpriv']
self.noid = options.handler.options_dict['NWEBnoid'] self.noid = options.handler.options_dict['NWEBnoid']
self.linkhome = options.handler.options_dict['NWEBlinkhome'] self.linkhome = options.handler.options_dict['NWEBlinkhome']
self.showbirth = options.handler.options_dict['NWEBshowbirth'] self.showbirth = options.handler.options_dict['NWEBshowbirth']
@ -2518,12 +2464,6 @@ class WebReport(Report):
ind_list = self.filter.apply(self.database,ind_list) ind_list = self.filter.apply(self.database,ind_list)
restrict_list = set() restrict_list = set()
# if private records need to be filtered out, strip out any person
# that has the private flag set.
if self.exclude_private:
self.progress.set_pass(_('Applying privacy filter'),len(ind_list))
ind_list = filter(self.filter_private,ind_list)
years = time.localtime(time.time())[0] years = time.localtime(time.time())[0]
# Filter out people who are restricted due to the living # Filter out people who are restricted due to the living
@ -2538,13 +2478,6 @@ class WebReport(Report):
return (ind_list,restrict_list) return (ind_list,restrict_list)
def filter_private(self,key):
"""
Return True if the person is not marked private.
"""
self.progress.step()
return not self.database.get_person_from_handle(key).private
def write_css(self,archive,html_dir,css_file): def write_css(self,archive,html_dir,css_file):
""" """
Copy the CSS file to the destination. Copy the CSS file to the destination.
@ -2570,9 +2503,6 @@ class WebReport(Report):
for person_handle in ind_list: for person_handle in ind_list:
self.progress.step() self.progress.step()
person = self.database.get_person_from_handle(person_handle) person = self.database.get_person_from_handle(person_handle)
if self.exclude_private:
person = ReportUtils.sanitize_person(self.database,person)
IndividualPage( IndividualPage(
self.database, person, self.title, ind_list, restrict_list, self.database, person, self.title, ind_list, restrict_list,
@ -3124,27 +3054,22 @@ def sort_people(db,handle_list):
sname_sub = {} sname_sub = {}
sortnames = {} sortnames = {}
cursor = db.get_person_cursor()
node = cursor.first() for person_handle in handle_list:
while node: person = db.get_person_from_handle(person_handle)
if node[0] in flist: primary_name = person.get_primary_name()
primary_name = RelLib.Name()
primary_name.unserialize(node[1][_NAME_COL]) if primary_name.group_as:
if primary_name.private: surname = primary_name.group_as
surname = _('Private') else:
sortnames[node[0]] = _('Private') surname = db.get_name_group_mapping(primary_name.surname)
else:
if primary_name.group_as: sortnames[person_handle] = _nd.sort_string(primary_name)
surname = primary_name.group_as
else: if sname_sub.has_key(surname):
surname = db.get_name_group_mapping(primary_name.surname) sname_sub[surname].append(person_handle)
sortnames[node[0]] = _nd.sort_string(primary_name) else:
if sname_sub.has_key(surname): sname_sub[surname] = [person_handle]
sname_sub[surname].append(node[0])
else:
sname_sub[surname] = [node[0]]
node = cursor.next()
cursor.close()
sorted_lists = [] sorted_lists = []
temp_list = sname_sub.keys() temp_list = sname_sub.keys()
@ -3251,24 +3176,6 @@ def mk_combobox(media_list,select_value):
if len(media_list) == 0: if len(media_list) == 0:
widget.set_sensitive(False) widget.set_sensitive(False)
return widget return widget
def nameof(person,private):
if person.private and private:
return _("Private")
else:
return _nd.display(person)
def name_nameof(name,private):
if name.private and private:
return _("Private")
else:
return _nd.display_name(name)
def sort_nameof(person, private):
if person.private and private:
return _("Private")
else:
return _nd.sorted(person)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #