def index_view(request): """ Slideshow, create new for each session """ gallery = get_gallery(request) if not gallery: return message_view(request, message=GALLERY_NOT_FOUND) controller = AlbumController(gallery, request.user, uid=gallery.top_album_id) if not controller.exists(): return message_view(request, message='No such album') main = controller.get_object() link = reverse('actions-slideshow-get-or-create') + '?album={0}'.format( gallery.top_album_id) return render( request, 'slideshow/index.html', { 'gallery': gallery, 'main': main, 'link': link, 'back': dict(album_id=main.id, home=gallery.top_album_id == main.id), })
def download_view(request, gid, uid): """ Download archive """ gallery = get_gallery(request) if not gallery: raise Http404(GALLERY_NOT_FOUND) controller = AlbumController(gallery, request.user, uid=gid) if not controller.exists(): raise Http404(ALBUM_NOT_FOUND) if not controller.is_album(): return message_view(request, message=NOT_ALBUM) if not controller.is_archiving_allowed(): return message_view(request, message=NOT_ALLOW_ARCHIVING) image_paths = [i.path for i in controller.get_images()] z = ZipArchiveController(image_paths, gallery, name=uid) if z == 'NONE': raise Http404('No file found') main = controller.get_object() logger.info(smart_text('download archive "%s"'), main.title) name = smart_text('{0} - {1}.zip').format(main.time.strftime('%Y-%m-%d'), main.title) return download_response(z.archive, name=name)
def images_view(request, gallery_id, album_id): gallery = Gallery.objects.safe_get(id=gallery_id, user=request.user) if not gallery: raise Http404() controller = AlbumController(gallery, request.user, uid=album_id) if not controller.exists(): return message_view(request, message='No such album') images = controller.get_images() storage = ImageStorage(gallery) path = request.GET.get('p', '') try: image_paths = storage.list(path, saved_images=images) folder = ImageFolder(path, image_paths) except FileError as e: logger.exception(e) return message_view(request, message=smart_text(e)) return render( request, 'profile/images.html', { 'gallery': gallery, 'album': controller.get_object(), 'folder': folder, 'title': 'Select images', })
def album_pre_cache(request, gallery_id, album_id): gallery = Gallery.objects.safe_get(id=gallery_id, user=request.user) if not gallery: raise Http404() controller = AlbumController(gallery, request.user, uid=album_id) if not controller.exists(): return message_view(request, message='No such album') try: controller.pre_cache() except FileError as e: logger.exception(e) return message_view(request, message=smart_text(e)) return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def index_view(request, gid): """ Start to archive images, or if done redirect to download js - waite while done, after redirect to download """ gallery = get_gallery(request) if not gallery: return message_view(request, message=GALLERY_NOT_FOUND) controller = AlbumController(gallery, request.user, uid=gid) if not controller.exists(): return message_view(request, message=ALBUM_NOT_FOUND) if not controller.is_album(): return message_view(request, message=NOT_ALBUM) if not controller.is_archiving_allowed(): return message_view(request, message=NOT_ALLOW_ARCHIVING) image_paths = [i.path for i in controller.get_images()] z = ZipArchiveController(image_paths, gallery) # links for redirect to download, and check status redirect = reverse('archive.download', kwargs=dict(gid=gid, uid=z.uid)) link = reverse('archive.status', kwargs=dict(gid=gid, uid=z.uid)) main = controller.get_object() if z.status == 'DONE': return HttpResponseRedirect(redirect) z.add_job() return render( request, 'archive/download.html', { 'gallery': gallery, 'path': request.path, 'link': link, 'redirect': redirect, 'album': main, 'back': dict(album_id=main.id), })