def find_place(self, event):
        """
#        Use the most recent occupation residence.
#        """
        placetxt = " "
        placetxt = place_displayer.display_event(self.__db, event, self.pl_format)
        return(placetxt[4:-2])
Esempio n. 2
0
 def find_residence(self, family):
     """
     Use the most recent occupation residence.
     """
     residencetxt = " "
     for event_ref in get_primary_event_ref_list(self.__db, family):
         event = self.__db.get_event_from_handle(event_ref.ref)
         if event.get_type() == EventType(EventType.RESIDENCE):
             residencetxt = place_displayer.display_event(self.__db, event, self.pl_format)
     return(residencetxt)
    def get_date_place(self, event):
        """
        Return the date and place of the given event.
        """
        event_date = ''
        event_place = ''
        event_sort = '%012d' % 0
        if event:
            event_date = get_date(event)
            event_sort = '%012d' % event.get_date_object().get_sort_value()
            handle = event.get_place_handle()
            if handle:
                place = self.__db.get_place_from_handle(handle)
#                event_place = place.get_title()
                event_place = place_displayer.display_event(self.__db, event, self.pl_format)

        return (event_date, event_sort, event_place)      
    def __write_referenced_families(self, pl_format):
        """
        This procedure writes out each of the families related to the place
        """
        i = 0
        iw = 0
        ifam = 0
        marrevt_handle_list = []
        marr = []
        fam_list = []
        fam_index = {}
        #        Paten_list = []

        if self.showgodparents:
            pedic = {}
            pedic = defaultdict(list)
            for pe in self.database.get_person_handles():
                for eventref in self.database.get_person_from_handle(
                        pe).event_ref_list:
                    if not eventref.get_role().is_primary():
                        pedic[eventref.ref].append((eventref.get_role(), pe))

        with self._user.progress(_("PlaceFamily Report"),
                                 ("Generating report"),
                                 len(self.place_handles)) as step:

            for handle in self.place_handles:
                # first all events
                event_handles = [
                    event_handle for (object_type, event_handle) in
                    self.database.find_backlink_handles(handle, ['Event'])
                ]
                event_handles.sort(key=self.sort.by_date_key)
                # only marriage
                for evt_handle in event_handles:
                    if self.database.get_event_from_handle(
                            evt_handle).get_type().is_marriage():
                        marrevt_handle_list.append(evt_handle)
    # no dups
            marr = list(OrderedDict.fromkeys(marrevt_handle_list))
            #        print(len(marr))
            mi = 0
            for evt_handle in marr:
                event = self.database.get_event_from_handle(evt_handle)
                date = self._get_date(event.get_date_object())
                date_sort = event.get_date_object().get_sort_value()
                descr = event.get_description()
                #                event_type = self._(self._get_type(event.get_type()))
                #                event_place = event.place
                ref_handles = [
                    x for x in self.database.find_backlink_handles(evt_handle)
                ]
                #            print(mi, evt_handle)
                mi += 1
                for (ref_type, ref_handle) in ref_handles:
                    if ref_type == 'Person':
                        continue
                    else:
                        family = self.database.get_family_from_handle(
                            ref_handle)
                        ifam += 1
                        father_handle = family.get_father_handle()
                        # now from the families only fathers
                        if father_handle:
                            fp = self.database.get_person_from_handle(
                                father_handle)
                            father_name = \
                                self._name_display.display_name(fp.get_primary_name()).lower()
                        else:
                            father_name = _("unknown")
                        place_d = place_displayer.display_event(
                            self.database, event, pl_format)
                        #                        print(place_d)
                        event_details = [
                            father_handle, father_name, date, ref_handle,
                            descr, place_d, family, date_sort
                        ]
                        fam_list.append(event_details)

    #        print(sorted(fam_list, key=itemgetter(1,7)))
    #        print(len(fam_list))
            printsurname = "NOW"
            index = 0
            ##########################
            #for fn in sorted(fam_list, key=itemgetter(1,7)):

            #fam_list_name
            # TEST FOR SORTING
            #            lastnames = ["Bange", "Änger", "Amman", "Änger", "Zelch", "Ösbach"]
            #            print(sorted(lastnames, key=locale.strxfrm))
            #            print()
            #
            #            lastnames_firstnames_groups =[
            #                ["Bange", "Michael", 2],
            #                ["Änger", "Ämma", 2],
            #                ["Amman", "Anton", 1],
            #                ["Änger", "Chris", 2],
            #                ["Zelch", "Sven", 1],
            #                ["Ösbach", "Carl", 1]
            #            ]
            #            print(sorted(lastnames_firstnames_groups, key=operator.itemgetter(2,0,1)))
            #            print(
            #                sorted(
            #                    lastnames_firstnames_groups,
            #                    key=lambda t: (t[2], locale.strxfrm(t[0]), locale.strxfrm(t[1]))
            #                )
            #            )
            #**************************
            for fn in sorted(fam_list,
                             key=lambda t: (locale.strxfrm(t[1]), t[7])):
                index += 1
                fam_index[fn[6].get_gramps_id()] = index
    #            print(index)
    #        for ifn in fam_index.keys():
    #            print(ifn, fam_index[ifn])
            fam_index_keys = fam_index.keys()

            for fn in sorted(fam_list,
                             key=lambda t: (locale.strxfrm(t[1]), t[7])):
                if fn[0] is None:
                    surname = _("unknown")
                else:
                    surname = self.database.get_person_from_handle(
                        fn[0]).get_primary_name().get_surname()
    #            print(fn[0], surname)
                if printsurname == surname:
                    pass
                else:
                    #Family Surname
                    printsurname = surname
                    #                  S_Name = ("%s " % surname)
                    #                    mark = IndexMark(S_Name, INDEX_TYPE_TOC, 1)
                    self.doc.start_paragraph("PLC-PlaceTitle")
                    # self.doc.write_text("%s " % surname)

                    #   mark = ReportUtils.get_person_mark(self.database,surname)

                    #                    mark = IndexMark( surname, INDEX_TYPE_ALP )
                    #                    indexname = surname+" P_INDEX"
                    indexname = surname + " P_INDEX"
                    mark = IndexMark(indexname, INDEX_TYPE_ALP, 2)

                    self.doc.write_text(surname, mark)
                    self.doc.end_paragraph()
                i += 1
                # weddingdetails
                family = fn[6]
                iw += 1
                self.doc.start_paragraph("PLC-Details")
                self.doc.start_bold()
                #            self.doc.write_text("<%s> " % iw)
                self.doc.write_text(" <%s>" % fam_index[fn[6].gramps_id])
                #            self.doc.write_text("Heirat %s " % fn[1])
                self.doc.write_text("%s " % u'\u26AD')
                self.doc.write_text("%s " % fn[2])
                self.doc.end_bold()

                # increment progress bar
                step()

                #given Name
                # wedding place
                #UINDEX                self.doc.write_text(" %s." % fn[5]+" P_INDEX"+" LLL")
                self.doc.write_text(" %s." % fn[5])
                # FamID
                self.doc.write_text(" [%s]" % fn[6].gramps_id)
                self.doc.end_paragraph()

                ##################################################
                # fatherdetails
                father = self.database.get_person_from_handle(
                    fn[6].father_handle)
                if father:
                    self.doc.start_paragraph("PLC-PlaceDetails")
                    #given Name
                    self.doc.start_bold()
                    #    self.doc.write_text("%s " % father.get_primary_name().get_first_name())
                    mark = ReportUtils.get_person_mark(self.database, father)
                    text = father.get_primary_name().get_first_name()
                    self.doc.write_text(text, mark)
                    self.doc.write_text(
                        " %s" % father.get_primary_name().get_surname())

                    self.doc.end_bold()
                    self.doc.write_text("[%s] " % father.get_gramps_id())
                    #ggf familyID
                    for fam in father.get_family_handle_list():
                        if self.database.get_family_from_handle(
                                fam).gramps_id == fn[6].gramps_id:
                            pass
                        else:
                            self.doc.write_text(
                                " [%s]" % self.database.get_family_from_handle(
                                    fam).gramps_id)
                            if self.database.get_family_from_handle(
                                    fam).gramps_id in fam_index_keys:
                                self.doc.start_bold()
                                self.doc.write_text(" <%s>" % fam_index[
                                    self.database.get_family_from_handle(
                                        fam).gramps_id])
                                self.doc.end_bold()

    #birth date
                    birth_ref = father.get_birth_ref()
                    if birth_ref:
                        # erst event
                        birth_event = self.database.get_event_from_handle(
                            birth_ref.ref)
                        self.doc.write_text(" * ")
                        self.doc.write_text(
                            self.__format_date(birth_event.get_date_object()))
                        #birth place
                        # dann display place
                        #P                       print("HIER")
                        #p                       print(place_displayer.display_event(self.database, birth_event, pl_format))
                        self.doc.write_text(
                            " " + place_displayer.display_event(
                                self.database, birth_event, pl_format))
        #bapt date
                    for eventref in father.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(
                                    eventref.ref).get_type(
                                    ) == EventType.BAPTISM:
                                # erst event
                                bapt_event = self.database.get_event_from_handle(
                                    eventref.ref)
                                self.doc.write_text(" %s " % u'\u2053')
                                self.doc.write_text(
                                    self.__format_date(
                                        bapt_event.get_date_object()))
                                #bapt place
                                #        # erst event
                                bapt_event = self.database.get_event_from_handle(
                                    eventref.ref)
                                # dann display place
                                self.doc.write_text(
                                    " " + place_displayer.display_event(
                                        self.database, bapt_event, pl_format))

        #death date
                    death_ref = father.get_death_ref()
                    if death_ref:
                        # erst event
                        death_event = self.database.get_event_from_handle(
                            death_ref.ref)
                        self.doc.write_text(" † ")
                        self.doc.write_text(
                            self.__format_date(death_event.get_date_object()))
                        #death place
                        self.doc.write_text(
                            " " + place_displayer.display_event(
                                self.database, death_event, pl_format))

        #burr date
                    for eventref in father.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(
                                    eventref.ref).get_type(
                                    ) == EventType.BURIAL:
                                # erst event
                                burr_event = self.database.get_event_from_handle(
                                    eventref.ref)
                                self.doc.write_text("%s " % u'\u26B0')
                                self.doc.write_text(
                                    self.__format_date(
                                        burr_event.get_date_object()))
                                #burr place
                                # dann display place
                                self.doc.write_text(
                                    " " + place_displayer.display_event(
                                        self.database, burr_event, pl_format))
                    self.doc.end_paragraph()

    ############################################################
    # motherdetails
                mother = self.database.get_person_from_handle(
                    fn[6].mother_handle)
                if mother:
                    self.doc.start_paragraph("PLC-PlaceDetails")
                    #given Name
                    self.doc.write_text("und ")
                    self.doc.start_bold()

                    mark = ReportUtils.get_person_mark(self.database, mother)
                    text = mother.get_primary_name().get_surname()
                    self.doc.write_text(text, mark)

                    #         self.doc.write_text("%s, " % mother.get_primary_name().get_surname())
                    self.doc.end_bold()
                    self.doc.write_text(
                        " %s " % mother.get_primary_name().get_first_name())
                    self.doc.write_text("[%s] " % mother.get_gramps_id())
                    #ggf familyID
                    for fam in mother.get_family_handle_list():
                        if self.database.get_family_from_handle(
                                fam).gramps_id == fn[6].gramps_id:
                            pass
                        else:
                            self.doc.write_text(
                                " [%s]" % self.database.get_family_from_handle(
                                    fam).gramps_id)
                            if self.database.get_family_from_handle(
                                    fam).gramps_id in fam_index_keys:
                                self.doc.start_bold()
                                self.doc.write_text(" <%s>" % fam_index[
                                    self.database.get_family_from_handle(
                                        fam).gramps_id])
                                self.doc.end_bold()

    #birth date
                    birth_ref = mother.get_birth_ref()
                    if birth_ref:
                        # erst event
                        birth_event = self.database.get_event_from_handle(
                            birth_ref.ref)
                        self.doc.write_text(" * ")
                        self.doc.write_text(
                            self.__format_date(birth_event.get_date_object()))
                        #birth place
                        # dann display place
                        place_string = place_displayer.display_event(
                            self.database, birth_event, pl_format)
                        self.doc.write_text(" " + place_string)

        #bapt date
                    for eventref in mother.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(
                                    eventref.ref).get_type(
                                    ) == EventType.BAPTISM:
                                # erst event
                                bapt_event = self.database.get_event_from_handle(
                                    eventref.ref)

                                self.doc.write_text(" %s " % u'\u2053')
                                self.doc.write_text(
                                    self.__format_date(
                                        bapt_event.get_date_object()))
                                #bapt place
                                # dann display place
                                place_string = place_displayer.display_event(
                                    self.database, bapt_event, pl_format)
                                self.doc.write_text(" " + place_string)

        #death date
                    death_ref = mother.get_death_ref()
                    if death_ref:
                        # erst event
                        death_event = self.database.get_event_from_handle(
                            death_ref.ref)
                        self.doc.write_text(" † ")
                        self.doc.write_text(
                            self.__format_date(death_event.get_date_object()))
                        #death place
                        place_string = place_displayer.display_event(
                            self.database, death_event, pl_format)
                        self.doc.write_text(" " + place_string)

        #burr date
                    for eventref in mother.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(
                                    eventref.ref).get_type(
                                    ) == EventType.BURIAL:
                                # erst event
                                burr_event = self.database.get_event_from_handle(
                                    eventref.ref)
                                self.doc.write_text("%s " % u'\u26B0')
                                self.doc.write_text(
                                    self.__format_date(
                                        burr_event.get_date_object()))
                                #burr place
                                # dann display place
                                place_string = place_displayer.display_event(
                                    self.database, burr_event, pl_format)
                                self.doc.write_text(" " + place_string)
                    self.doc.end_paragraph()

    ############################################################
    # Children

                fc = 0
                for ch in fn[6].get_child_ref_list():
                    self.doc.start_paragraph("PLC-PlaceDetailsChildren")
                    fc += 1
                    child = self.database.get_person_from_handle(ch.ref)
                    if child:
                        #lnr
                        self.doc.write_text("     %s " % fc)
                        #given Name
                        mark = ReportUtils.get_person_mark(
                            self.database, child)
                        text = child.get_primary_name().get_first_name()
                        self.doc.write_text(text, mark)
                        #             self.doc.write_text("%s " % child.get_primary_name().get_first_name())
                        self.doc.write_text("[%s] " % child.get_gramps_id())
                        #ggf familyID
                        for fam in child.get_family_handle_list():
                            if self.database.get_family_from_handle(
                                    fam).gramps_id == fn[6].gramps_id:
                                pass
                            else:
                                self.doc.write_text(
                                    " [%s]" %
                                    self.database.get_family_from_handle(
                                        fam).gramps_id)
                                if self.database.get_family_from_handle(
                                        fam).gramps_id in fam_index_keys:
                                    self.doc.start_bold()
                                    self.doc.write_text(" <%s>" % fam_index[
                                        self.database.get_family_from_handle(
                                            fam).gramps_id])
                                    self.doc.end_bold()

            #birth date

                        birth_ref = child.get_birth_ref()
                        if birth_ref:
                            # erst event
                            birth_event = self.database.get_event_from_handle(
                                birth_ref.ref)
                            self.doc.write_text(" * ")
                            self.doc.write_text(
                                self.__format_date(
                                    birth_event.get_date_object()))
                            #birth place
                            place_string = place_displayer.display_event(
                                self.database, birth_event, pl_format)
                            self.doc.write_text(" " + place_string)

            #bapt date
                        for eventref in child.event_ref_list:
                            if eventref.role == EventRoleType.PRIMARY:
                                if self.database.get_event_from_handle(
                                        eventref.ref).get_type(
                                        ) == EventType.BAPTISM:
                                    # erst event
                                    bapt_event = self.database.get_event_from_handle(
                                        eventref.ref)

                                    self.doc.write_text(" %s " % u'\u2053')
                                    self.doc.write_text(
                                        self.__format_date(
                                            bapt_event.get_date_object()))
                                    #bapt place
                                    # dann display place
                                    place_string = place_displayer.display_event(
                                        self.database, bapt_event, pl_format)
                                    self.doc.write_text(" " + place_string)

                                    if self.showgodparents:
                                        Patenlist = []
                                        Patenlist = pedic[eventref.ref]
            #death date
                        death_ref = child.get_death_ref()
                        if death_ref:
                            # erst event
                            death_event = self.database.get_event_from_handle(
                                death_ref.ref)
                            self.doc.write_text(" † ")
                            self.doc.write_text(
                                self.__format_date(
                                    death_event.get_date_object()))
                            #death place
                            # dann display place
                            place_string = place_displayer.display_event(
                                self.database, death_event, pl_format)
                            self.doc.write_text(" " + place_string)

            #burr date
                        for eventref in child.event_ref_list:
                            if eventref.role == EventRoleType.PRIMARY:
                                if self.database.get_event_from_handle(
                                        eventref.ref).get_type(
                                        ) == EventType.BURIAL:
                                    # erst event
                                    burr_event = self.database.get_event_from_handle(
                                        eventref.ref)
                                    self.doc.write_text("%s " % u'\u26B0')
                                    self.doc.write_text(
                                        self.__format_date(
                                            burr_event.get_date_object()))
                                    #burr place
                                    # dann display place
                                    place_string = place_displayer.display_event(
                                        self.database, burr_event, pl_format)
                                    # dann drucken
                                    self.doc.write_text(" " + place_string)
                        self.doc.end_paragraph()

                        #                       print(len(Patenlist))
                        if self.showgodparents:
                            if len(Patenlist) > 0:
                                self.doc.start_paragraph("PLC-Godparents")
                                self.doc.write_text(" Paten: ")
                                for i, (pa_a, pa_b) in enumerate(Patenlist):
                                    self.doc.write_text(" (%s) " % str(i + 1))
                                    pate_name = self.database.get_person_from_handle(
                                        pa_b
                                    ).get_primary_name().get_first_name(
                                    ) + " " + self.database.get_person_from_handle(
                                        pa_b).get_primary_name().get_surname()
                                    pate = self.database.get_person_from_handle(
                                        pa_b)
                                    #                                    print(pate, pate_name)
                                    mark = ReportUtils.get_person_mark(
                                        self.database, pate)
                                    self.doc.write_text(
                                        pate.get_primary_name().get_first_name(
                                        ) + " " +
                                        pate.get_primary_name().get_surname(),
                                        mark)
                                self.doc.end_paragraph()
                                Patenlist = []
