def write_report(self): """ The short method that runs through each month and creates a page. """ self.doc.start_paragraph('DIFF-Title') self.doc.write_text(_("Database Differences Report")) self.doc.end_paragraph() self.doc.start_table('DiffTable', 'DIFF-Table2') self.doc.start_row() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-TableHeading') self.doc.write_text("Database:") self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-Text') self.doc.write_text(str(self.database.get_dbname())) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.start_row() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-TableHeading') self.doc.write_text(_("File:")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-Text') self.doc.write_text(self.filename) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() self.database2 = import_as_dict(self.filename, self._user) if self.database2 is None: return self.sa = [SimpleAccess(self.database), SimpleAccess(self.database2)] diffs, added, missing = diff_dbs(self.database, self.database2, self._user) if self.show_diff: self.doc.start_paragraph('DIFF-Heading') self.doc.write_text(_("Differences between Database and File")) self.doc.end_paragraph() last_object = None if diffs: self._user.begin_progress(_('Family Tree Differences'), _('Processing...'), len(diffs)) for diff in diffs: self._user.step_progress() obj_type, item1, item2 = diff if last_object != item1: if last_object != None: self.doc.end_table() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() self.doc.start_table('DiffTable', 'DIFF-Table3') last_object = item1 if hasattr(item1, "gramps_id"): self.start_list(self.doc, "%s: %s" % (obj_type, item1.gramps_id), "Database", "File") else: self.start_list( self.doc, "%s: %s" % (obj_type, item1.get_name()), "Database", "File") self.report_diff(obj_type, to_struct(item1), to_struct(item2), self.doc) self.doc.end_table() else: self.doc.start_table('DiffTable', 'DIFF-Table3') self.start_list(self.doc, _("No differences"), "", "") self.doc.end_table() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() if self.show_missing: self.doc.start_paragraph('DIFF-Heading') self.doc.write_text( _("Missing items in File that are added in Database")) self.doc.end_paragraph() if missing: for pair in missing: obj_type, item = pair self.doc.start_paragraph('DIFF-Text') self.doc.write_text( _("Missing %s: %s") % (obj_type, self.sa[0].describe(item))) self.doc.end_paragraph() else: self.doc.start_paragraph('DIFF-Text') self.doc.write_text(_("Nothing missing")) self.doc.end_paragraph() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() if self.show_added: self.doc.start_paragraph('DIFF-Heading') self.doc.write_text( _("Added items in File that are missing in Database")) self.doc.end_paragraph() if added: for pair in added: obj_type, item = pair self.doc.start_paragraph('DIFF-Text') self.doc.write_text( _("Added %s: %s ") % (obj_type, self.sa[1].describe(item))) self.doc.end_paragraph() else: self.doc.start_paragraph('DIFF-Text') self.doc.write_text(_("Nothing added")) self.doc.end_paragraph() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() self._user.end_progress()
def setUpClass(cls): """ Import example database. """ cls.db = import_as_dict(EXAMPLE, User())
self.cls = Tag self.object = self.cls() class DatabaseCheck(unittest.TestCase): maxDiff = None def generate_case(obj): """ Dynamically generate tests and attach to DatabaseCheck. """ data = to_json(obj) obj2 = from_json(data) def test(self): self.assertEqual(obj.serialize(), obj2.serialize()) name = "test_serialize_%s_%s" % (obj.__class__.__name__, obj.handle) setattr(DatabaseCheck, name, test) #### #def test2(self): # self.assertEqual(obj.serialize(), from_struct(struct).serialize()) #name = "test_create_%s_%s" % (obj.__class__.__name__, obj.handle) #setattr(DatabaseCheck, name, test2) db = import_as_dict(EXAMPLE, User()) for table in db.get_table_func(): for handle in db.get_table_func(table,"handles_func")(): obj = db.get_table_func(table,"handle_func")(handle) generate_case(obj) if __name__ == "__main__": unittest.main()
def load(self) -> DbReadBase: """Return a DB instance with in-memory Gramps example DB.""" return import_as_dict(self.path, User())
def write_report(self): """ The short method that runs through each month and creates a page. """ self.doc.start_paragraph('DIFF-Title') self.doc.write_text("Database Differences Report") self.doc.end_paragraph() self.doc.start_table('DiffTable','DIFF-Table2') self.doc.start_row() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-TableHeading') self.doc.write_text("Database:") self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-Text') self.doc.write_text(str(self.database.get_dbname())) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.start_row() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-TableHeading') self.doc.write_text("File:") self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('DIFF-TableCellNoBorder') self.doc.start_paragraph('DIFF-Text') self.doc.write_text(self.filename) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() self.database2 = import_as_dict(self.filename, self._user) if self.database2 is None: return self.sa = [SimpleAccess(self.database), SimpleAccess(self.database2)] diffs, added, missing = diff_dbs(self.database, self.database2, self._user) if self.show_diff: self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("Differences between Database and File") self.doc.end_paragraph() last_object = None if diffs: self._user.begin_progress(_('Family Tree Differences'), _('Processing...'), len(diffs)) for diff in diffs: self._user.step_progress() obj_type, item1, item2 = diff if last_object != item1: if last_object != None: self.doc.end_table() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() self.doc.start_table('DiffTable','DIFF-Table3') last_object = item1 if hasattr(item1, "gramps_id"): self.start_list(self.doc, "%s: %s" % (obj_type, item1.gramps_id), "Database", "File") else: self.start_list(self.doc, "%s: %s" % (obj_type, item1.get_name()), "Database", "File") self.report_diff(obj_type, to_struct(item1), to_struct(item2), self.doc) self.doc.end_table() else: self.doc.start_table('DiffTable','DIFF-Table3') self.start_list(self.doc, "No differences", "", "") self.doc.end_table() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() if self.show_missing: self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("Missing items in File that are added in Database") self.doc.end_paragraph() if missing: for pair in missing: obj_type, item = pair self.doc.start_paragraph('DIFF-Text') self.doc.write_text("Missing %s: %s" % (obj_type, self.sa[0].describe(item))) self.doc.end_paragraph() else: self.doc.start_paragraph('DIFF-Text') self.doc.write_text("Nothing missing") self.doc.end_paragraph() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() if self.show_added: self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("Added items in File that are missing in Database") self.doc.end_paragraph() if added: for pair in added: obj_type, item = pair self.doc.start_paragraph('DIFF-Text') self.doc.write_text("Added %s: %s " % (obj_type, self.sa[1].describe(item))) self.doc.end_paragraph() else: self.doc.start_paragraph('DIFF-Text') self.doc.write_text("Nothing added") self.doc.end_paragraph() self.doc.start_paragraph('DIFF-Heading') self.doc.write_text("") self.doc.end_paragraph() self._user.end_progress()
def setUpClass(cls): """ Import test data as in-memory database """ cls.db = import_as_dict(TEST_INPUT, User())