def delete_citation(db_handle: DbWriteBase, handle: str, trans: DbTxn) -> None: """Delete an event and its references.""" ( person_list, family_list, event_list, place_list, source_list, media_list, repo_list, ) = get_citation_referents(handle, db_handle) citation = db_handle.get_citation_from_handle(handle) ctn_handle_list = [handle] for _handle in person_list: person = db_handle.get_person_from_handle(_handle) person.remove_citation_references(ctn_handle_list) db_handle.commit_person(person, trans) for _handle in family_list: family = db_handle.get_family_from_handle(_handle) family.remove_citation_references(ctn_handle_list) db_handle.commit_family(family, trans) for _handle in event_list: event = db_handle.get_event_from_handle(_handle) event.remove_citation_references(ctn_handle_list) db_handle.commit_event(event, trans) for _handle in place_list: place = db_handle.get_place_from_handle(_handle) place.remove_citation_references(ctn_handle_list) db_handle.commit_place(place, trans) for _handle in source_list: source = db_handle.get_source_from_handle(_handle) source.remove_citation_references(ctn_handle_list) db_handle.commit_source(source, trans) for _handle in media_list: media = db_handle.get_media_from_handle(_handle) media.remove_citation_references(ctn_handle_list) db_handle.commit_media(media, trans) for _handle in repo_list: repo = db_handle.get_repository_from_handle(_handle) repo.remove_citation_references(ctn_handle_list) db_handle.commit_repository(repo, trans) db_handle.remove_citation(citation.get_handle(), trans)
def delete_source(db_handle: DbWriteBase, handle: str, trans: DbTxn) -> None: """Delete a source and its references.""" # we can have: # object(CitationBase) -> Citation(source_handle) -> Source # We first have to remove the CitationBase references to the # Citation. Then we remove the Citations. (We don't need to # remove the source_handle references to the Source, because we are # removing the whole Citation). Then we can remove the Source (citation_list, citation_referents_list) = get_source_and_citation_referents( handle, db_handle) # citation_list is a tuple of lists. Only the first, for Citations, # exists. citation_list = citation_list[0] # (1) delete the references to the citation for (citation_handle, refs) in citation_referents_list: ( person_list, family_list, event_list, place_list, source_list, media_list, repo_list, ) = refs ctn_handle_list = [citation_handle] for _handle in person_list: person = db_handle.get_person_from_handle(_handle) person.remove_citation_references(ctn_handle_list) db_handle.commit_person(person, trans) for _handle in family_list: family = db_handle.get_family_from_handle(_handle) family.remove_citation_references(ctn_handle_list) db_handle.commit_family(family, trans) for _handle in event_list: event = db_handle.get_event_from_handle(_handle) event.remove_citation_references(ctn_handle_list) db_handle.commit_event(event, trans) for _handle in place_list: place = db_handle.get_place_from_handle(_handle) place.remove_citation_references(ctn_handle_list) db_handle.commit_place(place, trans) for _handle in source_list: source = db_handle.get_source_from_handle(_handle) source.remove_citation_references(ctn_handle_list) db_handle.commit_source(source, trans) for _handle in media_list: media = db_handle.get_media_from_handle(_handle) media.remove_citation_references(ctn_handle_list) db_handle.commit_media(media, trans) for _handle in repo_list: repo = db_handle.get_repository_from_handle(_handle) repo.remove_citation_references(ctn_handle_list) db_handle.commit_repository(repo, trans) for citation_handle in citation_list: db_handle.remove_citation(citation_handle, trans) db_handle.remove_source(handle, trans)
def delete_note(db_handle: DbWriteBase, handle: str, trans: DbTxn) -> None: """Delete a note and its references.""" note = db_handle.get_note_from_handle(handle) ( person_list, family_list, event_list, place_list, source_list, citation_list, media_list, repo_list, ) = get_note_referents(handle, db_handle) note_handle = note.get_handle() for _handle in person_list: person = db_handle.get_person_from_handle(_handle) if person: person.remove_note(note_handle) db_handle.commit_person(person, trans) for _handle in family_list: family = db_handle.get_family_from_handle(_handle) if family: family.remove_note(note_handle) db_handle.commit_family(family, trans) for _handle in event_list: event = db_handle.get_event_from_handle(_handle) if event: event.remove_note(note_handle) db_handle.commit_event(event, trans) for _handle in place_list: place = db_handle.get_place_from_handle(_handle) if place: place.remove_note(note_handle) db_handle.commit_place(place, trans) for _handle in source_list: source = db_handle.get_source_from_handle(_handle) if source: source.remove_note(note_handle) db_handle.commit_source(source, trans) for _handle in citation_list: citation = db_handle.get_citation_from_handle(_handle) if citation: citation.remove_note(note_handle) db_handle.commit_citation(citation, trans) for _handle in media_list: media = db_handle.get_media_from_handle(_handle) if media: media.remove_note(note_handle) db_handle.commit_media(media, trans) for _handle in repo_list: repo = db_handle.get_repository_from_handle(_handle) if repo: repo.remove_note(note_handle) db_handle.commit_repository(repo, trans) db_handle.remove_note(note_handle, trans)