Esempio n. 5
0
    def listpersonref(self):

        sc = {'source': 'S_ID',
              'citalist': 'C_ID' }
        stc = {}      
        citation_without_notes = 0
        EMPTY = " "

        def toYear(date):
            yeartext = date.get_year()
            return yeartext         

        def toNbr(text):
            text = text[1:]
            while text[0] == "0":
                text = text[1:]
            return text         


        genderlist = ['F','M','X']
     # build citasource dictionary  and cl list 
        
        sc = defaultdict(list)
        cl = []
        i=1
        for ci in self.__db.iter_citations():
            if ci.source_handle in self.source_handles:
                sc[ci.source_handle].append(ci.handle)
                cl.append(ci.handle)

        # build citations - event dic                       xy
        #(a,b): set([('Citation', 'c4a8c46041e08799b17')]) 
        # event: c4a8c4f95b01e38564a event: Taufe
        ci = defaultdict(list)
        for ev in self.__db.iter_events():
            refhandlelist = ev.get_referenced_handles()   
            for (a,b) in refhandlelist:
                if a == 'Citation':
                    if b in cl:                    #!
                        ci[ev.handle].append(b)
        ci_evkeys = ci.keys()                

#***********************************************************************
#       # build godparentsdict of all persons
#

        gpdic ={}
        gpdic = defaultdict(list)
        for pe in self.__db.get_person_handles():
            for eventref in self.__db.get_person_from_handle(pe).event_ref_list:
                if not eventref.get_role().is_primary():
                    if eventref.get_role() == "Pate":
                        gpdic[eventref.ref].append((eventref.get_role(),pe))
        gpdickeys = gpdic.keys()

        for i in gpdic.keys():
            print(self.__db.get_event_from_handle(i).get_date_object())
            for (a,b) in gpdic[i]:
                print("TEIL     ",a
                        ,name_displayer.display(self.__db.get_person_from_handle(b))
                        ,self.__db.get_person_from_handle(b).gramps_id)
        print("GPDIC   ",len(gpdickeys))



