Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
 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")]
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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 ''
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
    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()
Ejemplo n.º 10
0
 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 ""
Ejemplo n.º 11
0
    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()
Ejemplo n.º 12
0
    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()
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
    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)
                    )