def export(self, request, queryset):
"""
Download selected photos as ZIP
"""
zip_subdir = 'photos'
zip_filename = '{}.zip'.format(zip_subdir)
zip_file = os.path.join(settings.MEDIA_ROOT, PHOTOLOGUE_DIR,
zip_filename)
try:
os.remove(zip_file)
except OSError:
pass
with zipfile.ZipFile(zip_file, "a") as zf:
for photo in queryset.all():
path = photo.image.path
if os.path.isfile(path):
fdir, fname = os.path.split(path)
zip_path = os.path.join(zip_subdir, fname)
zf.write(path, zip_path)
link = 'Photos download link: <a href="{0}?v={1}">{0}</a>'.format(
urllib.parse.urljoin(settings.MEDIA_URL,
PHOTOLOGUE_DIR + '/' + zip_filename), time())
messages.add_message(request, messages.INFO, mark_safe(link))
评论列表
文章目录