#***********************************************************************
#       # build family list of all families with familyevent in citation
#
#       a    family handle
#
        famlist =[]
#        famdic = {}
        for fh in self.__db.get_family_handles():
            for eventref in self.__db.get_family_from_handle(fh).event_ref_list:
                if eventref.ref in ci_evkeys:
                    famlist.append(fh)
        # Each family only once
        famlist = list(set(famlist))
#        for fi,f in enumerate(famlist):
#            famdic[f]=fi

#***********************************************************************
#       # build pedic of all persons in families with familyevent in citation
#
#       k    gramps_id
#       v    1...n

        pedic ={}

        self.doc.start_paragraph("SRC-SourceTitle")
        self.doc.write_text(_("Person with Citations"))
        self.doc.end_paragraph()       

        indexlist = list()


        self.doc.start_table("Corpus Attributes", "SRC-VISONETable")
        name_list =["Zeile 1", "Zeile 2"]
        self.progress.set_pass(_('Start Table Corpus'), len(name_list))
        for nl in name_list:
            self.doc.start_row()
            self.doc.start_cell("SRC-TableColumn")
            self.doc.start_paragraph("SRC-ColumnTitle")
            self.doc.write_text(nl)
            self.doc.end_paragraph()
            self.doc.end_cell()
            self.doc.end_row()                 
        self.doc.end_table()


        self.progress.set_pass(_('Start Table Families'), len(famlist))

        self.doc.start_table("Families", "SRC-VISONETable")
##        column_titles = [_("Prim_ID"), _("Gramps_ID"),  _("Role"), _("Relation"), _("LNr"), _("Ev ID"),_("Event"), _("Date"), _("Year"), _("Age Primary"), _("Age Person"), _("gender Primary"), _("gender Person") , _("Person"),_("Primary"), _("Person birth"), _("Person Clan"),_("Primary Clan"),_("Event Place"),_("FamID"),_("AnzKind")] 
        column_titles = [_("Id"), "Status", "FatherId", "MotherId", "Children", "HUSB_ORD", "WIFE_ORD", _("Fam_ID"), _("Father_ID"), _("Mother_ID"), _("Children_ID")] 

        i = 0
        self.doc.start_row()
        for title in column_titles:
            self.doc.start_cell("SRC-TableColumn")
            self.doc.start_paragraph("SRC-ColumnTitle")
            self.doc.write_text(title)
            self.doc.end_paragraph()
            self.doc.end_cell()
        self.doc.end_row()                 
        i=0 
        ii=0
        

        fid = 0
        for f in sorted(famlist):
            famidtext = ""
            fathernametxt = ""
            mothernametxt = ""
            fatheridtxt = ""
            motheridtxt = ""
            childtxt = ""
            fatherordertxt = ""
            motherordertxt = ""
            
            family = self.__db.get_family_from_handle(f)
            famidtxt = (" [%s]" % family.gramps_id)
            famreltxt = family.get_relationship()
            if famreltxt == "Verheiratet":
                famreltxt = "M"
            elif famreltxt == "Unverheiratet":
#                print(famreltxt)
                famreltxt = " "
#                print("FAM    ",famreltxt)
            elif famreltxt == "Unbekannt":
                famreltxt = " "
            if family.get_father_handle():
                fathernametxt = fathernametxt + self.__db.get_person_from_handle(family.get_father_handle()).primary_name.get_name()
                famhandlelist = self.__db.get_person_from_handle(family.get_father_handle()).get_family_handle_list()
                fatherordertxt = ("%s" % len(famhandlelist))
                fatheridtxt = self.__db.get_person_from_handle(family.get_father_handle()).gramps_id
                indexlist.append(fatheridtxt)
                fatheridtxt = toNbr(fatheridtxt)

            if family.get_mother_handle():
                mothernametxt = mothernametxt + self.__db.get_person_from_handle(family.get_mother_handle()).primary_name.get_name()
                famhandlelist = self.__db.get_person_from_handle(family.get_mother_handle()).get_family_handle_list()
                motheridtxt = self.__db.get_person_from_handle(family.get_mother_handle()).gramps_id
                motherordertxt = ("%s" % len(famhandlelist))
                indexlist.append(motheridtxt)
                motheridtxt = toNbr(motheridtxt)
                # BUG only count not order
            childtxt =""
            for ch in family.get_child_ref_list():
                child = self.__db.get_person_from_handle(ch.ref)
                if child:
                    childtxt1 = child.get_gramps_id()
                    childtxt1 = childtxt1 + ";"
                    indexlist.append(child.get_gramps_id())
                    childtxt1 = toNbr(childtxt1)
                    childtxt = childtxt + childtxt1
            fid += 1
            line = []
            line.append(fid)
            line.append(famreltxt)
            line.append(fatheridtxt)
            line.append(motheridtxt)
            line.append(childtxt)
            line.append(fatherordertxt)
            line.append(motherordertxt) 
            line.append(famidtxt)
            line.append(fathernametxt)
            line.append(mothernametxt)


            self.doc.start_row()
            for l in line:
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                    l)
                self.doc.end_paragraph()
                self.doc.end_cell()
            self.doc.end_row()
            self.progress.step()

        self.doc.end_table()

        self.doc.start_table("Individuals", "SRC-VISONETable")
        column_titles = [_("Id"), "Name", "Gender", "ORD", "BIRT_DATE", "BIRT_PLACE", "DEAT_DATE", "DEAT_PLACE", "OCCU", "PersonID2"]
