def dump_child_event(self, text, name, event): date = "" place = "" if event: date = self._get_date(event.get_date_object()) place_handle = event.get_place_handle() if place_handle: place = _pd.display_event(self.db, event) if place is None: place = '' self.doc.start_row() self.doc.start_cell(text) self.doc.start_paragraph('FGR-Normal') self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('FGR-TextContents') self.doc.start_paragraph('FGR-Normal') self.doc.write_text(name) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('FGR-TextContents') self.doc.start_paragraph('FGR-Normal') self.doc.write_text(date) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('FGR-TextContentsEnd') self.doc.start_paragraph('FGR-Normal') self.doc.write_text(place) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row()
def get_place(self, event): "return place for given event" place_handle = event.get_place_handle() if place_handle: place = _pd.display_event(self.db, event) if place: return [place] return [_T_("Place missing")]
def dump_parent_event(self, name, event): place = "" date = "" descr = "" if event: date = self._get_date(event.get_date_object()) place = _pd.display_event(self.db, event) if place is None: place = '' descr = event.get_description() if self.include_attrs: for attr in event.get_attribute_list(): if descr: # translators: needed for Arabic, ignore otherwise descr += self._("; ") attr_type = self._get_type(attr.get_type()) # translators: needed for French, ignore otherwise descr += self._("%(str1)s: %(str2)s") % { 'str1': self._(attr_type), 'str2': attr.get_value() } self.doc.start_row() self.doc.start_cell("FGR-TextContents") self.doc.start_paragraph('FGR-Normal') self.doc.write_text(name) self.doc.end_paragraph() self.doc.end_cell() if descr: self.doc.start_cell("FGR-TextContentsEnd", 2) self.doc.start_paragraph('FGR-Normal') self.doc.write_text(descr) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() if date or place: self.doc.start_row() self.doc.start_cell("FGR-TextContents") self.doc.start_paragraph('FGR-Normal') self.doc.end_paragraph() self.doc.end_cell() if (date or place) or not descr: self.doc.start_cell("FGR-TextContents") self.doc.start_paragraph('FGR-Normal') self.doc.write_text(date) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell("FGR-TextContentsEnd") self.doc.start_paragraph('FGR-Normal') self.doc.write_text(place) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row()
def get_place_string(self, event): """ return place string for an event label. Based on the data availability and preferences, we select one of the following for a given event: place name empty string """ if event and self.event_choice in [2, 3, 5, 6, 7]: return _pd.display_event(self._db, event) return ''
def get_full_person_info(self, person): # FIXME: #if self.restrict: # return "0 " retval = "" b_date = "0" b_place = "" birth_ref = person.get_birth_ref() if birth_ref: birth = self.db.get_event_from_handle(birth_ref.ref) if birth: b_date = self.format_date(birth.get_date_object()) place_handle = birth.get_place_handle() if place_handle: b_place = _pd.display_event(self.db, birth) if probably_alive(person, self.db): d_date = "" else: d_date = "0" d_place = "" death_ref = person.get_death_ref() if death_ref: death = self.db.get_event_from_handle(death_ref.ref) if death: d_date = self.format_date(death.get_date_object()) place_handle = death.get_place_handle() if place_handle: d_place = _pd.display_event(self.db, death) retval = retval + "%s " % b_date if b_place != "": retval = retval + "#bp %s " % self.rem_spaces(b_place) retval = retval + "%s " % d_date if d_place != "": retval = retval + "#dp %s " % self.rem_spaces(d_place) return retval
def write_person(self, person_handle): person = self.db.get_person_from_handle(person_handle) if person: birth_ref = person.get_birth_ref() if birth_ref: birth = self.db.get_event_from_handle(birth_ref.ref) if birth: b_date = birth.get_date_object() place_handle = birth.get_place_handle() if place_handle: # feature requests 2356, 1657: avoid genitive form place_title = _pd.display_event(self.db, birth) self.write_vevent(_("Birth of %s") % person.get_primary_name().get_name(), b_date, place_title) else: # feature requests 2356, 1657: avoid genitive form self.write_vevent(_("Birth of %s") % person.get_primary_name().get_name(), b_date) death_ref = person.get_death_ref() if death_ref: death = self.db.get_event_from_handle(death_ref.ref) if death: d_date = death.get_date_object() place_handle = death.get_place_handle() if place_handle: # feature requests 2356, 1657: avoid genitive form place_title = _pd.display_event(self.db, death) self.write_vevent(_("Death of %s") % person.get_primary_name().get_name(), d_date, place_title) else: # feature requests 2356, 1657: avoid genitive form self.write_vevent(_("Death of %s") % person.get_primary_name().get_name(), d_date)
def get_places(self, data): "return places for given (person,event_handles)" places = [] person, event_handles = data for event_handle in event_handles: event = self.db.get_event_from_handle(event_handle) place_handle = event.get_place_handle() if place_handle: place = _pd.display_event(self.db, event) if place: places.append(place) else: places.append(_T_("Place missing")) return places
def write_family(self, family_handle): family = self.db.get_family_from_handle(family_handle) if family: for event_ref in family.get_event_ref_list(): event = self.db.get_event_from_handle(event_ref.ref) if event.get_type() == EventType.MARRIAGE: m_date = event.get_date_object() place_handle = event.get_place_handle() # feature requests 2356, 1657: avoid genitive form text = _("Marriage of %s") % family_name(family, self.db) if place_handle: place_title = _pd.display_event(self.db, event) self.write_vevent( text, m_date, place_title) else: self.write_vevent( text, m_date)
def write_LDS_ordinances(self): """ write any LDS ordinances of the person """ ord_list = self.person.get_lds_ord_list() if len(ord_list) == 0: return self.doc.start_table("ordinances", "IDS-IndTable") self.doc.start_row() self.doc.start_cell("IDS-TableHead", 2) self.write_paragraph(self._('LDS Ordinance'), style='IDS-TableTitle') self.doc.end_cell() self.doc.end_row() self.doc.end_table() self.doc.start_table("ordinances3", "IDS-OrdinanceTable") self.doc.start_row() self.write_cell(self._('Type'), style='IDS-Section') self.write_cell(self._('Date'), style='IDS-Section') self.write_cell(self._('Status'), style='IDS-Section') self.write_cell(self._('Temple'), style='IDS-Section') self.write_cell(self._('Place'), style='IDS-Section') self.doc.end_row() for lds_ord in ord_list: otype = self._(lds_ord.type2str()) date = self._get_date(lds_ord.get_date_object()) status = self._(lds_ord.status2str()) temple = TEMPLES.name(lds_ord.get_temple()) place_name = '' place_endnote = '' place_handle = lds_ord.get_place_handle() if place_handle: place = self._db.get_place_from_handle(place_handle) place_name = _pd.display_event(self._db, lds_ord) place_endnote = self._cite_endnote(place) endnotes = self._cite_endnote(lds_ord, prior=place_endnote) self.doc.start_row() self.write_cell(otype, endnotes) self.write_cell(date) self.write_cell(status) self.write_cell(temple) self.write_cell(place_name) self.doc.end_row() self.doc.end_table() self.doc.start_paragraph('IDS-Normal') self.doc.end_paragraph()
def __date_place(self, event): """ return the date and/or place an event happened """ if event: date = self._get_date(event.get_date_object()) place_handle = event.get_place_handle() if place_handle: place = _pd.display_event(self.database, event) return ("%(event_abbrev)s %(date)s - %(place)s" % { 'event_abbrev': event.type.get_abbreviation(self._), 'date': date, 'place': place, }) else: return ("%(event_abbrev)s %(date)s" % { 'event_abbrev': event.type.get_abbreviation(self._), 'date': date }) return ""
def write_families(self): """ write any families the person has """ family_handle_list = self.person.get_family_handle_list() if not len(family_handle_list): return self.doc.start_table("three", "IDS-IndTable") self.doc.start_row() self.doc.start_cell("IDS-TableHead", 2) self.write_paragraph(self._('Families'), style='IDS-TableTitle') self.doc.end_cell() self.doc.end_row() self.doc.end_table() for family_handle in family_handle_list: self.doc.start_table("three", "IDS-IndTable") family = self._db.get_family_from_handle(family_handle) self.family_notes_list += family.get_note_list() if self.person.get_handle() == family.get_father_handle(): spouse_id = family.get_mother_handle() else: spouse_id = family.get_father_handle() self.doc.start_row() self.doc.start_cell("IDS-NormalCell", 2) if spouse_id: spouse = self._db.get_person_from_handle(spouse_id) text = self.get_name(spouse) mark = utils.get_person_mark(self._db, spouse) else: spouse = None text = self._("unknown") mark = None endnotes = self._cite_endnote(family) self.write_paragraph(text, endnotes=endnotes, mark=mark, style='IDS-Spouse') self.doc.end_cell() self.doc.end_row() event_ref_list = family.get_event_ref_list() for event_ref, event in self.get_event_list(event_ref_list): self.write_fact(event_ref, event) child_ref_list = family.get_child_ref_list() if len(child_ref_list): self.doc.start_row() self.write_cell(self._("Children")) self.doc.start_cell("IDS-ListCell") for child_ref in child_ref_list: child = self._db.get_person_from_handle(child_ref.ref) name = self.get_name(child) mark = utils.get_person_mark(self._db, child) endnotes = self._cite_endnote(child_ref) self.write_paragraph(name, endnotes=endnotes, mark=mark) self.doc.end_cell() self.doc.end_row() attr_list = family.get_attribute_list() if len(attr_list) and self.use_attrs: self.doc.start_row() self.write_cell(self._("Attributes")) self.doc.start_cell("IDS-ListCell") self.do_attributes(attr_list) self.doc.end_cell() self.doc.end_row() self.doc.end_table() ord_list = family.get_lds_ord_list() if len(ord_list): self.doc.start_table("ordinances2", "IDS-OrdinanceTable2") self.doc.start_row() self.write_cell(self._('LDS Ordinance')) self.write_cell(self._('Type'), style='IDS-Section') self.write_cell(self._('Date'), style='IDS-Section') self.write_cell(self._('Status'), style='IDS-Section') self.write_cell(self._('Temple'), style='IDS-Section') self.write_cell(self._('Place'), style='IDS-Section') self.doc.end_row() for lds_ord in ord_list: otype = self._(lds_ord.type2str()) date = self._get_date(lds_ord.get_date_object()) status = self._(lds_ord.status2str()) temple = TEMPLES.name(lds_ord.get_temple()) place_name = '' place_endnote = '' place_handle = lds_ord.get_place_handle() if place_handle: place = self._db.get_place_from_handle(place_handle) place_name = _pd.display_event(self._db, lds_ord) place_endnote = self._cite_endnote(place) endnotes = self._cite_endnote(lds_ord, prior=place_endnote) self.doc.start_row() self.write_cell('') self.write_cell(otype, endnotes) self.write_cell(date) self.write_cell(status) self.write_cell(temple) self.write_cell(place_name) self.doc.end_row() self.doc.end_table() self.doc.start_paragraph('IDS-Normal') self.doc.end_paragraph()
def write_fact(self, event_ref, event, show_type=True): """ Writes a single event. """ role = event_ref.get_role() description = event.get_description() date = self._get_date(event.get_date_object()) place_name = '' place_endnote = '' place_handle = event.get_place_handle() if place_handle: place = self._db.get_place_from_handle(place_handle) place_name = _pd.display_event(self._db, event) place_endnote = self._cite_endnote(place) # make sure it's translated, so it can be used below, in "combine" ignore = _('%(str1)s in %(str2)s. ') % {'str1':'', 'str2':''} date_place = self.combine('%(str1)s in %(str2)s. ', '%s. ', date, place_name) if show_type: # Groups with more than one type column_1 = self._(self._get_type(event.get_type())) if role not in (EventRoleType.PRIMARY, EventRoleType.FAMILY): column_1 = column_1 + ' (' + self._(role.xml_str()) + ')' # translators: needed for Arabic, ignore otherwise # make sure it's translated, so it can be used below, in "combine" ignore = _('%(str1)s, %(str2)s') % {'str1':'', 'str2':''} column_2 = self.combine('%(str1)s, %(str2)s', '%s', description, date_place) else: # Groups with a single type (remove event type from first column) column_1 = date # translators: needed for Arabic, ignore otherwise # make sure it's translated, so it can be used below, in "combine" ignore = _('%(str1)s, %(str2)s') % {'str1':'', 'str2':''} column_2 = self.combine('%(str1)s, %(str2)s', '%s', description, place_name) endnotes = self._cite_endnote(event, prior=place_endnote) self.doc.start_row() self.write_cell(column_1) self.doc.start_cell('IDS-NormalCell') self.doc.start_paragraph('IDS-Normal') self.doc.write_text(column_2) if endnotes: self.doc.start_superscript() self.doc.write_text(endnotes) self.doc.end_superscript() self.doc.end_paragraph() self.do_attributes(event.get_attribute_list() + event_ref.get_attribute_list()) for notehandle in event.get_note_list(): note = self._db.get_note_from_handle(notehandle) text = note.get_styledtext() note_format = note.get_format() self.doc.write_styled_note( text, note_format, 'IDS-Normal', contains_html=(note.get_type() == NoteType.HTML_CODE)) self.doc.end_cell() self.doc.end_row()
def get_wedding_data(self, family): ret = "" event_ref_list = family.get_event_ref_list() m_date = "" m_place = "" m_source = "" married = 0 eng_date = "" eng_place = "" eng_source = "" engaged = 0 div_date = "" divorced = 0 for event_ref in event_ref_list: event = self.db.get_event_from_handle(event_ref.ref) if event.get_type() == EventType.MARRIAGE: married = 1 m_date = self.format_date(event.get_date_object()) place_handle = event.get_place_handle() if place_handle: m_place = _pd.display_event(self.db, event) m_source = self.get_primary_source(event.get_citation_list()) if event.get_type() == EventType.ENGAGEMENT: engaged = 1 eng_date = self.format_date(event.get_date_object()) place_handle = event.get_place_handle() if place_handle: eng_place = _pd.display_event(self.db, event) eng_source = self.get_primary_source(event.get_citation_list()) if event.get_type() == EventType.DIVORCE: divorced = 1 div_date = self.format_date(event.get_date_object()) if married == 1: if m_date != "": ret = ret + m_date if m_place != "" and m_source != "": ret = ret + " #mp %s #ms %s" % (self.rem_spaces(m_place), self.rem_spaces(m_source)) if m_place != "" and m_source == "": ret = ret + " #mp %s" % self.rem_spaces(m_place) if m_source != "" and m_place == "": ret = ret + " #ms %s" % self.rem_spaces(m_source) elif engaged == 1: """Geneweb only supports either Marriage or engagement""" if eng_date != "": ret = ret + eng_date if m_place != "" and m_source != "": ret = ret + " #mp %s #ms %s" % (self.rem_spaces(m_place), self.rem_spaces(m_source)) if eng_place != "" and m_source == "": ret = ret + " #mp %s" % self.rem_spaces(m_place) if eng_source != "" and m_place == "": ret = ret + " #ms %s" % self.rem_spaces(m_source) else: if family.get_relationship() != FamilyRelType.MARRIED: """Not married or engaged""" ret = ret + " #nm" if divorced == 1: if div_date != "": ret = ret + " -%s" % div_date else: ret = ret + " -0" return ret
def write_event(self, event_ref): """ write out the event """ text = "" event = self._db.get_event_from_handle(event_ref.ref) if self.fulldate: date = self._get_date(event.get_date_object()) else: date = event.get_date_object().get_year() place = _pd.display_event(self._db, event) self.doc.start_paragraph('DAR-MoreDetails') if date and place: # translators: needed for Arabic, ignore otherwise text += self._('%(str1)s, %(str2)s' ) % {'str1' : date, 'str2' : place} elif date: text += '%s' % date elif place: text += '%s' % self._(place) if event.get_description(): if text: text += ". " text += event.get_description() text += self.endnotes(event) if text: text += ". " event_name = self._(self._get_type(event.get_type())) role = event_ref.get_role() if role in (EventRoleType.PRIMARY, EventRoleType.FAMILY): # translators: needed for French, ignore otherwise text = self._('%(str1)s: %(str2)s' ) % {'str1' : event_name, 'str2' : text} else: primaries = get_participant_from_event(self._db, event_ref.ref) text = self._('%(event_role)s at %(event_name)s ' 'of %(primary_person)s: %(event_text)s' ) % {'event_role' : self._(role.xml_str()), 'event_name' : event_name, 'primary_person' : primaries, 'event_text' : text} self.doc.write_text_citation(text) if self.inc_attrs: text = "" attr_list = event.get_attribute_list() attr_list.extend(event_ref.get_attribute_list()) for attr in attr_list: if text: # translators: needed for Arabic, ignore otherwise text += self._("; ") attr_name = attr.get_type().type2base() # translators: needed for French, ignore otherwise text += self._("%(type)s: %(value)s%(endnotes)s" ) % {'type' : self._(attr_name), 'value' : attr.get_value(), 'endnotes' : self.endnotes(attr)} text = " " + text self.doc.write_text_citation(text) self.doc.end_paragraph() if self.includenotes: # if the event or event reference has a note attached to it, # get the text and format it correctly notelist = event.get_note_list() notelist.extend(event_ref.get_note_list()) for notehandle in notelist: note = self._db.get_note_from_handle(notehandle) self.doc.write_styled_note( note.get_styledtext(), note.get_format(), "DAR-MoreDetails", contains_html=(note.get_type() == NoteType.HTML_CODE) )