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 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_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 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_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_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_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 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_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