예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
 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"])
예제 #4
0
 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
예제 #5
0
 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"])
예제 #6
0
 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
예제 #7
0
    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)
예제 #8
0
 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 == []
예제 #9
0
 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 == []
예제 #10
0
    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)
예제 #11
0
 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"]
예제 #12
0
 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"]
예제 #13
0
 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