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_sheet_save_to_django_model(self): model = FakeExceptionDjangoModel() adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] writer = DjangoModelWriter(adapter) writer.write_array(self.data[1:]) writer.close() # now raise excpetion model = FakeExceptionDjangoModel(raiseException=True) adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] writer = DjangoModelWriter(adapter) writer.write_array(self.data[1:]) writer.close()
def test_sheet_save_to_django_model(self): model = FakeDjangoModel() adapter = DjangoModelImportAdapter(model) adapter.column_names = self.data[0] writer = DjangoModelWriter(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(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(adapter) writer.write_array(data2[1:]) writer.close() eq_(model.objects.objs, self.result)
def test_save_to_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:] } writer = DjangoBookWriter() writer.open_content(importer) writer.write(to_store) writer.close() assert model1.objects.objs == self.result1 assert model2.objects.objs == self.result2
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_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_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(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(adapter) writer.write_array(data2[1:]) writer.close() eq_(model.objects.objs, self.result)
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(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_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(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_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 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_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_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)