def get_citation_grampsids(db: DbReadBase, obj: GrampsObject) -> List[GrampsId]: """Get the Gramps IDs of direct citations of a Gramps object.""" return [ db.get_citation_from_handle(handle).gramps_id for handle in obj.get_citation_list() ]
def get_extended_attributes( db_handle: DbReadBase, obj: GrampsObject, args: Optional[Dict] = None ) -> Dict: """Get extended attributes for a GrampsObject.""" args = args or {} result = {} do_all = False if "all" in args["extend"]: do_all = True if (do_all or "child_ref_list" in args["extend"]) and hasattr( obj, "child_ref_list" ): result["children"] = [ db_handle.get_person_from_handle(child_ref.ref) for child_ref in obj.child_ref_list ] if (do_all or "citation_list" in args["extend"]) and hasattr(obj, "citation_list"): result["citations"] = [ db_handle.get_citation_from_handle(handle) for handle in obj.citation_list ] if (do_all or "event_ref_list" in args["extend"]) and hasattr( obj, "event_ref_list" ): result["events"] = [ db_handle.get_event_from_handle(event_ref.ref) for event_ref in obj.event_ref_list ] if (do_all or "media_list" in args["extend"]) and hasattr(obj, "media_list"): result["media"] = [ db_handle.get_media_from_handle(media_ref.ref) for media_ref in obj.media_list ] if (do_all or "note_list" in args["extend"]) and hasattr(obj, "note_list"): result["notes"] = [ db_handle.get_note_from_handle(handle) for handle in obj.note_list ] if (do_all or "person_ref_list" in args["extend"]) and hasattr( obj, "person_ref_list" ): result["people"] = [ db_handle.get_person_from_handle(person_ref.ref) for person_ref in obj.person_ref_list ] if (do_all or "reporef_list" in args["extend"]) and hasattr(obj, "reporef_list"): result["repositories"] = [ db_handle.get_repository_from_handle(repo_ref.ref) for repo_ref in obj.reporef_list ] if (do_all or "tag_list" in args["extend"]) and hasattr(obj, "tag_list"): result["tags"] = [ db_handle.get_tag_from_handle(handle) for handle in obj.tag_list ] if (do_all or "backlinks" in args["extend"]) and hasattr(obj, "backlinks"): result["backlinks"] = {} for class_name, backlinks in obj.backlinks.items(): result["backlinks"][class_name] = [ db_handle.method("get_%s_from_handle", class_name.upper())(handle) for handle in backlinks ] return result
def get_citation_profile_for_handle( db_handle: DbReadBase, handle: Handle, args: List, locale: GrampsLocale = glocale ) -> Union[Family, Dict]: """Get citation profile given a handle.""" try: obj = db_handle.get_citation_from_handle(handle) except HandleError: return {} return get_citation_profile_for_object(db_handle, obj, args, locale=locale)
def get_rating(db_handle: DbReadBase, obj: GrampsObject) -> Tuple[int, int]: """Return rating based on citations.""" count = 0 confidence = 0 if hasattr(obj, "citation_list"): count = len(obj.citation_list) if hasattr(obj, "extended") and "citations" in obj.extended: for citation in obj.extended["citations"]: if citation.confidence > confidence: confidence = citation.confidence else: for handle in obj.citation_list: citation = db_handle.get_citation_from_handle(handle) if citation.confidence > confidence: confidence = citation.confidence return count, confidence