def test_reading_from_more_models(self): model1 = FakeDjangoModel() model2 = FakeDjangoModel() importer = DjangoModelImporter() adapter1 = DjangoModelImportAdapter(model1) adapter1.column_names = self.content["Sheet1"][0] adapter2 = DjangoModelImportAdapter(model2) adapter2.column_names = self.content["Sheet2"][0] importer.append(adapter1) importer.append(adapter2) to_store = { adapter1.get_name(): self.content["Sheet1"][1:], adapter2.get_name(): self.content["Sheet2"][1:], } save_data(importer, to_store, file_type=DB_DJANGO) assert model1.objects.objs == self.result1 assert model2.objects.objs == self.result2 model1._meta.model_name = "Sheet1" model2._meta.model_name = "Sheet2" model1._meta.update(["X", "Y", "Z"]) model2._meta.update(["A", "B", "C"]) exporter = DjangoModelExporter() adapter1 = DjangoModelExportAdapter(model1) adapter2 = DjangoModelExportAdapter(model2) exporter.append(adapter1) exporter.append(adapter2) reader = DjangoBookReader() reader.open_content(exporter) data = reader.read_all() for key in data.keys(): data[key] = list(data[key]) assert data == self.content
def test_single_save_to_django_model_with_exception(self): model = FakeExceptionDjangoModel(raiseException=True) adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] writer = DjangoModelWriter(None, adapter) writer.write_array(self.data[1:]) writer.close()
def test_sheet_save_to_django_model_3(self): model = FakeDjangoModel() def wrapper(row): row[0] = row[0] + 1 return row adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] adapter.row_initializer = wrapper writer = DjangoModelWriter(None, adapter) writer.write_array(self.data[1:]) writer.close() assert model.objects.objs == [ { "Y": 2, "X": 2, "Z": 3 }, { "Y": 5, "X": 5, "Z": 6 }, ]
def test_sheet_save_to_django_model(self): model = FakeDjangoModel() adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] writer = DjangoModelWriter(None, adapter) writer.write_array(self.data[1:]) writer.close() eq_(model.objects.objs, self.result)
def test_sheet_save_to_django_model_with_empty_array(self): model = FakeDjangoModel() data = [["X", "Y", "Z"], ["", "", ""], [1, 2, 3], [4, 5, 6]] adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] writer = DjangoModelWriter(None, adapter) writer.write_array(data[1:]) writer.close() assert model.objects.objs == self.result
def test_mapping_array(self): data2 = [["A", "B", "C"], [1, 2, 3], [4, 5, 6]] model = FakeDjangoModel() adapter = DjangoModelImportAdapter(model) adapter.column_names = data2[0] adapter.column_name_mapping_dict = ["X", "Y", "Z"] writer = DjangoModelWriter(None, adapter) writer.write_array(data2[1:]) writer.close() eq_(model.objects.objs, self.result)
def test_bulk_save_flag(self): sample_size = 10 model1 = FakeDjangoModel() model2 = FakeDjangoModel() importer = DjangoModelImporter() adapter1 = DjangoModelImportAdapter(model1) adapter1.column_names = self.content["Sheet1"][0] adapter2 = DjangoModelImportAdapter(model2) adapter2.column_names = self.content["Sheet2"][0] importer.append(adapter1) importer.append(adapter2) to_store = { adapter1.get_name(): self.content["Sheet1"][1:], adapter2.get_name(): self.content["Sheet2"][1:], } writer = DjangoBookWriter() writer.open_content(importer, batch_size=sample_size, bulk_save=False) writer.write(to_store) writer.close() assert model1.objects.objs == []
def setUp(self): self.data = [["X", "Y", "Z"], [1, 2, 3], [4, 5, 6]] self.result = [{"Y": 2, "X": 1, "Z": 3}, {"Y": 5, "X": 4, "Z": 6}] self.model = FakeDjangoModel() importer = DjangoModelImporter() adapter = DjangoModelImportAdapter(self.model) adapter.column_names = self.data[0] importer.append(adapter) save_data(importer, {adapter.get_name(): self.data[1:]}, file_type=DB_DJANGO) assert self.model.objects.objs == self.result self.model._meta.update(["X", "Y", "Z"])
def setUp(self): self.data = [["X", "Y", "Z"], [1, 2, 3], [4, 5, 6]] self.result = [{"Y": 2, "X": 1, "Z": 3}, {"Y": 5, "X": 4, "Z": 6}] self.model = FakeDjangoModel() importer = DjangoModelImporter() adapter = DjangoModelImportAdapter(self.model) adapter.column_names = self.data[0] importer.append(adapter) save_data( importer, {adapter.get_name(): self.data[1:]}, file_type=DB_DJANGO ) assert self.model.objects.objs == self.result self.model._meta.update(["X", "Y", "Z"])
def test_save_to_more_models(self): sample_size = 10 model1 = FakeDjangoModel() model2 = FakeDjangoModel() importer = DjangoModelImporter() adapter1 = DjangoModelImportAdapter(model1) adapter1.column_names = self.content['Sheet1'][0] adapter2 = DjangoModelImportAdapter(model2) adapter2.column_names = self.content['Sheet2'][0] importer.append(adapter1) importer.append(adapter2) to_store = { adapter1.get_name(): self.content['Sheet1'][1:], adapter2.get_name(): self.content['Sheet2'][1:] } writer = DjangoBookWriter() writer.open_content(importer, batch_size=sample_size) writer.write(to_store) writer.close() assert model1.objects.objs == self.result1 assert model2.objects.objs == self.result2 assert model1.objects.batch_size == sample_size
def test_load_sheet_from_django_model(self): model = FakeDjangoModel() importer = DjangoModelImporter() adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] importer.append(adapter) save_data(importer, {adapter.get_name(): self.data[1:]}, file_type=DB_DJANGO) assert model.objects.objs == self.result model._meta.update(["X", "Y", "Z"]) reader = DjangoModelReader(model) data = reader.to_array() assert list(data) == self.data
def test_load_sheet_from_django_model(self): model = FakeDjangoModel() importer = DjangoModelImporter() adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] importer.append(adapter) save_data( importer, {adapter.get_name(): self.data[1:]}, file_type=DB_DJANGO ) assert model.objects.objs == self.result model._meta.update(["X", "Y", "Z"]) reader = DjangoModelReader(model) data = reader.to_array() assert list(data) == self.data
def test_sheet_save_to_django_model_skip_me(self): model = FakeDjangoModel() def wrapper(row): if row[0] == 4: return None else: return row adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] adapter.row_initializer = wrapper writer = DjangoModelWriter(None, adapter) writer.write_array(self.data[1:]) writer.close() assert model.objects.objs == [{"Y": 2, "X": 1, "Z": 3}]
def test_sheet_save_to_django_model_skip_me(self): model = FakeDjangoModel() def wrapper(row): if row[0] == 4: return None else: return row adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] adapter.row_initializer = wrapper writer = DjangoModelWriter(None, adapter) writer.write_array(self.data[1:]) writer.close() assert model.objects.objs == [{'Y': 2, 'X': 1, 'Z': 3}]
def test_load_and_format_sheet_from_django_model(self): model = FakeDjangoModel() importer = DjangoModelImporter() adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] importer.append(adapter) save_data(importer, {adapter.get_name(): self.data[1:]}, file_type=DB_DJANGO) assert model.objects.objs == self.result model._meta.update(["X", "Y", "Z"]) def row_renderer(row): return [str(element) for element in row] # the key point of this test case reader = DjangoModelReader(model, row_renderer=row_renderer) data = reader.to_array() expected = [["X", "Y", "Z"], ["1", "2", "3"], ["4", "5", "6"]] eq_(list(data), expected)
def test_load_and_format_sheet_from_django_model(self): model = FakeDjangoModel() importer = DjangoModelImporter() adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] importer.append(adapter) save_data( importer, {adapter.get_name(): self.data[1:]}, file_type=DB_DJANGO ) assert model.objects.objs == self.result model._meta.update(["X", "Y", "Z"]) def row_renderer(row): return [str(element) for element in row] # the key point of this test case reader = DjangoModelReader(model, row_renderer=row_renderer) data = reader.to_array() expected = [["X", "Y", "Z"], ["1", "2", "3"], ["4", "5", "6"]] eq_(list(data), expected)
def test_special_case_where_only_one_model_used(self): model1 = FakeDjangoModel() importer = DjangoModelImporter() adapter = DjangoModelImportAdapter(model1) adapter.column_names = self.content["Sheet1"][0] importer.append(adapter) to_store = { adapter.get_name(): self.content["Sheet1"][1:], "Sheet2": self.content["Sheet2"][1:], } save_data(importer, to_store, file_type=DB_DJANGO) assert model1.objects.objs == self.result1 model1._meta.model_name = "Sheet1" model1._meta.update(["X", "Y", "Z"]) exporter = DjangoModelExporter() adapter = DjangoModelExportAdapter(model1) exporter.append(adapter) reader = DjangoBookReader() reader.open_content(exporter) data = reader.read_all() assert list(data["Sheet1"]) == self.content["Sheet1"]
def test_django_model_import_adapter(): adapter = DjangoModelImportAdapter(FakeDjangoModel) adapter.column_names = ["a"] adapter.row_initializer = "abc" eq_(adapter.row_initializer, "abc")