#   Id	Name	Gender	ORD	BIRT_DATE	Rolle	PersonID2


        i = 0
        self.doc.start_row()
        for title in column_titles:
            self.doc.start_cell("SRC-TableColumn")
            self.doc.start_paragraph("SRC-ColumnTitle")
            self.doc.write_text(title)
            self.doc.end_paragraph()
            self.doc.end_cell()
        self.doc.end_row()                 


        l = len(indexlist)
        indexlist = list(set(indexlist))

        self.progress.set_pass(_('Start Table Individuals'), len(indexlist))

#        for m in indexlist:
#            print(m)
        pi = 1
        for il in indexlist:
            self.doc.start_row()
            person = self.__db.get_person_from_gramps_id(il)
            

# Id
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                                toNbr(il))
            self.doc.end_paragraph()
            self.doc.end_cell()

# Name
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                                person.primary_name.get_gedcom_name())
            self.doc.end_paragraph()
            self.doc.end_cell()

# Gender
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                                    genderlist[person.get_gender()])
            self.doc.end_paragraph()
            self.doc.end_cell()

# Ord
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                                " ")
#                                person.primary_name.get_name())
            self.doc.end_paragraph()
            self.doc.end_cell()

# Birth Date
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            birth_ref = person.get_birth_ref()
            birth_date = None
            birthtxt = " "
            birthplacetxt = " "
            if birth_ref:
                birthtxt = self.__format_date(self.__db.get_event_from_handle(birth_ref.ref).get_date_object())
#                birthplacetxt = self.find_place(self.__db.get_event_from_handle(birth_ref.ref).place)
                birthplacetxt = place_displayer.display_event(self.__db, self.__db.get_event_from_handle(birth_ref.ref), self.pl_format)

            self.doc.write_text(_("%s") %
                                birthtxt)
            self.doc.end_paragraph()
            self.doc.end_cell()
            


# Place of Event
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                         birthplacetxt[4:-2])
            self.doc.end_paragraph()
            self.doc.end_cell()

# Death Date
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            death_ref = person.get_death_ref()
            death_date = None
            deathtxt = " "
            deathplacetxt = " "
            if death_ref:
                deathtxt = self.__format_date(self.__db.get_event_from_handle(death_ref.ref).get_date_object())
                deathplacetxt = place_displayer.display_event(self.__db, self.__db.get_event_from_handle(death_ref.ref), self.pl_format)
            self.doc.write_text(_("%s") %
                                deathtxt)
            self.doc.end_paragraph()
            self.doc.end_cell()


# Place of Event
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                         deathplacetxt[4:-2])
            self.doc.end_paragraph()
            self.doc.end_cell()


# Occupation
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                         self.find_occupation(person))
            self.doc.end_paragraph()
            self.doc.end_cell()


# Person_ID
            self.doc.start_cell("SRC-Cell")
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("%s") %
                                il)
            self.doc.end_paragraph()
            self.doc.end_cell()


            self.doc.end_row()
            pi += 1

        print (l,len(indexlist))
        self.progress.step()
        self.doc.end_table()

        self.progress.set_pass(_('Start Table Relation'), len(indexlist))

        self.doc.start_table("Relation", "SRC-VISONETable")
        column_titles = [_("Id"), "Name", "Candidate", "Godparent", "#DATE"]
#_("Id"), "Name", "Candidate", "Godparent", "#DATE"
#
#
        self.doc.start_row()
        self.doc.start_cell("SRC-TableColumn")
        self.doc.start_paragraph("SRC-ColumnTitle")
        self.doc.write_text("Patenschaften")
        self.doc.end_paragraph()
        self.doc.end_cell()
        self.doc.end_row()
#
        i = 0
        self.doc.start_row()
        for title in column_titles:
            self.doc.start_cell("SRC-TableColumn")
            self.doc.start_paragraph("SRC-ColumnTitle")
            self.doc.write_text(title)
            self.doc.end_paragraph()
            self.doc.end_cell()
        self.doc.end_row()


        l = len(indexlist)
        indexlist = list(set(indexlist))
#        for m in indexlist:
#            print(m)
        pi = 1
        for il in indexlist:
            person = self.__db.get_person_from_gramps_id(il)
            for eventref in person.get_event_ref_list():
                event = self.__db.get_event_from_handle(eventref.ref)
##                if event and event.type.is_baptism():
                if event.type.is_baptism():

                    self.doc.start_row()
# EventId
                    self.doc.start_cell("SRC-Cell")
                    self.doc.start_paragraph("SRC-SourceDetails")
                    self.doc.write_text(_("%s") %
                                        toNbr(event.gramps_id))
                    self.doc.end_paragraph()
                    self.doc.end_cell()

# Name
                    self.doc.start_cell("SRC-Cell")
                    self.doc.start_paragraph("SRC-SourceDetails")
                    self.doc.write_text(_("Bapt %s") %
                                        event.get_description())
                    self.doc.end_paragraph()
                    self.doc.end_cell()

# Candidate
                    self.doc.start_cell("SRC-Cell")
                    self.doc.start_paragraph("SRC-SourceDetails")
                    self.doc.write_text(_("%s") %
                                        toNbr(il))
                    self.doc.end_paragraph()
                    self.doc.end_cell()

# Godparents


                    patentxt =""
                    for i in gpdickeys:
                        if self.__db.get_event_from_handle(i).gramps_id == event.gramps_id:
                            for (a,b) in gpdic[i]:
                                patentxt = patentxt + toNbr(self.__db.get_person_from_handle(b).gramps_id) +";"

                    self.doc.start_cell("SRC-Cell")
                    self.doc.start_paragraph("SRC-SourceDetails")
                    self.doc.write_text(_("%s") %
                                        patentxt)
                    self.doc.end_paragraph()
                    self.doc.end_cell()


# Date
                    self.doc.start_cell("SRC-Cell")
                    self.doc.start_paragraph("SRC-SourceDetails")
                    self.doc.write_text(_(" %s") %
                                 self.__format_date(event.get_date_object()))
                    self.doc.end_paragraph()
                    self.doc.end_cell()
                    self.doc.end_row()
                    pi += 1
            self.progress.step()
        print (l,len(indexlist))
        self.doc.end_table()
