"Upload" um arquivo do shell django
Eu preciso importar alguns dados de um arquivo excel e uma pasta com imagens, cada linha no excel descreve cada entrada e tem uma lista de nomes de arquivos na pasta (fotos relacionadas com a entrada).
Eu fiz um script que cria cada entrada no banco de dados e salva através do shell do django, mas não tenho idéia de como instanciar um InMemoryUploadedFile para salvá-lo com o modelo.
No django 1.0 eu tive essa pequena classe que me permitiu fazer o que eu preciso, mas com mudanças no django 1.1 ele não está mais funcionando.
class ImportFile(file):
def __init__(self, *args, **kwargs):
super(ImportFile, self).__init__(*args, **kwargs)
self._file = self
self.size = os.path.getsize(self.name)
def __len__(self):
return self.size
def chunks(self, chunk_size=None):
self._file.seek(0)
yield self.read()
Eu estava usando essa classe com este trecho de código para carregar imagens e salvá-las com a instância do modelo.
for photo in photos:
f = ImportFile(os.path.join(IMPORT_DIR, 'fotos', photo), 'r')
p = Photo(name=f.name, image=f, parent=supply.supply_ptr)
name = str(uuid1()) + os.path.splitext(f.name)[1]
p.image.save(name, f)
p.save()
A questão é, como criar um InMemoryUploadedFile ou um arquivo temporário de um arquivo em python ?, ou qualquer outra coisa que funcione nesse contexto.