Working more on Events classes.
svn: r13695
This commit is contained in:
@@ -630,6 +630,7 @@ div#EventDetail table.eventlist {
|
|||||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
border-top: solid 1px #000;
|
||||||
width: 20%;
|
width: 20%;
|
||||||
}
|
}
|
||||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||||
|
@@ -45,6 +45,7 @@ Narrative Web Page generator.
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from __future__ import with_statement
|
from __future__ import with_statement
|
||||||
|
import gc
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
@@ -446,7 +447,7 @@ class BasePage(object):
|
|||||||
|
|
||||||
def display_event_row(self, evt, evt_ref, showplc, showdescr, showsrc, shownote, subdirs, hyp):
|
def display_event_row(self, evt, evt_ref, showplc, showdescr, showsrc, shownote, subdirs, hyp):
|
||||||
"""
|
"""
|
||||||
display the event row for class IndividualPage
|
display the event row for IndividualPage
|
||||||
"""
|
"""
|
||||||
db = self.report.database
|
db = self.report.database
|
||||||
|
|
||||||
@@ -513,7 +514,7 @@ class BasePage(object):
|
|||||||
db = self.report.database
|
db = self.report.database
|
||||||
|
|
||||||
# get event type
|
# get event type
|
||||||
evt_type = get_event_type(evt, evt_ref)
|
evt_type = evt.type.xml_str()
|
||||||
|
|
||||||
# get hyperlink or not?
|
# get hyperlink or not?
|
||||||
evt_hyper = evt_type
|
evt_hyper = evt_type
|
||||||
@@ -546,13 +547,15 @@ class BasePage(object):
|
|||||||
info.append([DESCRHEAD, "Description", descr])
|
info.append([DESCRHEAD, "Description", descr])
|
||||||
|
|
||||||
if showsrc:
|
if showsrc:
|
||||||
srcrefs = self.get_citation_links(evt.get_source_references() )
|
srcrefs = self.display_ind_sources(evt)
|
||||||
|
if srcrefs is not None:
|
||||||
info.append([SHEAD, "Sources", srcrefs])
|
info.append([SHEAD, "Sources", srcrefs])
|
||||||
|
|
||||||
if shownote:
|
if shownote:
|
||||||
notelist = evt.get_note_list()
|
notelist = evt.get_note_list()
|
||||||
notelist.extend(evt_ref.get_note_list() )
|
notelist.extend(evt_ref.get_note_list() )
|
||||||
notelist = self.dump_notes(notelist)
|
notelist = self.display_note_list(notelist)
|
||||||
|
if notelist is not None:
|
||||||
info.append([NHEAD, "Notes", notelist])
|
info.append([NHEAD, "Notes", notelist])
|
||||||
|
|
||||||
# return event data information to its callers
|
# return event data information to its callers
|
||||||
@@ -2121,9 +2124,9 @@ class EventListPage(BasePage):
|
|||||||
with Html("div", class_ = "content", id = "EventList") as eventlist:
|
with Html("div", class_ = "content", id = "EventList") as eventlist:
|
||||||
body += eventlist
|
body += eventlist
|
||||||
|
|
||||||
msg = _("This page contains an index of all the events in the "
|
msg = _("This page contains an index of all the events in the database, sorted by their "
|
||||||
"database, sorted by their type, date (if one is present), "
|
"type, gramps id, and date (if one is present), Clicking on an "
|
||||||
"Clicking on an event’s type will load a page of those type of events.")
|
"event’s Gramps ID will load a page of those type of events.")
|
||||||
eventlist += Html("p", msg, id = "description")
|
eventlist += Html("p", msg, id = "description")
|
||||||
|
|
||||||
# get alphabet navigation for class EventListPage
|
# get alphabet navigation for class EventListPage
|
||||||
@@ -2257,12 +2260,21 @@ class EventListPage(BasePage):
|
|||||||
return Html("a", grampsid, href = url, alt = grampsid)
|
return Html("a", grampsid, href = url, alt = grampsid)
|
||||||
|
|
||||||
class EventPage(BasePage):
|
class EventPage(BasePage):
|
||||||
|
def __init__(self, report, title, evt_type, person, event, evt_ref):
|
||||||
|
"""
|
||||||
|
Creates the individual event page
|
||||||
|
|
||||||
|
@param: title -- is the title of the web pages
|
||||||
|
@param: evt_type -- the event type
|
||||||
|
@param: event -- the event for this page
|
||||||
|
@param: evt_ref -- the event reference
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, report, title, person, partner, evt_type, event, evt_ref):
|
|
||||||
BasePage.__init__(self, report, title, event.gramps_id)
|
BasePage.__init__(self, report, title, event.gramps_id)
|
||||||
self.up = True
|
self.up = True
|
||||||
db = report.database
|
db = report.database
|
||||||
subdirs = True
|
subdirs = True
|
||||||
|
self.bibli = Bibliography()
|
||||||
|
|
||||||
of = self.report.create_file(evt_ref.ref, "evt")
|
of = self.report.create_file(evt_ref.ref, "evt")
|
||||||
eventpage, body = self.write_header(_("Events"), _KEYEVENT)
|
eventpage, body = self.write_header(_("Events"), _KEYEVENT)
|
||||||
@@ -2287,12 +2299,11 @@ class EventPage(BasePage):
|
|||||||
table += tbody
|
table += tbody
|
||||||
|
|
||||||
# get event data
|
# get event data
|
||||||
shownote = True
|
|
||||||
"""
|
"""
|
||||||
for more information: see get_event_data()
|
for more information: see get_event_data()
|
||||||
"""
|
"""
|
||||||
event_data = self.get_event_data(event, evt_ref, True, True,
|
event_data = self.get_event_data(event, evt_ref, True, True,
|
||||||
False, shownote, subdirs, False, event.gramps_id)
|
False, True, subdirs, False, event.gramps_id)
|
||||||
|
|
||||||
# the first ones are listed here, the rest are shown below
|
# the first ones are listed here, the rest are shown below
|
||||||
# minus one because it starts at zero instead of one
|
# minus one because it starts at zero instead of one
|
||||||
@@ -2308,28 +2319,63 @@ class EventPage(BasePage):
|
|||||||
|
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", label, class_ = "ColumnAttribute", inline = True),
|
Html("td", label, class_ = "ColumnAttribute", inline = True),
|
||||||
Html('td', data, class_ = "Column%s" % colclass, inline = samerow)
|
Html('td', data, class_ = "Column" + colclass, inline = samerow)
|
||||||
)
|
)
|
||||||
tbody += trow
|
tbody += trow
|
||||||
|
|
||||||
# get person hyperlink
|
# Person
|
||||||
url = self.report.build_url_fname_html(person.handle, "ppl", self.up)
|
evt_type = event.type.xml_str()
|
||||||
person_hyper = self.person_link(url, person, True, gid = person.gramps_id)
|
if evt_type in ["Divorce", "Marriage"]:
|
||||||
trow = Html("tr") + (
|
handle_list = db.find_backlink_handles(evt_ref.ref,
|
||||||
Html("td", _PERSON, class_ = "ColumnAttribute", inline = True),
|
include_classes = ['Person', 'Family'])
|
||||||
Html("td", person_hyper, class_ = "ColumnPerson")
|
else:
|
||||||
)
|
handle_list = db.find_backlink_handles(evt_ref.ref, include_classes = ['Person'])
|
||||||
tbody += trow
|
|
||||||
|
|
||||||
# display partner if type is either Marriage or Divorce
|
|
||||||
if partner is not None:
|
|
||||||
url = self.report.build_url_fname_html(partner.handle, "ppl", self.up)
|
|
||||||
partner_hyper = self.person_link(url, partner, True, gid = partner.gramps_id)
|
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", _PARTNER, class_ = "ColumnAttribute", inline = True),
|
Html("td", _PERSON, class_ = "ColumnAttribute", inline = True)
|
||||||
Html("td", partner_hyper, class_ = "ColumnPartner")
|
|
||||||
)
|
)
|
||||||
tbody += trow
|
tcell = Html("td", class_ = "ColumnPerson")
|
||||||
|
trow += tcell
|
||||||
|
|
||||||
|
if handle_list:
|
||||||
|
first_person = True
|
||||||
|
|
||||||
|
# clasname can be either Person or Family
|
||||||
|
for (classname, handle) in handle_list:
|
||||||
|
|
||||||
|
if classname == "Person":
|
||||||
|
person = db.get_person_from_handle(handle)
|
||||||
|
if person:
|
||||||
|
person_name = self.get_name(person)
|
||||||
|
|
||||||
|
if not first_person:
|
||||||
|
tcell += ", "
|
||||||
|
|
||||||
|
tcell += person_name
|
||||||
|
else:
|
||||||
|
family = db.get_family_from_handle(handle)
|
||||||
|
if family:
|
||||||
|
|
||||||
|
# husband and spouse in this example, are called father and mother
|
||||||
|
husband_handle = family.get_father_handle()
|
||||||
|
spouse_handle = family.get_mother_handle()
|
||||||
|
husband = db.get_person_from_handle(husband_handle)
|
||||||
|
spouse = db.get_person_from_handle(spouse_handle)
|
||||||
|
if husband:
|
||||||
|
husband_name = self.get_name(husband)
|
||||||
|
if spouse:
|
||||||
|
spouse_name = self.get_name(spouse)
|
||||||
|
if spouse and husband:
|
||||||
|
tcell += ( Html("span", husband_name, class_ = "father fatherNmother") +
|
||||||
|
Html("span", spouse_name, class_ = "mother")
|
||||||
|
)
|
||||||
|
elif spouse:
|
||||||
|
tcell += Html("span", spouse_name, class_ = "mother")
|
||||||
|
elif husband:
|
||||||
|
tcell += Html("span", husband_name, class_ = "father")
|
||||||
|
first_person = False
|
||||||
|
else:
|
||||||
|
tcell += " "
|
||||||
|
|
||||||
# Narrative subsection
|
# Narrative subsection
|
||||||
if shownote:
|
if shownote:
|
||||||
@@ -2340,11 +2386,11 @@ class EventPage(BasePage):
|
|||||||
# get attribute list
|
# get attribute list
|
||||||
attrlist = event.get_attribute_list()
|
attrlist = event.get_attribute_list()
|
||||||
attrlist.extend(evt_ref.get_attribute_list() )
|
attrlist.extend(evt_ref.get_attribute_list() )
|
||||||
attrlist = self.display_attr_list(attrlist, False)
|
attrlist = self.display_attr_list(attrlist, True)
|
||||||
if attrlist is not None:
|
if attrlist is not None:
|
||||||
eventdetail += attrlist
|
eventdetail += attrlist
|
||||||
|
|
||||||
# get event source references
|
# event source references
|
||||||
srcrefs = event.get_source_references()
|
srcrefs = event.get_source_references()
|
||||||
self.bibli = Bibliography()
|
self.bibli = Bibliography()
|
||||||
srcrefs = self.display_ind_sources(event)
|
srcrefs = self.display_ind_sources(event)
|
||||||
@@ -5105,20 +5151,14 @@ class NavWebReport(Report):
|
|||||||
first_name = person.get_primary_name().get_first_name()
|
first_name = person.get_primary_name().get_first_name()
|
||||||
sort_name = ', '.join([last_name, first_name])
|
sort_name = ', '.join([last_name, first_name])
|
||||||
|
|
||||||
partner = None
|
|
||||||
for family_handle in person.get_family_handle_list():
|
for family_handle in person.get_family_handle_list():
|
||||||
family = db.get_family_from_handle(family_handle)
|
family = db.get_family_from_handle(family_handle)
|
||||||
|
|
||||||
# get partner for use in Marriage and Divorce
|
|
||||||
partner_handle = ReportUtils.find_spouse(person, family)
|
|
||||||
if partner_handle:
|
|
||||||
partner = db.get_person_from_handle(partner_handle)
|
|
||||||
|
|
||||||
for evt_ref in family.get_event_ref_list():
|
for evt_ref in family.get_event_ref_list():
|
||||||
event = db.get_event_from_handle(evt_ref.ref)
|
event = db.get_event_from_handle(evt_ref.ref)
|
||||||
|
|
||||||
# get event type
|
# get event type
|
||||||
evt_type = get_event_type(event, evt_ref)
|
evt_type = event.type.xml_str()
|
||||||
|
|
||||||
# get event types for class EventsListPage
|
# get event types for class EventsListPage
|
||||||
etype = None
|
etype = None
|
||||||
@@ -5141,15 +5181,13 @@ class NavWebReport(Report):
|
|||||||
sort_date = '%04d/%02d/%02d' % (year, month, day)
|
sort_date = '%04d/%02d/%02d' % (year, month, day)
|
||||||
|
|
||||||
# add event data
|
# add event data
|
||||||
event_list.append([evt_type, sort_date, sort_name, event,
|
event_list.append([evt_type, sort_date, sort_name, event, evt_ref])
|
||||||
evt_ref, partner])
|
|
||||||
|
|
||||||
partner = None
|
|
||||||
for evt_ref in person.get_primary_event_ref_list():
|
for evt_ref in person.get_primary_event_ref_list():
|
||||||
event = db.get_event_from_handle(evt_ref.ref)
|
event = db.get_event_from_handle(evt_ref.ref)
|
||||||
|
|
||||||
# get event type
|
# get event type
|
||||||
evt_type = get_event_type(event, evt_ref)
|
evt_type = event.type.xml_str()
|
||||||
|
|
||||||
# get event types for class EventsListPage
|
# get event types for class EventsListPage
|
||||||
etype = None
|
etype = None
|
||||||
@@ -5171,7 +5209,7 @@ class NavWebReport(Report):
|
|||||||
sort_date = '%04d/%02d/%02d' % (year, month, day)
|
sort_date = '%04d/%02d/%02d' % (year, month, day)
|
||||||
|
|
||||||
# add event data
|
# add event data
|
||||||
event_list.append([evt_type, sort_date, sort_name, event, evt_ref, partner])
|
event_list.append([evt_type, sort_date, sort_name, event, evt_ref])
|
||||||
|
|
||||||
# sort the event_list
|
# sort the event_list
|
||||||
event_list.sort()
|
event_list.sort()
|
||||||
@@ -5179,9 +5217,6 @@ class NavWebReport(Report):
|
|||||||
# combine person and their events together
|
# combine person and their events together
|
||||||
event_dict.append([person, event_list])
|
event_dict.append([person, event_list])
|
||||||
|
|
||||||
# sort the types alphabetically
|
|
||||||
event_types.sort()
|
|
||||||
|
|
||||||
# return the events for EventListPage and EventPage
|
# return the events for EventListPage and EventPage
|
||||||
return event_dict, event_types, event_handle_list
|
return event_dict, event_types, event_handle_list
|
||||||
|
|
||||||
@@ -5308,24 +5343,24 @@ class NavWebReport(Report):
|
|||||||
@param: event_types -- a list of all the event types in this database
|
@param: event_types -- a list of all the event types in this database
|
||||||
@param: event_handle_list -- a list of the event handles in the database to be used
|
@param: event_handle_list -- a list of the event handles in the database to be used
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# set up progress bar for event pages; using ind list because it was taking too long at the end
|
||||||
|
self.progress.set_pass(_("Creating event pages"), len(ind_list))
|
||||||
|
|
||||||
# send all data to the events list page
|
# send all data to the events list page
|
||||||
EventListPage(self, self.title, event_types, event_handle_list, ind_list)
|
EventListPage(self, self.title, event_types, event_handle_list, ind_list)
|
||||||
|
|
||||||
# set up progress bar for event pages
|
|
||||||
self.progress.set_pass(_("Creating event pages"), len(event_dict))
|
|
||||||
|
|
||||||
for (person, event_list) in event_dict:
|
for (person, event_list) in event_dict:
|
||||||
|
|
||||||
for (evt_type, sort_date, sort_name, event, evt_ref, partner) in event_list:
|
for (evt_type, sort_date, sort_name, event, evt_ref) in event_list:
|
||||||
|
|
||||||
# create individual event page
|
# create individual event page
|
||||||
EventPage(self, self.title, person, partner, evt_type, event, evt_ref)
|
EventPage(self, self.title, evt_type, person, event, evt_ref)
|
||||||
|
|
||||||
# increment the progress bar
|
# increment the progress bar
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
|
|
||||||
def gallery_pages(self, source_list):
|
def gallery_pages(self, source_list):
|
||||||
import gc
|
|
||||||
|
|
||||||
self.progress.set_pass(_("Creating media pages"), len(self.photo_list))
|
self.progress.set_pass(_("Creating media pages"), len(self.photo_list))
|
||||||
|
|
||||||
@@ -6229,20 +6264,6 @@ def _has_webpage_extension(url):
|
|||||||
"""
|
"""
|
||||||
return any(url.endswith(ext) for ext in _WEB_EXT)
|
return any(url.endswith(ext) for ext in _WEB_EXT)
|
||||||
|
|
||||||
def get_event_type(event, event_ref):
|
|
||||||
""" return the type of an event """
|
|
||||||
|
|
||||||
evt_name = str(event.get_type())
|
|
||||||
|
|
||||||
if event_ref.get_role() == EventRoleType.PRIMARY:
|
|
||||||
evt_type = u"%(evt_name)s" % locals()
|
|
||||||
else:
|
|
||||||
evt_role = event_ref.get_role()
|
|
||||||
evt_type = u"%(evt_name)s (%(evt_role)s)" % locals()
|
|
||||||
|
|
||||||
# return event type to its callers
|
|
||||||
return evt_type
|
|
||||||
|
|
||||||
def add_birthdate(db, childlist):
|
def add_birthdate(db, childlist):
|
||||||
"""
|
"""
|
||||||
This will sort a list of child handles in birth order
|
This will sort a list of child handles in birth order
|
||||||
|
Reference in New Issue
Block a user