Esempio n. 6
0
    def __write_referenced_families(self, pl_format):
        """
        This procedure writes out each of the families related to the place
        """
        i = 0
        iw = 0
        ifam = 0
        marrevt_handle_list = []
        marr = []
        fam_list = []
        fam_index ={}
        Paten_list = []

        if self.showgodparents:
            pedic = {}
            pedic = defaultdict(list)
            for pe in self.database.get_person_handles():
                for eventref in self.database.get_person_from_handle(pe).event_ref_list:
                    if not eventref.get_role().is_primary():
                        pedic[eventref.ref].append((eventref.get_role(),pe))

        with self._user.progress(_("PlaceFamily Report"),
                                  ("Generating report"),
                                  len(self.place_handles)) as step:                               


            for handle in self.place_handles:      
    # first all events
                
                event_handles = [event_handle for (object_type, event_handle) in
                                 self.database.find_backlink_handles(handle, ['Event'])]
                event_handles.sort(key=self.sort.by_date_key)
    # only marriage            
                for evt_handle in event_handles:
                    if self.database.get_event_from_handle(evt_handle).get_type().is_marriage():
                        marrevt_handle_list.append(evt_handle)
    # no dups            
            marr = list(OrderedDict.fromkeys(marrevt_handle_list))
    #        print(len(marr))
            mi = 0    
            for evt_handle in marr:
                event = self.database.get_event_from_handle(evt_handle)
                date = self._get_date(event.get_date_object())
                date_sort = event.get_date_object().get_sort_value()
                descr = event.get_description()
                event_type = self._(self._get_type(event.get_type()))
                event_place = event.place 
                ref_handles = [x for x in
                               self.database.find_backlink_handles(evt_handle)]
    #            print(mi, evt_handle)
                mi += 1
                for (ref_type, ref_handle) in ref_handles:
                    if ref_type == 'Person':
                        continue
                    else:
                        family = self.database.get_family_from_handle(ref_handle)
                        ifam +=1
                        father_handle = family.get_father_handle()
        # now from the families only fathers
                        if father_handle:
                            fp = self.database.get_person_from_handle(father_handle)
                            father_name = \
                                self._name_display.display_name(fp.get_primary_name()).lower()
                        else:
                            father_name = _("unknown")
                        place_d = place_displayer.display_event(self.database, event, pl_format)
                        print(place_d)
                        event_details = [ father_handle, father_name, date, ref_handle, descr, place_d, family, date_sort]
                        fam_list.append(event_details)

    #        print(sorted(fam_list, key=itemgetter(1,7)))
    #        print(len(fam_list))
            printsurname = "NOW"
            index=0
##########################
            #for fn in sorted(fam_list, key=itemgetter(1,7)):

            #fam_list_name
# TEST FOR SORTING
#            lastnames = ["Bange", "Änger", "Amman", "Änger", "Zelch", "Ösbach"]
#            print(sorted(lastnames, key=locale.strxfrm))
#            print()
#
#            lastnames_firstnames_groups = [
#                ["Bange", "Michael", 2],
#                ["Änger", "Ämma", 2],
#                ["Amman", "Anton", 1],
#                ["Änger", "Chris", 2],
#                ["Zelch", "Sven", 1],
#                ["Ösbach", "Carl", 1]
#            ]
#            print(sorted(lastnames_firstnames_groups, key=operator.itemgetter(2,0,1)))
#            print(
#                sorted(
#                    lastnames_firstnames_groups,
#                    key=lambda t: (t[2], locale.strxfrm(t[0]), locale.strxfrm(t[1]))
#                )
#            )
#**************************        
            for fn in sorted(fam_list,  key=lambda t: (locale.strxfrm(t[1]), t[7])):
                index +=1
                fam_index[fn[6].get_gramps_id()]=index
    #            print(index)
    #        for ifn in fam_index.keys():
    #            print(ifn, fam_index[ifn])
            fam_index_keys = fam_index.keys()

            for fn in sorted(fam_list,  key=lambda t: (locale.strxfrm(t[1]), t[7])):
                if fn[0] is None:
                    surname = _("unknown")
                else:
                    surname = self.database.get_person_from_handle(fn[0]).get_primary_name().get_surname()
    #            print(fn[0], surname)
                if printsurname == surname:
                    pass
                else:
        #Family Surname
                    printsurname = surname
  #                  S_Name = ("%s " % surname)
#                    mark = IndexMark(S_Name, INDEX_TYPE_TOC, 1) 
                    self.doc.start_paragraph("PLC-PlaceTitle")
                   # self.doc.write_text("%s " % surname)
                    
                 #   mark = ReportUtils.get_person_mark(self.database,surname)
                    
#                    mark = IndexMark( surname, INDEX_TYPE_ALP )
#                    indexname = surname+" P_INDEX"
                    indexname = surname+" P_INDEX"
                    mark = IndexMark( indexname, INDEX_TYPE_ALP, 2)

                    
                    self.doc.write_text(surname,mark)
                    self.doc.end_paragraph()                              
                i +=1
    # weddingdetails
                family = fn[6]
                iw += 1
                self.doc.start_paragraph("PLC-Details")
                self.doc.start_bold()
    #            self.doc.write_text("<%s> " % iw)
                self.doc.write_text(" <%s>" % fam_index[fn[6].gramps_id])
    #            self.doc.write_text("Heirat %s " % fn[1])
                self.doc.write_text("%s " % u'\u26AD')
                self.doc.write_text("%s " % fn[2])
                self.doc.end_bold()

                # increment progress bar
                step()
    
    #given Name
    # wedding place
#UINDEX                self.doc.write_text(" %s." % fn[5]+" P_INDEX"+" LLL")
                self.doc.write_text(" %s." % fn[5])
    # FamID            
                self.doc.write_text(" [%s]" % fn[6].gramps_id)        
                self.doc.end_paragraph()
    
    ##################################################
    # fatherdetails
                father = self.database.get_person_from_handle(fn[6].father_handle)
                if father:
                    self.doc.start_paragraph("PLC-PlaceDetails")
    #given Name
                    self.doc.start_bold()
                #    self.doc.write_text("%s " % father.get_primary_name().get_first_name())
                    mark = ReportUtils.get_person_mark(self.database,father)
                    text = father.get_primary_name().get_first_name()
                    self.doc.write_text(text,mark)
                    self.doc.write_text(" %s" % father.get_primary_name().get_surname())
                    
                    self.doc.end_bold()
                    self.doc.write_text("[%s] " % father.get_gramps_id())
    #ggf familyID
                    for fam in father.get_family_handle_list():
                        if self.database.get_family_from_handle(fam).gramps_id == fn[6].gramps_id:
                            pass
                        else:
                            self.doc.write_text(" [%s]" % self.database.get_family_from_handle(fam).gramps_id)
                            if self.database.get_family_from_handle(fam).gramps_id in fam_index_keys:
                                self.doc.start_bold()
                                self.doc.write_text(" <%s>" % fam_index[self.database.get_family_from_handle(fam).gramps_id])
                                self.doc.end_bold()
    
    #birth date
                    birth_ref = father.get_birth_ref()
                    if birth_ref:
        # erst event
                        birth_event = self.database.get_event_from_handle(birth_ref.ref)
                        self.doc.write_text(" * ")
                        self.doc.write_text(self.__format_date(birth_event.get_date_object()))
        #birth place
        # dann display place
                        print("HIER")
                        print(place_displayer.display_event(self.database, birth_event, pl_format))
                        self.doc.write_text(place_displayer.display_event(self.database, birth_event, pl_format))
        #bapt date
                    for eventref in father.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(eventref.ref).get_type() == EventType.BAPTISM:
        # erst event
                                bapt_event = self.database.get_event_from_handle(eventref.ref)
                                self.doc.write_text(" %s " % u'\u2053')
                                self.doc.write_text(self.__format_date(bapt_event.get_date_object()))
        #bapt place
