def cb_merge(self, obj): """ Performs the merge of the citations when the merge button is clicked. """ self.uistate.set_busy_cursor(True) use_handle1 = self.get_widget("handle_btn1").get_active() if use_handle1: phoenix = self.citation1 titanic = self.citation2 else: phoenix = self.citation2 titanic = self.citation1 # Add second handle to history so that when merge is complete, # phoenix is the selected row. self.uistate.set_active(phoenix.get_handle(), 'Citation') if self.get_widget("page_btn1").get_active() ^ use_handle1: phoenix.set_page(titanic.get_page()) if self.get_widget("date_btn1").get_active() ^ use_handle1: phoenix.set_date_object(titanic.get_date_object()) if self.get_widget("confidence_btn1").get_active() ^ use_handle1: phoenix.set_confidence_level(titanic.get_confidence_level()) if self.get_widget("gramps_btn1").get_active() ^ use_handle1: phoenix.set_gramps_id(titanic.get_gramps_id()) query = MergeCitationQuery(self.dbstate, phoenix, titanic) query.execute() self.uistate.set_busy_cursor(False) self.close()
def on_merge_ok_clicked(self, obj): """ Performs the actual merge of citations (Derived from ExtractCity) """ fields = self.menu.get_model()[self.menu.get_active()][1] dont_merge_notes = int(self.notes_obj.get_active()) LOG.debug("fields %d dont_merge_notes %d" % (fields, dont_merge_notes)) self.options.handler.options_dict['fields'] = fields self.options.handler.options_dict[ 'dont_merge_notes'] = dont_merge_notes # Save options self.options.handler.save_options() self.progress = ProgressMeter(_('Checking Sources'), '') self.progress.set_pass(_('Looking for citation fields'), self.db.get_number_of_citations()) db = self.dbstate.db db.disable_signals() num_merges = 0 for handle in db.iter_source_handles(): dict = {} citation_handle_list = list(db.find_backlink_handles(handle)) for (class_name, citation_handle) in citation_handle_list: if class_name != Citation.__name__: raise MergeError("Encountered an object of type %s " "that has a citation reference." % class_name) citation = db.get_citation_from_handle(citation_handle) if citation is None: continue key = citation.get_page() if fields != IGNORE_DATE and fields != IGNORE_BOTH: key += "\n" + get_date(citation) if fields != IGNORE_CONFIDENCE and fields != IGNORE_BOTH: key += "\n" + \ conf_strings[citation.get_confidence_level()] if key in dict and \ (not dont_merge_notes or len(citation.note_list) == 0): citation_match_handle = dict[key] citation_match = \ db.get_citation_from_handle(citation_match_handle) try: query = MergeCitationQuery(self.dbstate, citation_match, citation) query.execute() except AssertionError: print("Tool/Family Tree processing/MergeCitations", \ "citation1 gramps_id", citation_match.get_gramps_id(), \ "citation2 gramps_id", citation.get_gramps_id() , \ "citation backlink handles", \ list(db.find_backlink_handles(citation.get_handle()))) num_merges += 1 elif (not dont_merge_notes or len(citation.note_list) == 0): dict[key] = citation_handle self.progress.step() db.enable_signals() db.request_rebuild() self.progress.close() OkDialog( _("Number of merges done"), # translators: leave all/any {...} untranslated ngettext("{number_of} citation merged", "{number_of} citations merged", num_merges).format(number_of=num_merges)) self.close(obj)
def on_merge_ok_clicked(self, obj): """ Performs the actual merge of citations (Derived from ExtractCity) """ fields = self.menu.get_model()[self.menu.get_active()][1] dont_merge_notes = int(self.notes_obj.get_active()) LOG.debug("fields %d dont_merge_notes %d" % (fields, dont_merge_notes)) self.options.handler.options_dict['fields'] = fields self.options.handler.options_dict['dont_merge_notes'] = dont_merge_notes # Save options self.options.handler.save_options() self.progress = ProgressMeter(_('Checking Sources'), '', parent=self.window) self.progress.set_pass(_('Looking for citation fields'), self.db.get_number_of_citations()) db = self.dbstate.db db.disable_signals() num_merges = 0 for handle in db.iter_source_handles(): dict = {} citation_handle_list = list(db.find_backlink_handles(handle)) for (class_name, citation_handle) in citation_handle_list: if class_name != Citation.__name__: raise MergeError("Encountered an object of type %s " "that has a citation reference." % class_name) citation = db.get_citation_from_handle(citation_handle) if citation is None: continue key = citation.get_page() if fields != IGNORE_DATE and fields != IGNORE_BOTH: key += "\n" + get_date(citation) if fields != IGNORE_CONFIDENCE and fields != IGNORE_BOTH: key += "\n" + \ conf_strings[citation.get_confidence_level()] if key in dict and \ (not dont_merge_notes or len(citation.note_list) == 0): citation_match_handle = dict[key] citation_match = \ db.get_citation_from_handle(citation_match_handle) try: query = MergeCitationQuery( self.dbstate, citation_match, citation) query.execute() except AssertionError: print("Tool/Family Tree processing/MergeCitations", \ "citation1 gramps_id", citation_match.get_gramps_id(), \ "citation2 gramps_id", citation.get_gramps_id() , \ "citation backlink handles", \ list(db.find_backlink_handles(citation.get_handle()))) num_merges += 1 elif (not dont_merge_notes or len(citation.note_list) == 0): dict[key] = citation_handle self.progress.step() db.enable_signals() db.request_rebuild() self.progress.close() OkDialog(_("Number of merges done"), # translators: leave all/any {...} untranslated ngettext("{number_of} citation merged", "{number_of} citations merged", num_merges ).format(number_of=num_merges), parent=self.window) self.close(obj)