示例#1
0
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),
        })
示例#2
0
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)
示例#3
0
文件: views.py 项目: b7w/bviewer
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',
        })
示例#4
0
文件: views.py 项目: b7w/bviewer
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'))
示例#5
0
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),
        })