#        # erst event
                                bapt_event = self.database.get_event_from_handle(eventref.ref)
        # dann display place
                                self.doc.write_text(place_displayer.display_event(self.database, bapt_event, pl_format)) 

        #death date
                    death_ref = father.get_death_ref()
                    if death_ref:
        # erst event
                        death_event = self.database.get_event_from_handle(death_ref.ref)
                        self.doc.write_text(" † ")
                        self.doc.write_text(self.__format_date(death_event.get_date_object()))
        #death place
                        self.doc.write_text(place_displayer.display_event(self.database, death_event, pl_format)) 


        #burr date
                    for eventref in father.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(eventref.ref).get_type() == EventType.BURIAL:
        # erst event
                                burr_event = self.database.get_event_from_handle(eventref.ref)
                                self.doc.write_text("%s " % u'\u26B0')
                                self.doc.write_text(self.__format_date(burr_event.get_date_object()))
        #burr place
        # dann display place
                                self.doc.write_text(place_displayer.display_event(self.database, burr_event, pl_format)) 
                    self.doc.end_paragraph()
                
    ############################################################
    # motherdetails
                mother = self.database.get_person_from_handle(fn[6].mother_handle)
                if mother:
                    self.doc.start_paragraph("PLC-PlaceDetails")                 
        #given Name
                    self.doc.write_text("und ")
                    self.doc.start_bold()
              
                    mark = ReportUtils.get_person_mark(self.database,mother)
                    text = mother.get_primary_name().get_surname()
                    self.doc.write_text(text,mark)
              
           #         self.doc.write_text("%s, " % mother.get_primary_name().get_surname())
                    self.doc.end_bold()
                    self.doc.write_text(" %s " % mother.get_primary_name().get_first_name())
                    self.doc.write_text("[%s] " % mother.get_gramps_id())
        #ggf familyID
                    for fam in mother.get_family_handle_list():
                        if self.database.get_family_from_handle(fam).gramps_id == fn[6].gramps_id:
                            pass
                        else:
                            self.doc.write_text(" [%s]" % self.database.get_family_from_handle(fam).gramps_id)
                            if self.database.get_family_from_handle(fam).gramps_id in fam_index_keys:
                                self.doc.start_bold()
                                self.doc.write_text(" <%s>" % fam_index[self.database.get_family_from_handle(fam).gramps_id])
                                self.doc.end_bold()
    
    #birth date
                    birth_ref = mother.get_birth_ref()
                    if birth_ref:
        # erst event
                        birth_event = self.database.get_event_from_handle(birth_ref.ref)
                        self.doc.write_text(" * ")
                        self.doc.write_text(self.__format_date(birth_event.get_date_object()))
        #birth place
        # dann display place
                        place_string = place_displayer.display_event(self.database, birth_event, pl_format)
                        self.doc.write_text((place_string))

        #bapt date
                    for eventref in mother.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(eventref.ref).get_type() == EventType.BAPTISM:
        # erst event
                                bapt_event = self.database.get_event_from_handle(eventref.ref)

                                self.doc.write_text(" %s " % u'\u2053')
                                self.doc.write_text(self.__format_date(bapt_event.get_date_object()))
        #bapt place
        # dann display place
                                place_string = place_displayer.display_event(self.database, bapt_event, pl_format) 
                                self.doc.write_text((place_string))


        #death date
                    death_ref = mother.get_death_ref()
                    if death_ref:
        # erst event
                        death_event = self.database.get_event_from_handle(death_ref.ref)
                        self.doc.write_text(" † ")
                        self.doc.write_text(self.__format_date(death_event.get_date_object()))
        #death place
                        place_string = place_displayer.display_event(self.database, death_event, pl_format) 
                        self.doc.write_text((place_string))


        #burr date
                    for eventref in mother.event_ref_list:
                        if eventref.role == EventRoleType.PRIMARY:
                            if self.database.get_event_from_handle(eventref.ref).get_type() == EventType.BURIAL:
        # erst event
                                burr_event = self.database.get_event_from_handle(eventref.ref)
                                self.doc.write_text("%s " % u'\u26B0')
                                self.doc.write_text(self.__format_date(burr_event.get_date_object()))
        #burr place
        # dann display place
                                place_string = place_displayer.display_event(self.database, burr_event, pl_format) 
                                self.doc.write_text((place_string))
                    self.doc.end_paragraph()
                
                
    ############################################################
    # Children
    
                fc = 0
                for ch in fn[6].get_child_ref_list():
                    self.doc.start_paragraph("PLC-PlaceDetailsChildren")
                    fc +=1
                    child = self.database.get_person_from_handle(ch.ref)
                    if child:
        #lnr
                        self.doc.write_text("     %s " % fc)
        #given Name
                        mark = ReportUtils.get_person_mark(self.database, child)
                        text = child.get_primary_name().get_first_name()
                        self.doc.write_text(text, mark)
           #             self.doc.write_text("%s " % child.get_primary_name().get_first_name())
                        self.doc.write_text("[%s] " % child.get_gramps_id())
        #ggf familyID
                        for fam in child.get_family_handle_list():
                            if self.database.get_family_from_handle(fam).gramps_id == fn[6].gramps_id:
                                pass
                            else:
                                self.doc.write_text(" [%s]" % self.database.get_family_from_handle(fam).gramps_id)
                                if self.database.get_family_from_handle(fam).gramps_id in fam_index_keys:
                                    self.doc.start_bold()
                                    self.doc.write_text(" <%s>" % fam_index[self.database.get_family_from_handle(fam).gramps_id])
                                    self.doc.end_bold()
        
            #birth date

                        birth_ref = child.get_birth_ref()
                        if birth_ref:
                # erst event
                            birth_event = self.database.get_event_from_handle(birth_ref.ref)
                            self.doc.write_text(" * ")
                            self.doc.write_text(self.__format_date(birth_event.get_date_object()))
            #birth place
                            place_string = place_displayer.display_event(self.database, birth_event, pl_format)
                            self.doc.write_text(" "+place_string)
    
    
            #bapt date
                        for eventref in child.event_ref_list:
                            if eventref.role == EventRoleType.PRIMARY:
                                if self.database.get_event_from_handle(eventref.ref).get_type() == EventType.BAPTISM:
            # erst event
                                    bapt_event = self.database.get_event_from_handle(eventref.ref)
    
                                    self.doc.write_text(" %s " % u'\u2053')
                                    self.doc.write_text(self.__format_date(bapt_event.get_date_object()))
            #bapt place
            # dann display place
                                    place_string = place_displayer.display_event(self.database, bapt_event, pl_format) 
                                    self.doc.write_text((place_string))

                                    if self.showgodparents:
                                        Patenlist = []
                                        Patenlist = pedic[eventref.ref]
    
    
            #death date
                        death_ref = child.get_death_ref()
                        if death_ref:
            # erst event
                            death_event = self.database.get_event_from_handle(death_ref.ref)
                            self.doc.write_text(" † ")
                            self.doc.write_text(self.__format_date(death_event.get_date_object()))
            #death place
            # dann display place
                            place_string = place_displayer.display_event(self.database, death_event, pl_format) 
                            self.doc.write_text((place_string))
    
    
    
            #burr date
                        for eventref in child.event_ref_list:
                            if eventref.role == EventRoleType.PRIMARY:
                                if self.database.get_event_from_handle(eventref.ref).get_type() == EventType.BURIAL:
            # erst event
                                    burr_event = self.database.get_event_from_handle(eventref.ref)
                                    self.doc.write_text("%s " % u'\u26B0')
                                    self.doc.write_text(self.__format_date(burr_event.get_date_object()))
            #burr place
            # dann display place
                                    place_string = place_displayer.display_event(self.database, burr_event, pl_format) 
            # dann drucken
                                    self.doc.write_text((place_string))
                        self.doc.end_paragraph()

 #                       print(len(Patenlist))
                        if self.showgodparents:
                        
                            if len(Patenlist)>0:
                                self.doc.start_paragraph("PLC-Godparents")
                                self.doc.write_text(" Paten: ")
                                for i,(pa_a,pa_b) in enumerate(Patenlist):
                                    self.doc.write_text(" (%s) " % str(i+1))
                             
                                    pate_name = self.database.get_person_from_handle(pa_b).get_primary_name().get_first_name() +" "+ self.database.get_person_from_handle(pa_b).get_primary_name().get_surname() 
                                    pate = self.database.get_person_from_handle(pa_b) 
#                                    print(pate, pate_name)
                             
                                    mark = ReportUtils.get_person_mark(self.database, pate)
                                    self.doc.write_text(pate.get_primary_name().get_first_name() +" "+ pate.get_primary_name().get_surname() ,mark)
                                self.doc.end_paragraph()
                                Patenlist = []
    def listpersonref(self):
    
        sc = {'source': 'S_ID',
              'citalist': 'C_ID' }
        stc = {}      
        citation_without_notes = 0
        EMPTY = " "

        def toYear(date):
            yeartext = date.get_year()
            return yeartext
            
            
 
       # genderlist = ['w','m']
        genderlist = ['w','m','u']
       
        self.doc.start_paragraph("SRC-SourceTitle")
        self.doc.write_text(_("Person with Citations"))
        self.doc.end_paragraph()       

       
        self.doc.start_table("VISONETable", "SRC-VISONETable")
        column_titles = [_("Gramps_ID"), _("Gramps_ID"),  _("LNr"), _("Birthdate"), _("Deathdate"),_("Birthyear"), _("Deathyear"), _("Age on Death"), _("gender"), _("Name"), _("Surname"),_("LabelID"),_("LabelGT"),_("Clan"),_("Birth Place"),_("Death Place"),_("Birth Country"),_("Death Country"),_("Birth Lat"),_("Birth Lon")] 
        i = 0
        self.doc.start_row()
        for title in column_titles:
            self.doc.start_cell("SRC-TableColumn")
            self.doc.start_paragraph("SRC-ColumnTitle")
            self.doc.write_text(title)
            self.doc.end_paragraph()
            self.doc.end_cell()
        self.doc.end_row()                 
        i=0 
        ii=0
        
        pe_list =[]
        for pe in self.__db.get_person_handles():
            pe_index = [ self.__db.get_person_from_handle(pe).gramps_id, pe]
            pe_list.append(pe_index)

        with self._user.progress(_("VIS ATTR Report"), 
                                  _("Generating report"), 
                                  len(pe_list)) as step:
    
    
    
    
    
            for pedet in sorted(pe_list,  key=lambda t: (t[1])):
    #        for pe in self.__db.get_person_handles(sort_handles=True):
                i += 1
                # increment progress bar
                step()
