def get_source_by_handle(db_handle: DbReadBase, handle: Handle, args: Optional[Dict] = None) -> Source: """Get a source and optional extended attributes.""" args = args or {} obj = db_handle.get_source_from_handle(handle) if "extend" in args: obj.extended = get_extended_attributes(db_handle, obj, args) return obj
def get_citation_profile_for_object( db_handle: DbReadBase, citation: Citation, args: List, locale: GrampsLocale = glocale, ) -> Citation: """Get citation profile given a Citation.""" source = db_handle.get_source_from_handle(citation.source_handle) return { "source": { "author": source.author, "title": source.title, "pubinfo": source.pubinfo, "gramps_id": source.gramps_id, }, "gramps_id": citation.gramps_id, "date": locale.date_displayer.display(citation.date), "page": citation.page, }