Finished fixing Events drop down in class SourcePage's Citation Referents section, thank you nitin chandha, for all the help in the conditional loops.

svn: r18983
This commit is contained in:
Rob G. Healey 2012-03-01 16:12:39 +00:00
parent 08d8cd2535
commit 900a8f39f1
2 changed files with 107 additions and 88 deletions

View File

@ -3327,7 +3327,7 @@ class FamilyPage(BasePage):
self.XHTMLWriter(familydetailpage, of, sio) self.XHTMLWriter(familydetailpage, of, sio)
class PlaceListPage(BasePage): class PlaceListPage(BasePage):
def __init__(self, report, title, place_handles, db_place_handles): def __init__(self, report, title, place_handles):
self.dbase_ = report.database self.dbase_ = report.database
BasePage.__init__(self, report, title) BasePage.__init__(self, report, title)
@ -3428,7 +3428,6 @@ class PlaceListPage(BasePage):
else: else:
tcell1 += ' ' tcell1 += ' '
tcell2 += ' ' tcell2 += ' '
db_place_handles.append(place_handles)
# add clearline for proper styling # add clearline for proper styling
# add footer section # add footer section
@ -3572,7 +3571,7 @@ class PlacePage(BasePage):
self.XHTMLWriter(placepage, of, sio) self.XHTMLWriter(placepage, of, sio)
class EventListPage(BasePage): class EventListPage(BasePage):
def __init__(self, report, title, event_types, event_handle_list, ppl_handle_list, db_event_handles): def __init__(self, report, title, event_types, event_handle_list, ppl_handle_list):
""" """
Will create the event list page Will create the event list page
@ -3627,7 +3626,9 @@ class EventListPage(BasePage):
prev_letter = "" prev_letter = ""
# separate events by their type and then thier event handles # separate events by their type and then thier event handles
for (evt_type, data_list) in sort_event_types(self.dbase_, event_handle_list, event_types): for (evt_type, data_list) in sort_event_types(self.dbase_,
event_types,
event_handle_list):
first_letter = True first_letter = True
_EVENT_DISPLAYED = [] _EVENT_DISPLAYED = []
@ -3645,14 +3646,10 @@ class EventListPage(BasePage):
# family event # family event
if int(_type) in _EVENTMAP: if int(_type) in _EVENTMAP:
handle_list = set(self.dbase_.find_backlink_handles( handle_list = set(self.dbase_.find_backlink_handles(event_handle,
event_handle,
include_classes = ['Family', 'Person'])) include_classes = ['Family', 'Person']))
# personal event
else: else:
handle_list = set(self.dbase_.find_backlink_handles( handle_list = set(self.dbase_.find_backlink_handles(event_handle,
event_handle,
include_classes = ['Person'])) include_classes = ['Person']))
if handle_list: if handle_list:
@ -3716,7 +3713,6 @@ class EventListPage(BasePage):
_EVENT_DISPLAYED.append(gid) _EVENT_DISPLAYED.append(gid)
first_event = False first_event = False
db_event_handles.append(event_handle)
# add clearline for proper styling # add clearline for proper styling
# add footer section # add footer section
@ -4431,8 +4427,9 @@ class SourceListPage(BasePage):
# #
""" """
class SourcePage(BasePage): class SourcePage(BasePage):
def __init__(self, report, title, src_handle, src_list, database_handles_list): def __init__(self, report, title, src_handle, src_list, ind_list, database_handles_list):
self.dbase_ = report.database self.dbase_ = report.database
self.ind_list = ind_list
source = self.dbase_.get_source_from_handle(src_handle) source = self.dbase_.get_source_from_handle(src_handle)
if not source: if not source:
@ -4441,14 +4438,13 @@ class SourcePage(BasePage):
self.page_title = source.get_title() self.page_title = source.get_title()
BasePage.__init__(self, report, title, source.get_gramps_id()) BasePage.__init__(self, report, title, source.get_gramps_id())
# for use in determining if a citation referent is in the report database?
(self.ind_list, db_family_handles, db_event_handles, db_place_handles,
db_media_handles) = database_handles_list
db_source_handles = src_list
inc_repositories = self.report.options["inc_repository"] inc_repositories = self.report.options["inc_repository"]
self.navigation = self.report.options['navigation'] self.navigation = self.report.options['navigation']
# for use in determining if an object is in the report database or not?
(db_family_handles, db_event_handles, db_place_handles, db_repository_handles,
db_media_handles) = database_handles_list
of, sio = self.report.create_file(src_handle, "src") of, sio = self.report.create_file(src_handle, "src")
self.up = True self.up = True
sourcepage, head, body = self.write_header(_('Sources')) sourcepage, head, body = self.write_header(_('Sources'))
@ -4547,7 +4543,6 @@ class SourcePage(BasePage):
}) })
} }
});""" });"""
# begin Source Citation Referents section # begin Source Citation Referents section
with Html("div", class_ ="subsection", id = "SourceCitationReferents") as section: with Html("div", class_ ="subsection", id = "SourceCitationReferents") as section:
sourcedetail += section sourcedetail += section
@ -4566,7 +4561,7 @@ class SourcePage(BasePage):
# remove people that are not in this report database... # remove people that are not in this report database...
people_list = [person_handle for person_handle in people_list people_list = [person_handle for person_handle in people_list
if person_handle in self.ind_list] if person_handle in ind_list]
list1 = Html("li") list1 = Html("li")
list1.extend( list1.extend(
@ -4607,26 +4602,36 @@ class SourcePage(BasePage):
list2 += unordered3 list2 += unordered3
unordered2 += list2 unordered2 += list2
# remove event handles if they are not in this report database... # remove event handles if they are not in this report database?
event_list = [event_handle for event_handle in event_list event_list = [event_handle for event_handle in event_list
if event_handle in db_event_handles] if event_handle in db_event_handles]
# Citation Referents have Event Objects... # Citation Referents have Event Objects...
if (self.inc_events and event_list): if (self.inc_events and event_list):
event_handle_list, event_types = build_event_data_by_events(self.dbase_, event_list)
event_handle_list, event_types = self.build_event_data_by_events(event_list)
events_dict = {} events_dict = {}
for (event_type, event_list) in sort_event_types(self.dbase_,
event_handle_list, event_types):
event_handle_list = []
for (sort_value, event_handle) in event_list:
event_handle_list.append(event_handle)
events_dict[event_type] = event_handle_list
# self.display_citation_refs_list(unorered2, events_dict, "Events") # separate events by their types and then thier event handles
for (event_type, event_list) in sort_event_types(self.dbase_,
event_types,
event_handle_list):
# sort event_list by date of event and event handle...
event_list = sorted(event_list, key = itemgetter(0, 1))
tmp_event_handle_list = []
for (sort_value, event_handle) in event_list:
tmp_event_handle_list.append(event_handle)
events_dict[event_type] = tmp_event_handle_list
self.display_citation_refs_list(unordered2, events_dict, "Events")
# remove place handles if they are not in this report database... # remove place handles if they are not in this report database...
place_list = [place_handle for place_handle in place_list if place_handle in db_place_handles] place_list = [place_handle for place_handle in place_list
if place_handle in db_place_handles]
# Citation Referents have Place Objects... # Citation Referents have Place Objects...
if place_list: if place_list:
@ -4649,7 +4654,7 @@ class SourcePage(BasePage):
# remove sources if they are not in this report database... # remove sources if they are not in this report database...
source_list = [source_handle for source_handle in source_list source_list = [source_handle for source_handle in source_list
if source_handle in db_source_handles] if source_handle in src_list]
# Citation Referents have Source Objects... # Citation Referents have Source Objects...
if source_list: if source_list:
@ -4671,6 +4676,10 @@ class SourcePage(BasePage):
list2 += unordered3 list2 += unordered3
unordered2 += list2 unordered2 += list2
# remove repository object if it is not in this report database?
repo_list = [repo_handle for repo_handle in repo_list
if repo_handle in db_repository_handles]
# Citation Referents have Repository Objects... # Citation Referents have Repository Objects...
if (inc_repositories and repo_list): if (inc_repositories and repo_list):
@ -4743,22 +4752,20 @@ class SourcePage(BasePage):
# and close the file # and close the file
self.XHTMLWriter(sourcepage, of, sio) self.XHTMLWriter(sourcepage, of, sio)
def get_citation_ref_link(self, obj_handle, citation_type): def build_event_data_by_events(self, event_handles):
""" """
returns the hyper link for the handle that was passed to it creates a list of event handles and event types for these event handles
""" """
hyper = None event_handle_list = []
event_types = []
if citation_type == "People": for event_handle in event_handles:
obj_ = self.dbase_.get_person_from_handle(obj_handle) event = self.dbase_.get_event_from_handle(event_handle)
url = self.report.build_url_fname_html(obj_handle, "ppl", up = self.up) if event:
hyper = self.person_link(url, obj_, name_style = False) event_types.append(str(event.get_type()))
else: event_handle_list.append(event_handle)
obj_ = self.dbase_.get_event_from_handle(obj_handle)
event_date = _dd.display(obj_.get_date_object()) or ' '
hyper = self.event_link(obj_handle, event_date, uplink = self.up) return event_handle_list, event_types
return hyper
def display_citation_refs_list(self, unordered2, citations_dict, citation_type): def display_citation_refs_list(self, unordered2, citations_dict, citation_type):
""" """
@ -4786,7 +4793,7 @@ class SourcePage(BasePage):
# if value is more than max per column, then we have to make groups... # if value is more than max per column, then we have to make groups...
if (value_len > max_per_column): if (value_len > max_per_column):
for x in range(value_len/5 + 1): for x in range(value_len / max_per_column + 1):
list4 = Html("li") list4 = Html("li")
list4.extend( list4.extend(
@ -4822,8 +4829,25 @@ class SourcePage(BasePage):
list2 += unordered3 list2 += unordered3
unordered2 += list2 unordered2 += list2
def get_citation_ref_link(self, obj_handle, citation_type):
"""
returns the hyper link for the handle that was passed to it
"""
hyper = None
if citation_type == "People":
obj_ = self.dbase_.get_person_from_handle(obj_handle)
url = self.report.build_url_fname_html(obj_handle, "ppl", up = self.up)
hyper = self.person_link(url, obj_, name_style = False)
else:
obj_ = self.dbase_.get_event_from_handle(obj_handle)
event_date = _dd.display(obj_.get_date_object()) or ' '
hyper = self.event_link(obj_handle, event_date, uplink = self.up)
return hyper
class MediaListPage(BasePage): class MediaListPage(BasePage):
def __init__(self, report, title, db_media_handles): def __init__(self, report, title):
self.dbase_ = report.database self.dbase_ = report.database
BasePage.__init__(self, report, title) BasePage.__init__(self, report, title)
@ -4890,7 +4914,6 @@ class MediaListPage(BasePage):
) )
index += 1 index += 1
db_media_handles.append(media_handle)
# add footer section # add footer section
# add clearline for proper styling # add clearline for proper styling
@ -6493,7 +6516,7 @@ class IndividualPage(BasePage):
return trow return trow
class RepositoryListPage(BasePage): class RepositoryListPage(BasePage):
def __init__(self, report, title, repos_dict, keys, db_repository_handles): def __init__(self, report, title, repos_dict, keys):
self.dbase_ = report.database self.dbase_ = report.database
BasePage.__init__(self, report, title) BasePage.__init__(self, report, title)
inc_repos = self.report.options["inc_repository"] inc_repos = self.report.options["inc_repository"]
@ -6547,7 +6570,6 @@ class RepositoryListPage(BasePage):
repo.get_gramps_id(), self.up), class_ = "ColumnName") repo.get_gramps_id(), self.up), class_ = "ColumnName")
else: else:
trow += Html("td", "[ untitled ]", class_ = "ColumnName") trow += Html("td", "[ untitled ]", class_ = "ColumnName")
db_repository_handles.append(handle)
# add clearline for proper styling # add clearline for proper styling
# add footer section # add footer section
@ -7011,29 +7033,28 @@ class NavWebReport(Report):
# build classes FamilyListPage and FamilyPage # build classes FamilyListPage and FamilyPage
db_family_handles = [] db_family_handles = []
if self.inc_families: if self.inc_families:
self.family_pages(ind_list, place_list, place_lat_long, db_family_handles) db_family_handles = self.family_pages(ind_list, place_list, place_lat_long)
# build classes EventListPage and EventPage # build classes EventListPage and EventPage
db_event_handles = [] db_event_handles = []
if self.inc_events: if self.inc_events:
self.event_pages(ind_list, db_event_handles) db_event_handles = self.event_pages(ind_list)
# build classes PlaceListPage and PlacePage # build classes PlaceListPage and PlacePage
db_place_handles = [] db_place_handles = self.place_pages(place_list, source_list)
self.place_pages(place_list, source_list, db_place_handles)
# build classes RepositoryListPage and RepositoryPage # build classes RepositoryListPage and RepositoryPage
db_repository_handles = [] db_repository_handles = []
if self.inc_repository: if self.inc_repository:
repolist = self.database.get_repository_handles() repolist = self.database.get_repository_handles()
if len(repolist): if len(repolist):
self.repository_pages(repolist, source_list, db_repository_handles) db_repository_handles = self.repository_pages(repolist, source_list)
# build classes MediaListPage and MediaPage # build classes MediaListPage and MediaPage
db_media_handles = [] db_media_handles = []
if self.inc_gallery: if self.inc_gallery:
if not self.create_thumbs_only: if not self.create_thumbs_only:
self.media_pages(source_list, db_media_handles) db_media_handles = self.media_pages(source_list)
# build Thumbnail Preview Page... # build Thumbnail Preview Page...
self.thumbnail_preview_page() self.thumbnail_preview_page()
@ -7042,8 +7063,9 @@ class NavWebReport(Report):
if self.inc_addressbook: if self.inc_addressbook:
self.addressbook_pages(ind_list) self.addressbook_pages(ind_list)
database_handles_list = (ind_list, db_family_handles, db_event_handles, # for use in class SourcePage's Citations Referents section...
db_place_handles, db_media_handles) database_handles_list = (db_family_handles, db_event_handles, db_place_handles,
db_repository_handles, db_media_handles)
# build classes SourceListPage and SourcePage # build classes SourceListPage and SourcePage
# has been moved so that all Sources can be found before processing... # has been moved so that all Sources can be found before processing...
@ -7232,10 +7254,11 @@ class NavWebReport(Report):
self.user.step_progress() self.user.step_progress()
self.user.end_progress() self.user.end_progress()
def family_pages(self, ppl_handle_list, place_list, place_lat_long, db_family_handles): def family_pages(self, ppl_handle_list, place_list, place_lat_long):
""" """
creates the FamiliesListPage and FamilyPages creates the FamiliesListPage and FamilyPages
""" """
db_family_handles = []
FamilyListPage(self, self.title, ppl_handle_list, db_family_handles) FamilyListPage(self, self.title, ppl_handle_list, db_family_handles)
self.user.begin_progress(_("Narrated Web Site Report"), self.user.begin_progress(_("Narrated Web Site Report"),
@ -7247,21 +7270,25 @@ class NavWebReport(Report):
self.user.step_progress() self.user.step_progress()
self.user.end_progress() self.user.end_progress()
def place_pages(self, place_list, source_list, db_place_handles): return db_family_handles
def place_pages(self, place_list, source_list):
""" """
creates PlaceListPage and PlacePage creates PlaceListPage and PlacePage
""" """
self.user.begin_progress(_("Narrated Web Site Report"), self.user.begin_progress(_("Narrated Web Site Report"),
_("Creating place pages"), len(place_list)) _("Creating place pages"), len(place_list))
PlaceListPage(self, self.title, place_list, db_place_handles) PlaceListPage(self, self.title, place_list)
for place in place_list: for place in place_list:
PlacePage(self, self.title, place, source_list, place_list) PlacePage(self, self.title, place, source_list, place_list)
self.user.step_progress() self.user.step_progress()
self.user.end_progress() self.user.end_progress()
def event_pages(self, ind_list, db_event_handles): return place_list
def event_pages(self, ind_list):
""" """
a dump of all the events sorted by event type, date, and surname a dump of all the events sorted by event type, date, and surname
for classes EventListPage and EventPage for classes EventListPage and EventPage
@ -7272,7 +7299,7 @@ class NavWebReport(Report):
self.user.begin_progress(_("Narrated Web Site Report"), self.user.begin_progress(_("Narrated Web Site Report"),
_("Creating event pages"), _("Creating event pages"),
len(event_handle_list)) len(event_handle_list))
EventListPage(self, self.title, event_types, event_handle_list, ind_list, db_event_handles) EventListPage(self, self.title, event_types, event_handle_list, ind_list)
for event_handle in event_handle_list: for event_handle in event_handle_list:
EventPage(self, self.title, event_handle, ind_list) EventPage(self, self.title, event_handle, ind_list)
@ -7280,7 +7307,9 @@ class NavWebReport(Report):
self.user.step_progress() self.user.step_progress()
self.user.end_progress() self.user.end_progress()
def media_pages(self, source_list, db_media_handles): return event_handle_list
def media_pages(self, source_list):
""" """
creates MediaListPage and MediaPage creates MediaListPage and MediaPage
""" """
@ -7288,7 +7317,7 @@ class NavWebReport(Report):
_("Creating media pages"), _("Creating media pages"),
len(self.photo_list)) len(self.photo_list))
MediaListPage(self, self.title, db_media_handles) MediaListPage(self, self.title)
prev = None prev = None
total = len(self.photo_list) total = len(self.photo_list)
@ -7307,6 +7336,8 @@ class NavWebReport(Report):
index += 1 index += 1
self.user.end_progress() self.user.end_progress()
return photo_keys
def thumbnail_preview_page(self): def thumbnail_preview_page(self):
""" """
creates the thumbnail preview page creates the thumbnail preview page
@ -7317,7 +7348,7 @@ class NavWebReport(Report):
ThumbnailPreviewPage(self, self.title, self.user.step_progress) ThumbnailPreviewPage(self, self.title, self.user.step_progress)
self.user.end_progress() self.user.end_progress()
def repository_pages(self, repolist, source_list, db_repository_handles): def repository_pages(self, repolist, source_list):
""" """
will create RepositoryPage() and RepositoryListPage() will create RepositoryPage() and RepositoryListPage()
""" """
@ -7338,7 +7369,7 @@ class NavWebReport(Report):
_('Creating repository pages'), _('Creating repository pages'),
repository_size) repository_size)
# RepositoryListPage Class # RepositoryListPage Class
RepositoryListPage(self, self.title, repos_dict, keys, db_repository_handles) RepositoryListPage(self, self.title, repos_dict, keys)
for index, key in enumerate(keys): for index, key in enumerate(keys):
(repo, handle) = repos_dict[key] (repo, handle) = repos_dict[key]
@ -7347,6 +7378,8 @@ class NavWebReport(Report):
self.user.step_progress() self.user.step_progress()
self.user.end_progress() self.user.end_progress()
return repolist
def addressbook_pages(self, ind_list): def addressbook_pages(self, ind_list):
""" """
Create a webpage with a list of address availability for each person Create a webpage with a list of address availability for each person
@ -7401,7 +7434,7 @@ class NavWebReport(Report):
SourceListPage(self, self.title, source_list.keys()) SourceListPage(self, self.title, source_list.keys())
for source_handle in source_list: for source_handle in source_list:
SourcePage(self, self.title, source_handle, source_list, database_handles_list) SourcePage(self, self.title, source_handle, source_list, ind_list, database_handles_list)
self.user.step_progress() self.user.step_progress()
self.user.end_progress() self.user.end_progress()
@ -8196,7 +8229,7 @@ def sort_people(dbase, handle_list):
return sorted_lists return sorted_lists
def sort_event_types(dbase, event_handle_list, event_types): def sort_event_types(dbase, event_types, event_handle_list):
""" """
sort a list of event types and their associated event handles sort a list of event types and their associated event handles
@ -8204,16 +8237,17 @@ def sort_event_types(dbase, event_handle_list, event_types):
@param: event_types -- a dict of event types @param: event_types -- a dict of event types
@param: event_handle_list -- all event handles in this database @param: event_handle_list -- all event handles in this database
""" """
event_dict = dict((evt_type, list()) for evt_type in event_types) event_dict = dict((evt_type, list()) for evt_type in event_types)
for event_handle in event_handle_list: for event_handle in event_handle_list:
event = dbase.get_event_from_handle(event_handle) event = dbase.get_event_from_handle(event_handle)
event_type = event.get_type() event_type = str(event.get_type())
# add (gramps_id, date, handle) from this event # add (gramps_id, date, handle) from this event
if event_type in event_dict: if event_type in event_dict:
sort_value = event.get_date_object().get_sort_value() sort_value = event.get_date_object().get_sort_value()
event_dict[event_type].append((sort_value, event_handle)) event_dict[event_type].append((sort_value, event_handle))
for tup_list in event_dict.values(): for tup_list in event_dict.values():
@ -8478,21 +8512,6 @@ def build_event_data_by_individuals(dbase, ppl_handle_list):
# return event_handle_list and event types to its caller # return event_handle_list and event types to its caller
return event_handle_list, event_types return event_handle_list, event_types
def build_event_data_by_events(dbase_, event_handles):
"""
creates a list of event handles and event types for these event handles
"""
event_handle_list = []
event_types = []
for event_handle in event_handles:
event = dbase_.get_event_from_handle(event_handle)
if event:
event_types.append(str(event.get_type()))
event_handle_list.append(event_handle)
return event_handle_list, event_types
def check_person_database(person_handle, ppl_handle_list): def check_person_database(person_handle, ppl_handle_list):
""" """
check to see if a person is in the report database check to see if a person is in the report database

View File

@ -770,7 +770,7 @@ div#Download table.download td.ColumnModified {
padding: 0; padding: 0;
} }
div#SourceDetail { div#SourceDetail {
min-height: 1200px min-height: 800px
} }
div#SourceDetail div#references ol li { div#SourceDetail div#references ol li {
padding-bottom: .5em; padding-bottom: .5em;