0004706: Book Report subject-name nuances, and pathological cases

Patch from Paul Franklin

svn: r17023
This commit is contained in:
Brian Matherly 2011-04-02 03:34:53 +00:00
parent 3f8ef764c1
commit 92522c9311

View File

@ -130,9 +130,15 @@ def _initialize_options(options, dbstate, uistate):
if family_list:
family_handle = family_list[0]
else:
try:
family_handle = dbase.iter_family_handles().next()
except StopIteration:
family_handle = None
if family_handle:
family = dbase.get_family_from_handle(family_handle)
option.set_value(family.get_gramps_id())
else:
print "No family specified for ", name
def _get_subject(options, dbase):
"""
@ -144,10 +150,12 @@ def _get_subject(options, dbase):
dbase: the database for which it corresponds
"""
if not hasattr(options, "menu"):
return _("Not Applicable")
return ""
menu = options.menu
option_names = menu.get_all_option_names()
if not option_names:
return _("Entire Database")
for name in option_names:
option = menu.get_option_by_name(name)
@ -162,6 +170,8 @@ def _get_subject(options, dbase):
elif isinstance(option, FamilyOption):
family = dbase.get_family_from_gramps_id(option.get_value())
if not family:
return ""
family_id = family.get_gramps_id()
fhandle = family.get_father_handle()
mhandle = family.get_mother_handle()
@ -179,10 +189,12 @@ def _get_subject(options, dbase):
mother_name = _("unknown mother")
name = _("%(father)s and %(mother)s (%(id)s)") % {
'father' : father_name, 'mother' : mother_name, 'id' : family_id }
'father' : father_name,
'mother' : mother_name,
'id' : family_id }
return name
return _("Not Applicable")
return ""
#------------------------------------------------------------------------
#
@ -1258,6 +1270,7 @@ class BookReportDialog(DocReportDialog):
if newpage:
self.doc.page_break()
newpage = 1
if item:
item.begin_report()
item.write_report()
self.doc.close()
@ -1279,13 +1292,17 @@ def cl_report(database, name, category, options_str_dict):
if clr.show:
return
if 'bookname' not in clr.options_dict:
print "Please Specify a book name"
if 'bookname' not in clr.options_dict or not clr.options_dict['bookname']:
print _("Please specify a book name")
return
book_list = BookList('books.xml', database)
book_name = clr.options_dict['bookname']
if book_name:
book = book_list.get_book(book_name)
else:
print _("Please specify a book name")
return
selected_style = StyleSheet()
for item in book.get_item_list():