def get_parents_grampsids(db: DbReadBase, person: Person) -> Optional[GrampsId]: """Get the Gramps IDs of the family's parents.""" handle = person.get_main_parents_family_handle() try: return db.get_family_from_handle(handle).gramps_id except HandleError: return None
def get_family_profile_for_handle( db_handle: DbReadBase, handle: Handle, args: List, locale: GrampsLocale = glocale ) -> Union[Family, Dict]: """Get family profile given a handle.""" try: obj = db_handle.get_family_from_handle(handle) except HandleError: return {} return get_family_profile_for_object(db_handle, obj, args, locale=locale)
def get_family_profile_for_handle( db_handle: DbReadBase, handle: Handle, with_events: bool = True) -> Optional[Family]: """Get family profile given a handle.""" try: obj = db_handle.get_family_from_handle(handle) except HandleError: return None return get_family_profile_for_object(db_handle, obj, with_events)
def get_family_by_handle( db_handle: DbReadBase, handle: Handle, args: Optional[Dict] = None ) -> Union[Family, Dict]: """Get a family and optional extended attributes.""" try: obj = db_handle.get_family_from_handle(handle) except HandleError: return {} args = args or {} if "extend" in args: obj.extended = get_extended_attributes(db_handle, obj, args) if "all" in args["extend"] or "father" in args["extend"]: obj.extended["father"] = get_person_by_handle(db_handle, obj.father_handle) if "all" in args["extend"] or "mother" in args["extend"]: obj.extended["mother"] = get_person_by_handle(db_handle, obj.mother_handle) return obj
def get_event_participants_for_handle( db_handle: DbReadBase, handle: Handle, locale: GrampsLocale = glocale, ) -> Dict: """Get event participants given a handle.""" result = {"people": [], "families": []} seen = set() # to avoid duplicates for class_name, backref_handle in db_handle.find_backlink_handles( handle, include_classes=["Person", "Family"] ): if backref_handle in seen: continue seen.add(backref_handle) if class_name == "Person": person = db_handle.get_person_from_handle(backref_handle) if not person: continue for event_ref in person.get_event_ref_list(): if handle == event_ref.ref: result["people"].append( { "role": locale.translation.sgettext( event_ref.get_role().xml_str() ), "person": get_person_profile_for_handle( db_handle, backref_handle, args=[], locale=locale ), } ) elif class_name == "Family": family = db_handle.get_family_from_handle(backref_handle) if not family: continue for event_ref in family.get_event_ref_list(): if handle == event_ref.ref: result["families"].append( { "role": locale.translation.sgettext( event_ref.get_role().xml_str() ), "family": get_family_profile_for_handle( db_handle, backref_handle, args=[], locale=locale ), } ) return result
def get_families_grampsids(db: DbReadBase, person: Person) -> List[GrampsId]: """Get the Gramps IDs of all the person's families.""" handles = person.get_family_handle_list() or [] return [db.get_family_from_handle(handle).gramps_id for handle in handles]