Example #1
0
    def _import(self):
        """Execute the import."""
        import_dataset = Dataset()
        fieldtypes = self._prepare_dataset_to_import()
        import_dataset.headers = self.read_dataset.headers

        for row in self.read_dataset.dict:
            row = self._check_fieldtypes(row, fieldtypes)
            new = []
            for key in row:
                new.append(row[key])

            import_dataset.append(new)

        db = connection.cursor()
        import_dataset.headers = None

        with tempfile.NamedTemporaryFile(delete=False) as f:
                print f.name
                f.write(import_dataset.get_csv(delimiter='\t'))
                f.seek(0)

                try:
                    # Delete all elements before new import
                    self.model.objects.all().delete()
                    db.copy_from(f, self.model._meta.db_table,
                                 columns=(self.read_dataset.headers),
                                 sep="\t",
                                 null='')
                    self.response = {
                        'success': True,
                        'headers': self.read_dataset.headers
                    }
                except Exception as e:
                    error = str(e).replace('\n', ' ').replace('\r', '')
                    self.response = {'success': False, 'err': error}