def import_data(self, data):
        results = MultiImportResult()

        context = {
            'model_contexts': {
                importer.model: importer.get_model_context()
                for importer in self.importer_instances
            }
        }

        bound_importers = self._transform_multi_input(data)

        for importer, filename, dataset in bound_importers:
            result = importer.import_data(dataset, context, transaction=False)
            results.add_result(filename, result)

        return results
    def import_files(self, files):
        results = MultiImportResult()

        data = {}
        for filename, file in files.items():
            try:
                dataset = file_helper.read(self.file_formats, file)
                model, data_item = self._identify_dataset(filename, dataset)
                if model in data:
                    data[model].append(data_item)
                else:
                    data[model] = [data_item]
            except(InvalidDatasetError, InvalidFileError) as e:
                results.add_error(filename, e.message)

        if not results.valid:
            return results

        return self.import_data(data, transaction=False)