#                print (i, pedet)
                person =  self.__db.get_person_from_handle(pedet[1])
                birth = get_birth_or_fallback(self.__db, person) 
                birth_date, birth_sort, birth_place = self.get_date_place(birth)
                birth_country = place_displayer.display_event(self.__db, birth, "country")
    
                death = get_death_or_fallback(self.__db, person)
                death_date, death_sort, death_place = self.get_date_place(death)
                death_country = place_displayer.display_event(self.__db, death, "country")
                age = get_age(self.__db, person)   
                birth_year = ""
                death_year = ""
                    
                if birth:
                    birth_year = birth.get_date_object().get_year()
                if death:    
                    death_year = death.get_date_object().get_year() 
                    
                self.doc.start_row()
                
                # Person ID 
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                    person.gramps_id)
                self.doc.end_paragraph()
                self.doc.end_cell()
                
                # Person ID   2nd time
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                    person.gramps_id)
                self.doc.end_paragraph()
                self.doc.end_cell()
                                       
                # LNR
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                    i) 
                self.doc.end_paragraph()
                self.doc.end_cell()
            
                # Birth Date               
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                birth = get_birth_or_fallback(self.__db, person)
                self.doc.write_text(_(" %s") %            
                                    birth_date)
                self.doc.end_paragraph()  
                self.doc.end_cell()
     
                # Death Date               
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_(" %s") %
                                    death_date)
                self.doc.end_paragraph()  
                self.doc.end_cell()
    
                # Birth year               
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_(" %s") %
                                    birth_year)
                self.doc.end_paragraph()  
                self.doc.end_cell()
     
                # Death year               
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_(" %s") %
                                    death_year)
                self.doc.end_paragraph()  
                self.doc.end_cell()
    
                
                # Age on death             
                self.doc.start_cell("SRC-TableColumn")  
                self.doc.start_paragraph("SRC-SourceDetails")
                if age:
                    if age[0]>0:
                        self.doc.write_text(_("%s") %
                                                        age[0])
                    else:
                        if age[1]>0:                                    
                            self.doc.write_text(_("%s M.") %
                                                        age[1])
                        else:                                   
                            if age[2]>0:                                    
                                self.doc.write_text(_("%s T.") %
                                                            age[2])                                                        
                self.doc.end_paragraph()
                self.doc.end_cell() 
                
    
                # Person gender
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                        genderlist[person.gender])
                self.doc.end_paragraph()
                self.doc.end_cell() 
    
                # Person Name 
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                    person.get_primary_name().get_regular_name())
                self.doc.end_paragraph()
                self.doc.end_cell()
    
                # Person Surname, givenname 
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                    person.get_primary_name().get_name())
                self.doc.end_paragraph()
                self.doc.end_cell()

                # Label Name (ID) 
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                label =""
                label = _(" %s") % person.get_primary_name().get_regular_name()
                label = label + _(" [%s]") % person.gramps_id
                self.doc.write_text(_("%s") %
                                    label)
                self.doc.end_paragraph()
                self.doc.end_cell()
    
    
                # Label Name (geb-to) 
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                label =""
                label = _(" %s") % person.get_primary_name().get_regular_name()
                label = label + _(" (%s") % birth_year
                label = label + _("-%s)") % death_year
                if label[-3:] == "(-)":
                    label =label[:-3]
                self.doc.write_text(_("%s") %
                                    label)
                self.doc.end_paragraph()
                self.doc.end_cell()
    
    
                # Clan Name 
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                                             self.find_clan(pe)) 
                self.doc.end_paragraph()
                self.doc.end_cell()
    
                #Place of birth
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                             birth_place)
                self.doc.end_paragraph()
                self.doc.end_cell()
                
                #Place of death
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                             death_place)
                self.doc.end_paragraph()
                self.doc.end_cell()
                
                
    
                #Country of birth
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                             birth_country)
                self.doc.end_paragraph()
                self.doc.end_cell()
                
                #Country of death
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                self.doc.write_text(_("%s") %
                             death_country)
#                             death_country[4:])
                self.doc.end_paragraph()
                self.doc.end_cell()
                
                #Latitude of Place of Birth
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                lat_txt =""
                lon_txt =""
                if birth:
                    lat_txt, lon_txt = self.find_place_lat_lon(birth)
                self.doc.write_text(_("%s") %
                             lat_txt)
                self.doc.end_paragraph()
                self.doc.end_cell()
                
                #Longitude of Place of Birth
                self.doc.start_cell("SRC-Cell")
                self.doc.start_paragraph("SRC-SourceDetails")
                lat_txt =""
                lon_txt =""
                if birth:
                    lat_txt, lon_txt = self.find_place_lat_lon(birth)
                self.doc.write_text(_("%s") %
                             lon_txt)
                self.doc.end_paragraph()
                self.doc.end_cell()

    
    
                self.doc.end_row()
                        
            self.doc.end_table()
    def write_event(self, event_ref):
        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 = place_displayer.display_event(self.db, event, self.pl_format)

        self.doc.start_paragraph('DDR-MoreDetails')
        event_name = self._get_type(event.get_type())
        if date and place:
            text +=  self._('%(date)s, %(place)s') % { 
                       'date' : date, 'place' : place }
        elif date:
            text += self._('%(date)s') % {'date' : date}
        elif place:
            text += self._('%(place)s') % { 'place' : place }

        if event.get_description():
            if text:
                text += ". "
            text += event.get_description()
            
        text += self.endnotes(event)
        
        if text:
            text += ". "
            
        text = self._('%(event_name)s: %(event_text)s') % {
                             'event_name' : self._(event_name),
                             '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._("; ")
                attrName = attr.get_type().type2base()
                # translators: needed for French, ignore otherwise
                text += self._("%(type)s: %(value)s%(endnotes)s") % {
                                    'type'     : self._(attrName),
                                    'value'    : attr.get_value(),
                                    'endnotes' : self.endnotes(attr) }
            text = " " + text
            self.doc.write_text_citation(text)

        self.doc.end_paragraph()

        if self.inc_notes:
            # 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(),"DDR-MoreDetails",
                        contains_html= note.get_type() == NoteType.HTML_CODE)
    def listeventref(self, pl_format):
    
        sc = {'source': 'S_ID',
              'citalist': 'C_ID' }
        stc = {}      
        citation_without_notes = 0
        EMPTY = " "

        def toYear(date):
            yeartext = date.get_year()
            return yeartext
 
     # build citasource dictionary  and cl list 
        
        sc = defaultdict(list)
        cl = []
        i=1
        for ci in self.__db.iter_citations():
            if ci.source_handle in self.source_handles:
                sc[ci.source_handle].append(ci.handle)
                cl.append(ci.handle)

        # build citations - event dic                       xy
        #(a,b): set([('Citation', 'c4a8c46041e08799b17')]) 
        # event: c4a8c4f95b01e38564a event: Taufe
        ci = defaultdict(list)
        for ev in self.__db.iter_events():
            refhandlelist = ev.get_referenced_handles()   
            for (a,b) in refhandlelist:
                if a == 'Citation':
                    if b in cl:                    #!
                        ci[b].append(ev.handle)

        # build eventpersonrole dictionary
        # event: c4a8c4f95b01e38564a event: Taufe
        refhandlelist =[]
        pedic ={}
        pedic = defaultdict(list)

        for pe in self.__db.get_person_handles():
            for eventref in self.__db.get_person_from_handle(pe).event_ref_list:
                pedic[eventref.ref].append((eventref.get_role(),pe))


        # build eventfamily dictionary
        # event: c4a8c4f95b01e38564a event: Taufe
        refhandlelist =[]
        fedic ={}
        fedic = defaultdict(set)

        for fh in self.__db.get_family_handles():
            for eventref in self.__db.get_family_from_handle(fh).event_ref_list:
                family = self.__db.get_family_from_handle(eventref.ref)
                fedic[eventref.ref].add((self.__db.get_family_from_handle(fh).mother_handle,self.__db.get_family_from_handle(fh).father_handle,fh ))


        for s in sorted(sc.keys()):
            self._user.step_progress()
            self.doc.start_paragraph("SRC-SourceTitle")
            self.doc.write_text(self._formatlocal_source_text(self.__db.get_source_from_handle(s)))
            self.doc.end_paragraph()       
            
            self.doc.start_paragraph("SRC-SourceDetails")
            self.doc.write_text(_("   ID: %s") %
                                self.__db.get_source_from_handle(s).gramps_id) 
            self.doc.end_paragraph()  

            # note in sources
            for sourcenotehandle in self.__db.get_source_from_handle(s).get_note_list():
                self.doc.start_paragraph("SRC-NoteDetails")
                self.doc.write_text(_("   Type: %s") %
                                    self.__db.get_note_from_handle(sourcenotehandle).type) 
                self.doc.write_text(_("   N-ID: %s") %
                                    self.__db.get_note_from_handle(sourcenotehandle).gramps_id) 
                self.doc.end_paragraph()

                self.doc.start_paragraph("SRC-NoteText")
                self.doc.write_text(_("   %s") %
                                    self.__db.get_note_from_handle(sourcenotehandle).text) 
                self.doc.end_paragraph()
            i = 1
            ckeys = sc[s]
            if self.sort_by_citation:
                ckeys.sort(key=lambda x:self.__db.get_citation_from_handle(x).page)
            if self.sort_by_date:
                ckeys.sort(key=lambda x:self.__db.get_citation_from_handle(x).date)
            for c in ckeys:                                     
                       # c contains citationhandles      
                if self.sort_by_citation:
                    self._user.step_progress()
                    self.doc.start_paragraph("SRC-SourceDetails")
                    self.doc.write_text(_("%d") %
                                        i)  
                    self.doc.write_text(_("%s") % _DELIM)
                    self.doc.write_text(_("  %s") %
                                        self.__db.get_citation_from_handle(c).page)
                    self.doc.write_text(_("%s") % _DELIM)
                    self.doc.write_text(_("  ID: %s") %
                                        self.__db.get_citation_from_handle(c).gramps_id)
                    self.doc.write_text(_("%s") % _DELIM)
                    self.doc.write_text (_("%s ") % get_date(self.__db.get_citation_from_handle(c)))
                    self.doc.write_text(_("%s") % _DELIM)
                    i +=1
                

                elif self.sort_by_date:
                    self._user.step_progress()
                    self.doc.start_paragraph("SRC-SourceDetails")
                    self.doc.write_text (_("%s ") % get_date(self.__db.get_citation_from_handle(c)))
                    self.doc.write_text(_("%s") % _DELIM)
                    self.doc.write_text(_("%d") %
                                        i)  
                    self.doc.write_text(_("%s") % _DELIM)

                    t = ""
                    t = (_("  %s") % self.__db.get_citation_from_handle(c).page)
                    t = t + (_("%s") % _DELIM)
                    t = t + (_("  ID: %s") % self.__db.get_citation_from_handle(c).gramps_id)
                    t = t + (_("%s") % _DELIM)


