25 lines
697 B
Python
25 lines
697 B
Python
import zipfile
|
|
|
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
|
|
|
|
|
class NotACompressedFile(Exception):
|
|
pass
|
|
|
|
|
|
class CompressedFile(object):
|
|
def __init__(self, file_object):
|
|
self.file_object = file_object
|
|
|
|
def children(self):
|
|
try:
|
|
# Try for a ZIP file
|
|
zfobj = zipfile.ZipFile(self.file_object)
|
|
filenames = [filename for filename in zfobj.namelist() if not filename.endswith('/')]
|
|
return (SimpleUploadedFile(name=filename, content=zfobj.read(filename)) for filename in filenames)
|
|
except zipfile.BadZipfile:
|
|
raise NotACompressedFile
|
|
|
|
#def close(self):
|
|
# self.file_object.close()
|