def write_report(self): """ This function is called by the report system and writes the report. """ if self.numbering == "Henry": self.apply_henry_filter(self.center_person.get_handle(), 1, "1") elif self.numbering == "d'Aboville": self.apply_daboville_filter(self.center_person.get_handle(), 1, "1") elif self.numbering == "Record (Modified Register)": self.apply_mod_reg_filter(self.center_person.get_handle()) else: raise AttributeError("no such numbering: '%s'" % self.numbering) name = self._name_display.display_name( self.center_person.get_primary_name()) self.doc.start_paragraph("DDR-Title") # feature request 2356: avoid genitive form title = self._("Descendant Report for %(person_name)s") % { 'person_name': name } mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() generation = 0 self.numbers_printed = list() for generation in xrange(len(self.gen_keys)): if self.pgbrk and generation > 0: self.doc.page_break() self.doc.start_paragraph("DDR-Generation") text = self._("Generation %d") % (generation + 1) mark = IndexMark(text, INDEX_TYPE_TOC, 2) self.doc.write_text(text, mark) self.doc.end_paragraph() if self.childref: self.prev_gen_handles = self.gen_handles.copy() self.gen_handles.clear() for key in self.gen_keys[generation]: person_handle = self.map[key] self.gen_handles[person_handle] = key self.write_person(key) if self.inc_sources: if self.pgbrkenotes: self.doc.page_break() # it ignores language set for Note type (use locale) endnotes.write_endnotes(self.bibli, self.database, self.doc, printnotes=self.inc_srcnotes)
def get_person_mark(db, person): """ Return a IndexMark that can be used to index a person in a report @param db: the GRAMPS database instance @param person: the the key is for """ if not person: return None name = person.get_primary_name().get_name() birth = " " death = " " key = "" birth_ref = person.get_birth_ref() if birth_ref: birthEvt = db.get_event_from_handle(birth_ref.ref) birth = DateHandler.get_date(birthEvt) death_ref = person.get_death_ref() if death_ref: deathEvt = db.get_event_from_handle(death_ref.ref) death = DateHandler.get_date(deathEvt) if birth == death == " ": key = name else: key = "%s (%s - %s)" % (name, birth, death) return IndexMark(key, INDEX_TYPE_ALP)
def write_report(self): """ The routine the actually creates the report. At this point, the document is opened and ready for writing. """ pname = self._name_display.display(self.center_person) self.doc.start_paragraph("EOL-Title") # feature request 2356: avoid genitive form title = _("End of Line Report for %s") % pname mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() self.doc.start_paragraph("EOL-Subtitle") # feature request 2356: avoid genitive form title = _("All the ancestors of %s who are missing a parent") % pname self.doc.write_text(title) self.doc.end_paragraph() self.doc.start_table('EolTable','EOL-Table') for generation, handles in self.eol_map.iteritems(): self.write_generation_row(generation) for person_handle, pedigrees in handles.iteritems(): self.write_person_row(person_handle) map(self.write_pedigree_row, pedigrees) self.doc.end_table()
def write_report(self): """ Overridden function to generate the report. """ self.doc.start_paragraph("SRC-ReportTitle") title = self.title_string mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() self.doc.start_paragraph("SRC-ReportTitle") title = self.subtitle_string mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() self.listeventref()
def write_people(self, title, people_handles): """ Write information about a group of people - including the title. """ cap_title = title[0].upper() + title[1:] subtitle = "%s (%d)" % (cap_title, len(people_handles)) self.doc.start_paragraph("KIN-Subtitle") mark = IndexMark(cap_title, INDEX_TYPE_TOC, 2) self.doc.write_text(subtitle, mark) self.doc.end_paragraph() map(self.write_person, people_handles)
def write_report(self): self.doc.start_paragraph("DR-Title") name = self._name_display.display(self.center_person) # feature request 2356: avoid genitive form title = _("Descendants of %s") % name mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() recurse = RecurseDown(self.max_generations, self.database, self.objPrint, self._showdups) recurse.recurse(1, self.center_person, None)
def write_report(self): self.doc.start_paragraph("TR-Title") # feature request 2356: avoid genitive form title = _("Tag Report for %s Items") % self.tag mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() self.write_people() self.write_families() #self.write_events() self.write_notes() self.write_media()
def write_report(self): """ Overridden function to generate the report. """ self.doc.start_paragraph("SR-Title") title = _("Database Summary Report") mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() self.summarize_people() self.summarize_families() self.summarize_media()
def write_report(self): """ The routine the actually creates the report. At this point, the document is opened and ready for writing. """ # Write the title line. Set in INDEX marker so that this section will be # identified as a major category if this is included in a Book report. title = _("Place Report") mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.start_paragraph("PLC-ReportTitle") self.doc.write_text(title, mark) self.doc.end_paragraph() self.__write_all_places()
def dump_family(self, family_handle, generation): self.doc.start_paragraph('FGR-Title') if self.recursive and self.generations: title = _("Family Group Report - Generation %d") % generation else: title = _("Family Group Report") mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() family = self.database.get_family_from_handle(family_handle) self.dump_parent(_("Husband"), family.get_father_handle()) self.doc.start_paragraph("FGR-blank") self.doc.end_paragraph() if self.incParMar: self.dump_marriage(family) self.doc.start_paragraph("FGR-blank") self.doc.end_paragraph() self.dump_parent(_("Wife"), family.get_mother_handle()) length = len(family.get_child_ref_list()) if length > 0: self.doc.start_paragraph("FGR-blank") self.doc.end_paragraph() self.doc.start_table('FGR-Children', 'FGR-ChildTable') self.doc.start_row() self.doc.start_cell('FGR-ParentHead', 4) self.doc.start_paragraph('FGR-ParentName') self.doc.write_text(_("Children")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() index = 1 for child_ref in family.get_child_ref_list(): self.dump_child(index, child_ref.ref) index += 1 self.doc.end_table() if self.recursive: for child_ref in family.get_child_ref_list(): child = self.database.get_person_from_handle(child_ref.ref) for child_family_handle in child.get_family_handle_list(): if child_family_handle != family_handle: self.doc.page_break() self.dump_family(child_family_handle, (generation + 1))
def write_report(self): """ The routine the actually creates the report. At this point, the document is opened and ready for writing. """ pname = self._name_display.display(self.person) self.doc.start_paragraph("KIN-Title") # feature request 2356: avoid genitive form title = _("Kinship Report for %s") % pname mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() if self.inc_spouses: spouse_handles = self.get_spouse_handles(self.person.get_handle()) if spouse_handles: self.write_people(_("Spouses"), spouse_handles) # Collect all descendants of the person self.traverse_down(self.person.get_handle(), 0, 1) # Collect all ancestors/aunts/uncles/nephews/cousins of the person self.traverse_up(self.person.get_handle(), 1, 0) # Write Kin for Ga, Gbs in self.kinship_map.iteritems(): for Gb in Gbs: # To understand these calculations, see: # http://en.wikipedia.org/wiki/Cousin#Mathematical_definitions x = min (Ga, Gb) y = abs(Ga-Gb) # Skip unrequested people if x == 1 and y > 0 and not self.inc_aunts: continue elif x > 1 and not self.inc_cousins: continue get_rel_str = self.rel_calc.get_plural_relationship_string title = get_rel_str(Ga, Gb, in_law_b=False) self.write_people(title, self.kinship_map[Ga][Gb]) if (self.inc_spouses and Ga in self.spouse_map and Gb in self.spouse_map[Ga]): title = get_rel_str(Ga, Gb, in_law_b=True) self.write_people(title, self.spouse_map[Ga][Gb])
def write_report(self): """ The routine the actually creates the report. At this point, the document is opened and ready for writing. """ name = self._name_display.display(self.center_person) self.title = _("AncestorFill for %s") % name self.doc.start_paragraph("AHN-Title") mark = IndexMark(self.title, INDEX_TYPE_TOC, 1) self.doc.write_text(self.title, mark) self.doc.end_paragraph() total = 0 longueur = 1 gen = 0 percent = 100 nbhand = 1 implexe = 0 theor = '' self.apply_filter(self.center_person.get_handle(), 1) strgen = _("Generation ") strfoundanc = _(" Number of Ancestors found ") pctfoundanc = _(" percent of Ancestors found ") uniqfoundanc = _(" Number of single Ancestors found ") strtheoanc = _(" Number of theorical Ancestors ") strimplex = _(" Pedigree Collapse ") if self.displayth: form = strgen + "%2d; " + strfoundanc + "%12d;" + strtheoanc + str(theor) + "; " + pctfoundanc +" %." + str(self.Filleddigit) + "f%% " + " ; " + uniqfoundanc + " %6d; " + strimplex + "%3." + str(self.Collapsedigit) + "f%%" else: form = strgen + "%2d; " + strfoundanc + "%12d;" + pctfoundanc +" %." + str(self.Filleddigit) + "f%% " + " ; " + uniqfoundanc + " %6d; " + strimplex + "%3." + str(self.Collapsedigit) + "f%%" text = _( form % ( gen , longueur , percent , nbhand , implexe )) self.doc.start_paragraph("AHN-Generation") self.doc.write_text(text) self.doc.end_paragraph() for gen in range(0, self.max_generations): nextgen = gen + 1 for gid in self.gener[gen].keys(): for id2 in self.index[gid]: if id2: self.gener[nextgen][id2] += self.gener[gen][gid] longueur = 0 nbhand = 0 msg = "GEN " + str (nextgen) for hand in self.gener[nextgen].keys(): msg = msg + " " + str(hand) longueur += self.gener[nextgen][hand] nbhand += 1 theor = 2 ** nextgen percent = longueur * 100.0 / theor total = total + longueur if not nbhand: implexe = 0 else: implexe = float(longueur-nbhand)*100.0 / longueur if longueur == 0: next else: self.doc.start_paragraph("AHN-Generation") if self.displayth: form = strgen + "%2d; " + strfoundanc + "%12d;" + strtheoanc + str(theor) + "; " + pctfoundanc +" %." + str(self.Filleddigit) + "f%% " + " ; " + uniqfoundanc + " %6d; " + strimplex + "%3." + str(self.Collapsedigit) + "f%%" else: form = strgen + "%2d; " + strfoundanc + "%12d;" + pctfoundanc +" %." + str(self.Filleddigit) + "f%% " + " ; " + uniqfoundanc + " %6d; " + strimplex + "%3." + str(self.Collapsedigit) + "f%%" text = _( form % ( nextgen , longueur , percent , nbhand , implexe )) self.doc.write_text(text) self.doc.end_paragraph() totalnbanc = len(self.trouve) timplexe= ( total - totalnbanc) * 100.0 / total strtotalanc = _(" Total Number of Ancestors found ") form = strtotalanc + "%d; " totaluniqfoundanc = _(" Total Number of single Ancestors found ") form2 = totaluniqfoundanc + "%d; " form3 = strimplex + "%3." + str(self.Collapsedigit) + "f%%" text = _( form % ( total )) + " " + _( form2 % ( totalnbanc )) + _( form3 % ( timplexe )) self.doc.start_paragraph("AHN-Generation") self.doc.write_text(text) self.doc.end_paragraph() name = self._name_display.display_formal(self.center_person)
def write_report(self): """ The routine the actually creates the report. At this point, the document is opened and ready for writing. """ thisgen = {} all_people = {} total_theoretical = 0 thisgen[self.__person.get_handle()] = 1 self.doc.start_paragraph("NOA-Title") name = self._name_display.display(self.__person) # feature request 2356: avoid genitive form title = _("Number of Ancestors for %s") % name mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.write_text(title, mark) self.doc.end_paragraph() thisgensize = 1 gen = 0 while thisgensize > 0: thisgensize = 0 if thisgen != {}: thisgensize = len(thisgen) gen += 1 theoretical = math.pow(2, (gen - 1)) total_theoretical += theoretical percent = '(%s%%)' % locale.format('%3.2f', ( (sum(thisgen.itervalues()) / theoretical) * 100)) # TC # English return something like: # Generation 3 has 2 individuals. (50.00%) text = ngettext( "Generation %(generation)d has %(count)d individual. %(percent)s", "Generation %(generation)d has %(count)d individuals. %(percent)s", thisgensize) % { 'generation': gen, 'count': thisgensize, 'percent': percent } self.doc.start_paragraph('NOA-Normal') self.doc.write_text(text) self.doc.end_paragraph() temp = thisgen thisgen = {} for person_handle, person_data in temp.iteritems(): person = self.__db.get_person_from_handle(person_handle) family_handle = person.get_main_parents_family_handle() if family_handle: family = self.__db.get_family_from_handle(family_handle) father_handle = family.get_father_handle() mother_handle = family.get_mother_handle() if father_handle: thisgen[father_handle] = ( thisgen.get(father_handle, 0) + person_data) all_people[father_handle] = ( all_people.get(father_handle, 0) + person_data) if mother_handle: thisgen[mother_handle] = ( thisgen.get(mother_handle, 0) + person_data) all_people[mother_handle] = ( all_people.get(mother_handle, 0) + person_data) if (total_theoretical != 1): percent = '(%3.2f%%)' % ((sum(all_people.itervalues()) / (total_theoretical - 1)) * 100) else: percent = 0 # TC # English return something like: # Total ancestors in generations 2 to 3 is 4. (66.67%) text = _("Total ancestors in generations %(second_generation)d to " "%(last_generation)d is %(count)d. %(percent)s") % { 'second_generation': 2, 'last_generation': gen, 'count': len(all_people), 'percent': percent } self.doc.start_paragraph('NOA-Normal') self.doc.write_text(text) self.doc.end_paragraph()
def write_person(self, count): if count != 0: self.doc.page_break() self.bibli = Bibliography(Bibliography.MODE_DATE | Bibliography.MODE_PAGE) media_list = self.person.get_media_list() name = self._name_display.display(self.person) # feature request 2356: avoid genitive form title = _("Summary of %s") % name mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.start_paragraph("IDS-Title") self.doc.write_text(title, mark) self.doc.end_paragraph() self.doc.start_paragraph("IDS-Normal") self.doc.end_paragraph() name = self.person.get_primary_name() text = self._name_display.display_name(name) mark = ReportUtils.get_person_mark(self.database, self.person) endnotes = "" if self.use_srcs: endnotes = Endnotes.cite_source(self.bibli, self.database, name) family_handle = self.person.get_main_parents_family_handle() if family_handle: family = self.database.get_family_from_handle(family_handle) father_inst_id = family.get_father_handle() if father_inst_id: father_inst = self.database.get_person_from_handle( father_inst_id) father = self._name_display.display(father_inst) fmark = ReportUtils.get_person_mark(self.database, father_inst) else: father = "" fmark = None mother_inst_id = family.get_mother_handle() if mother_inst_id: mother_inst = self.database.get_person_from_handle( mother_inst_id) mother = self._name_display.display(mother_inst) mmark = ReportUtils.get_person_mark(self.database, mother_inst) else: mother = "" mmark = None else: father = "" fmark = None mother = "" mmark = None self.doc.start_table('person', 'IDS-PersonTable') self.doc.start_row() self.doc.start_cell('IDS-NormalCell') self.normal_paragraph("%s:" % _("Name")) self.normal_paragraph("%s:" % _("Gender")) self.normal_paragraph("%s:" % _("Father")) self.normal_paragraph("%s:" % _("Mother")) self.doc.end_cell() self.doc.start_cell('IDS-NormalCell') self.normal_paragraph(text, endnotes, mark) if self.person.get_gender() == Person.MALE: self.normal_paragraph(_("Male")) elif self.person.get_gender() == Person.FEMALE: self.normal_paragraph(_("Female")) else: self.normal_paragraph(_("Unknown")) self.normal_paragraph(father, mark=fmark) self.normal_paragraph(mother, mark=mmark) self.doc.end_cell() self.doc.start_cell('IDS-NormalCell') if self.use_images and len(media_list) > 0: media0 = media_list[0] media_handle = media0.get_reference_handle() media = self.database.get_object_from_handle(media_handle) mime_type = media.get_mime_type() if mime_type and mime_type.startswith("image"): filename = media_path_full(self.database, media.get_path()) if os.path.exists(filename): self.doc.add_media_object(filename, "right", 4.0, 4.0, crop=media0.get_rectangle()) else: self._user.warn( _("Could not add photo to page"), "%s: %s" % (filename, _('File does not exist'))) self.doc.end_cell() self.doc.end_row() self.doc.end_table() self.doc.start_paragraph("IDS-Normal") self.doc.end_paragraph() self.write_alt_names() self.write_events() self.write_alt_parents() self.write_families() self.write_addresses() self.write_note() if self.use_srcs: if self.use_pagebreak and self.bibli.get_citation_count(): self.doc.page_break() Endnotes.write_endnotes(self.bibli, self.database, self.doc, printnotes=self.use_srcs_notes)
def write_families(self): flist = self.database.iter_family_handles() FilterClass = GenericFilterFactory('Family') filter = FilterClass() filter.add_rule(Rules.Family.HasTag([self.tag])) fam_list = filter.apply(self.database, flist) if not fam_list: return self.doc.start_paragraph("TR-Heading") header = _("Families") mark = IndexMark(header, INDEX_TYPE_TOC, 2) self.doc.write_text(header, mark) self.doc.end_paragraph() self.doc.start_table('FamilyTable', 'TR-Table') self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Id")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Father")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Mother")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Relationship")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() for family_handle in fam_list: family = self.database.get_family_from_handle(family_handle) self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(family.get_gramps_id()) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') father_handle = family.get_father_handle() if father_handle: father = self.database.get_person_from_handle(father_handle) mark = ReportUtils.get_person_mark(self.database, father) self.doc.write_text(name_displayer.display(father), mark) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') mother_handle = family.get_mother_handle() if mother_handle: mother = self.database.get_person_from_handle(mother_handle) mark = ReportUtils.get_person_mark(self.database, mother) self.doc.write_text(name_displayer.display(mother), mark) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') relation = family.get_relationship() self.doc.write_text(str(relation)) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table()
def write_report(self): """ The routine the actually creates the report. At this point, the document is opened and ready for writing. """ # Call apply_filter to build the self.map array of people in the # database that match the ancestry. self.apply_filter(self.center_person.get_handle(), 1) # Write the title line. Set in INDEX marker so that this section will be # identified as a major category if this is included in a Book report. name = self._name_display.display_formal(self.center_person) # feature request 2356: avoid genitive form title = self._("Ahnentafel Report for %s") % name mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.start_paragraph("AHN-Title") self.doc.write_text(title, mark) self.doc.end_paragraph() # get the entries out of the map, and sort them. generation = 0 for key in sorted(self.map): # check the index number to see if we need to start a new generation if generation == log2(key): # generate a page break if requested if self.pgbrk and generation > 0: self.doc.page_break() generation += 1 # Create the Generation title, set an index marker mark = IndexMark(title, INDEX_TYPE_TOC, 2) self.doc.start_paragraph("AHN-Generation") self.doc.write_text(self._("Generation %d") % generation, mark) self.doc.end_paragraph() # Build the entry self.doc.start_paragraph("AHN-Entry", "%d." % key) person = self.database.get_person_from_handle(self.map[key]) name = self._name_display.display(person) mark = ReportUtils.get_person_mark(self.database, person) # write the name in bold self.doc.start_bold() self.doc.write_text(name.strip(), mark) self.doc.end_bold() # terminate with a period if it is not already terminated. # This can happen if the person's name ends with something 'Jr.' if name[-1:] == '.': self.doc.write_text(" ") else: self.doc.write_text(". ") # Add a line break if requested (not implemented yet) if self.opt_namebrk: self.doc.write_text('\n') self.__narrator.set_subject(person) self.doc.write_text(self.__narrator.get_born_string()) self.doc.write_text(self.__narrator.get_baptised_string()) self.doc.write_text(self.__narrator.get_christened_string()) self.doc.write_text(self.__narrator.get_died_string()) self.doc.write_text(self.__narrator.get_buried_string()) self.doc.end_paragraph()
def write_people(self): plist = self.database.iter_person_handles() FilterClass = GenericFilterFactory('Person') filter = FilterClass() filter.add_rule(Rules.Person.HasTag([self.tag])) ind_list = filter.apply(self.database, plist) if not ind_list: return self.doc.start_paragraph("TR-Heading") header = _("People") mark = IndexMark(header, INDEX_TYPE_TOC, 2) self.doc.write_text(header, mark) self.doc.end_paragraph() self.doc.start_table('PeopleTable', 'TR-Table') self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Id")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Name")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Birth")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Death")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() for person_handle in ind_list: person = self.database.get_person_from_handle(person_handle) self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(person.get_gramps_id()) self.doc.end_paragraph() self.doc.end_cell() name = name_displayer.display(person) mark = ReportUtils.get_person_mark(self.database, person) self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(name, mark) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') birth_ref = person.get_birth_ref() if birth_ref: event = self.database.get_event_from_handle(birth_ref.ref) self.doc.write_text(DateHandler.get_date(event)) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') death_ref = person.get_death_ref() if death_ref: event = self.database.get_event_from_handle(death_ref.ref) self.doc.write_text(DateHandler.get_date(event)) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table()
def write_media(self): mlist = self.database.get_media_object_handles(sort_handles=True) FilterClass = GenericFilterFactory('MediaObject') filter = FilterClass() filter.add_rule(Rules.MediaObject.HasTag([self.tag])) media_list = filter.apply(self.database, mlist) if not media_list: return self.doc.start_paragraph("TR-Heading") header = _("Media") mark = IndexMark(header, INDEX_TYPE_TOC, 2) self.doc.write_text(header, mark) self.doc.end_paragraph() self.doc.start_table('MediaTable', 'TR-Table') self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Id")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Title")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Type")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Date")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() for media_handle in media_list: media = self.database.get_object_from_handle(media_handle) self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(media.get_gramps_id()) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') title = media.get_description() self.doc.write_text(str(title)) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') mime_type = media.get_mime_type() self.doc.write_text(str(mime_type)) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') date = DateHandler.get_date(media) if date: self.doc.write_text(date) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table()
def write_notes(self): nlist = self.database.get_note_handles() FilterClass = GenericFilterFactory('Note') filter = FilterClass() filter.add_rule(Rules.Note.HasTag([self.tag])) note_list = filter.apply(self.database, nlist) if not note_list: return self.doc.start_paragraph("TR-Heading") header = _("Notes") mark = IndexMark(header, INDEX_TYPE_TOC, 2) self.doc.write_text(header, mark) self.doc.end_paragraph() self.doc.start_table('NoteTable', 'TR-Table') self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Id")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Type")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell', 2) self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Text")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() for note_handle in note_list: note = self.database.get_note_from_handle(note_handle) self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(note.get_gramps_id()) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') type = note.get_type() self.doc.write_text(str(type)) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell', 2) self.doc.write_styled_note( note.get_styledtext(), note.get_format(), 'TR-Note', contains_html=(note.get_type() == NoteType.HTML_CODE)) self.doc.end_cell() self.doc.end_row() self.doc.end_table()
def write_events(self): # At the time of this writing, the GRAMPS UI does not allow the setting # of tags for events. elist = self.database.get_event_handles() FilterClass = GenericFilterFactory('Event') filter = FilterClass() filter.add_rule(Rules.Event.HasTag([self.tag])) event_list = filter.apply(self.database, elist) if not event_list: return self.doc.start_paragraph("TR-Heading") header = _("Events") mark = IndexMark(header, INDEX_TYPE_TOC, 2) self.doc.write_text(header, mark) self.doc.end_paragraph() self.doc.start_table('EventTable', 'TR-Table') self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Id")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Date")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Place")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(_("Description")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() for event_handle in event_list: event = self.database.get_event_from_handle(event_handle) self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(event.get_gramps_id()) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') date = DateHandler.get_date(event) if date: self.doc.write_text(date) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') place_handle = event.get_place_handle() place = ReportUtils.place_name(self.database, place_handle) if place: self.doc.write_text(place) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') descr = event.get_description() if descr: self.doc.write_text(descr) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table()