#                    self.doc.write_text(_("  %s") %
#                                        self.__db.get_citation_from_handle(c).page)
#                    self.doc.write_text(_("%s") % _DELIM)
#                    self.doc.write_text(_("  ID: %s") %
#                                        self.__db.get_citation_from_handle(c).gramps_id)
#                    self.doc.write_text(_("%s") % _DELIM)
                    i +=1
                


#               # note in citations
#                for notehandle in self.__db.get_citation_from_handle(c).get_note_list():
#                    self._user.step_progress()
#                    self.doc.start_paragraph("SRC-NoteDetails")
#                    self.doc.write_text(_("   Type: %s") %
#                                        self.__db.get_note_from_handle(notehandle).type) 
#                    self.doc.write_text(_("   N-ID: %s") %
#                                        self.__db.get_note_from_handle(notehandle).gramps_id) 
#                    self.doc.end_paragraph()
#
#                    self.doc.start_paragraph("SRC-NoteDetails")
#                    self.doc.end_paragraph()
#
#                    self.doc.start_paragraph("SRC-NoteText")
#                    self.doc.write_text(_("   %s") %
#                                        self.__db.get_note_from_handle(notehandle).text) 
#                    self.doc.end_paragraph()

                    # event as table
                for e in ci[c]:
                   # if it is a familyevent
                    for k in fedic.keys():                         
                        if e == k:
                            for (a,b,c) in fedic[k]:
                                self.doc.write_text(_("Event: %s") %
                                self.__db.get_event_from_handle(e).get_type())
                                self.doc.write_text(_("%s") % _DELIM)
                                self.doc.write_text(_("   ( %s )") %
                                                    self.__db.get_event_from_handle(e).gramps_id)
                                self.doc.write_text(_("%s") % _DELIM)
                                place_d = place_displayer.display_event(self.__db, self.__db.get_event_from_handle(e), pl_format)
                                self.doc.write_text(_(" Ort: %s ") %
                                                    place_d)
                                self.doc.write_text(_("%s") % _DELIM)

                                
                                self.doc.write_text(_("Paar: "))
                                try:
                                    self.doc.write_text(_(" %s ") %  
                                                    self.__db.get_person_from_handle(b).primary_name.get_name()) 
                                    primarypersonAhandle = b             

                                except:
                                    self.doc.write_text(_("unknown"))                                           
                                try:
                                    self.doc.write_text(_(" and %s ") % 
                                                    self.__db.get_person_from_handle(a).primary_name.get_name())
                                    primarypersonBhandle = a  
                                except:
                                     self.doc.write_text(_("and unknown"))
                                self.doc.write_text(_("%s") % _DELIM)
#UPAAR
                            if self.showperson:
                                liste = pedic[e].copy() 
                                self.personline(liste, 1, 0, primarypersonAhandle, primarypersonBhandle)

                    for (a,b) in pedic[e]:
                        if a.is_primary():   
                            self.doc.write_text(_("Event: %s") %
                                          self.__db.get_event_from_handle(e).get_type())
                            self.doc.write_text(_("   ( %s )") %
                                          self.__db.get_event_from_handle(e).gramps_id)
                            self.doc.write_text(_(" %s") %
                                            self.__db.get_person_from_handle(b).primary_name.get_name()) 
                            self.doc.write_text(_("%s") % _DELIM)                                            
                            place_d = place_displayer.display_event(self.__db, self.__db.get_event_from_handle(e), pl_format)
                            self.doc.write_text(_(" Ort: %s ") %
                                                place_d)
                            self.doc.write_text(_("%s") % _DELIM)
                            primarypersonhandle = b 
                            prim_familyhandle = self.__db.get_person_from_handle(b).get_main_parents_family_handle()

                            
                            if self.showperson:
                                liste = pedic[e].copy() 
                                if prim_familyhandle:
                                    if self.__db.get_family_from_handle(prim_familyhandle).get_father_handle():
                                        liste.append(("Vater",self.__db.get_family_from_handle(prim_familyhandle).get_father_handle()))
                                self.personline(liste, 0, primarypersonhandle, 0, 0)
                if self.sort_by_date:
                    self.doc.write_text (_("Fundstelle: %s ") % t)
                
                self.doc.end_paragraph()
Esempio n. 10
0
    def write_event(self, event_ref):
        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 = place_displayer.display_event(self.db, event, self.pl_format)

        self.doc.start_paragraph('DDR-MoreDetails')
        event_name = self._get_type(event.get_type())
        if date and place:
            text += self._('%(date)s, %(place)s') % {
                'date': date,
                'place': place
            }
        elif date:
            text += self._('%(date)s') % {'date': date}
        elif place:
            text += self._('%(place)s') % {'place': place}

        if event.get_description():
            if text:
                text += ". "
            text += event.get_description()

        text += self.endnotes(event)

        if text:
            text += ". "

        text = self._('%(event_name)s: %(event_text)s') % {
            'event_name': self._(event_name),
            '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._("; ")
                attrName = attr.get_type().type2base()
                # translators: needed for French, ignore otherwise
                text += self._("%(type)s: %(value)s%(endnotes)s") % {
                    'type': self._(attrName),
                    'value': attr.get_value(),
                    'endnotes': self.endnotes(attr)
                }
            text = " " + text
            self.doc.write_text_citation(text)

        self.doc.end_paragraph()

        if self.inc_notes:
            # 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(),
                    "DDR-MoreDetails",
                    contains_html=note.get_type() == NoteType.HTML_CODE)