'Will make all the directories and expand the files.
Raises error on nasty files.'

def extract(self):

    if (self.file.status in mkt.LISTED_STATUSES):
        storage = public_storage
    else:
        storage = private_storage
    try:
        tempdir = extract_zip(storage.open(self.src))
        for (root, subdirs, files) in os.walk(tempdir):
            storage_root = root.replace(tempdir, self.dest, 1)
            for fname in files:
                file_src = os.path.join(root, fname)
                file_dest = os.path.join(storage_root, fname)
                copy_stored_file(file_src, file_dest, src_storage=local_storage, dst_storage=private_storage)
    except Exception as err:
        task_log.error(('Error    (%s)    extracting    %s' % (err, self.src)))
        raise
