def add(request, add_to_folder=False):
    ImageFolder = get_folder_model()
    ImageFolderForm = get_folder_form(ImageFolder)

    parent_folder = False
    if add_to_folder:
        parent_folder = get_object_or_404(ImageFolder, id=add_to_folder)

    if request.method == 'POST':
        # Build a form for validation
        form = ImageFolderForm(request.POST)
        error = True

        if form.is_valid():
            error = False

            folder = ImageFolder(
                title=form.cleaned_data['title'].strip()
            )
            if parent_folder:
                folder.folder = parent_folder

            try:
                # Check if the folder is present in the DB or physically present in the OS
                folder.validate_folder()
            except ValidationError as e:
                error = True
                form._errors['title'] = e.message

        if not error:
            # Save folder
            folder.save()

            # Success! Send back to index or image specific folder
            response = redirect('wagtailimages:index')
            response['Location'] += '?folder={0}'.format(folder.id)
            return response
        else:
            # Validation error
            return render(request, 'wagtailimages/folder/add.html', {
                'error_message': 'Error adding folder',
                'help_text': '',
                'parent_folder': parent_folder,
                'form': form,
            })
    else:
        form = ImageFolderForm()

        return render(request, 'wagtailimages/folder/add.html', {
            'help_text': '',
            'parent_folder': parent_folder,
            'form': form,
        })
示例#2
0
def add(request, add_to_folder=False):
    ImageFolder = get_folder_model()
    ImageFolderForm = get_folder_form(ImageFolder)

    parent_folder = False
    if add_to_folder:
        parent_folder = get_object_or_404(ImageFolder, id=add_to_folder)

    if request.method == 'POST':
        # Build a form for validation
        form = ImageFolderForm(request.POST)
        error = True

        if form.is_valid():
            error = False

            folder = ImageFolder(title=form.cleaned_data['title'].strip())
            if parent_folder:
                folder.folder = parent_folder

            try:
                # Check if the folder is present in the DB or physically present in the OS
                folder.validate_folder()
            except ValidationError as e:
                error = True
                form._errors['title'] = e.message

        if not error:
            # Save folder
            folder.save()

            # Success! Send back to index or image specific folder
            response = redirect('wagtailimages:index')
            response['Location'] += '?folder={0}'.format(folder.id)
            return response
        else:
            # Validation error
            return render(
                request, 'wagtailimages/folder/add.html', {
                    'error_message': 'Error adding folder',
                    'help_text': '',
                    'parent_folder': parent_folder,
                    'form': form,
                })
    else:
        form = ImageFolderForm()

        return render(request, 'wagtailimages/folder/add.html', {
            'help_text': '',
            'parent_folder': parent_folder,
            'form': form,
        })
示例#3
0
def edit(request, folder_id):
    ImageFolder = get_folder_model()
    ImageFolderForm = get_folder_form(ImageFolder)
    folder = get_object_or_404(ImageFolder, id=folder_id)

    if request.method == 'POST':
        # Build a form for validation
        form = ImageFolderForm(request.POST)

        if form.is_valid():

            folder.title = form.cleaned_data['title']

            try:
                # Check if the folder is present in the DB or physically present in the OS
                folder.validate_folder()
            except ValidationError as e:
                form._errors['title'] = e.message
                # Validation error
                return render(
                    request, 'wagtailimages/folder/edit.html', {
                        'error_message': 'Error adding folder',
                        'help_text': '',
                        'form': form,
                    })

            folder.save()

            # Success! Send back to index or image specific folder
            response = redirect('wagtailimages:index')
            response['Location'] += '?folder={0}'.format(folder.id)
            return response
        else:
            # Validation error
            return render(
                request, 'wagtailimages/folder/edit.html', {
                    'error_message': 'Error adding folder',
                    'help_text': '',
                    'form': form,
                })
    else:
        form = ImageFolderForm(instance=folder)

    return render(request, 'wagtailimages/folder/edit.html', {
        'help_text': '',
        'folder': folder,
        'form': form,
    })
def edit(request, folder_id):
    ImageFolder = get_folder_model()
    ImageFolderForm = get_folder_form(ImageFolder)
    folder = get_object_or_404(ImageFolder, id=folder_id)

    if request.method == 'POST':
        # Build a form for validation
        form = ImageFolderForm(request.POST)

        if form.is_valid():

            folder.title = form.cleaned_data['title']

            try:
                # Check if the folder is present in the DB or physically present in the OS
                folder.validate_folder()
            except ValidationError as e:
                form._errors['title'] = e.message
                # Validation error
                return render(request, 'wagtailimages/folder/edit.html', {
                    'error_message': 'Error adding folder',
                    'help_text': '',
                    'form': form,
                })

            folder.save()

            # Success! Send back to index or image specific folder
            response = redirect('wagtailimages:index')
            response['Location'] += '?folder={0}'.format(folder.id)
            return response
        else:
            # Validation error
            return render(request, 'wagtailimages/folder/edit.html', {
                'error_message': 'Error adding folder',
                'help_text': '',
                'form': form,
            })
    else:
        form = ImageFolderForm(instance=folder)

    return render(request, 'wagtailimages/folder/edit.html', {
        'help_text': '',
        'folder': folder,
        'form': form,
    })
示例#5
0
def edit(request, folder_id):
    ImageFolder = get_folder_model()
    ImageFolderForm = get_folder_form(ImageFolder)

    folder = get_object_or_404(ImageFolder, id=folder_id)

    if request.method == 'POST':
        # Build a form for validation
        form = ImageFolderForm(request.POST)

        if form.is_valid():
            #TODO - Check for clashing filenames
            # Save folder
            folder.title = form.cleaned_data['title']
            folder.save()

            # Success! Send back to index or image specific folder
            response = redirect('wagtailimages:index')
            response['Location'] += '?folder={0}'.format(folder.id)
            return response
        else:
            # Validation error
            return render(
                request, 'wagtailimages/folder/edit.html', {
                    'error_message': 'Error adding folder',
                    'help_text': '',
                    'form': form,
                })
    else:
        form = ImageFolderForm(instance=folder)

    return render(request, 'wagtailimages/folder/edit.html', {
        'help_text': '',
        'folder': folder,
        'form': form,
    })
示例#6
0
def add(request, add_to_folder=False):
    ImageFolder = get_folder_model()
    ImageFolderForm = get_folder_form(ImageFolder)

    parent_folder = False
    if add_to_folder:
        parent_folder = get_object_or_404(ImageFolder, id=add_to_folder)

    if request.method == 'POST':
        # Build a form for validation
        form = ImageFolderForm(request.POST)

        if form.is_valid():
            #TODO - Check for clashing filenames
            error = False

            if parent_folder:
                if ImageFolder.objects.filter(
                        folder=parent_folder,
                        title=form.cleaned_data['title'].strip()).count() > 0:
                    error = True
                    form._errors['title'] = "Folder already exists"
            else:
                if ImageFolder.objects.filter(
                        folder__isnull=True,
                        title=form.cleaned_data['title'].strip()).count() > 0:
                    error = True
                    form._errors['title'] = "Folder already exists"

            if not error:
                # Save folder
                folder = ImageFolder(title=form.cleaned_data['title'].strip())
                if parent_folder:
                    folder.folder = parent_folder
                folder.save()

                # Success! Send back to index or image specific folder
                response = redirect('wagtailimages:index')
                response['Location'] += '?folder={0}'.format(folder.id)
                return response
            else:
                return render(
                    request, 'wagtailimages/folder/add.html', {
                        'error_message': 'Error adding folder',
                        'help_text': '',
                        'parent_folder': parent_folder,
                        'form': form,
                    })
        else:
            # Validation error
            return render(
                request, 'wagtailimages/folder/add.html', {
                    'error_message': 'Error adding folder',
                    'help_text': '',
                    'parent_folder': parent_folder,
                    'form': form,
                })
    else:
        form = ImageFolderForm()

    return render(request, 'wagtailimages/folder/add.html', {
        'help_text': '',
        'parent_folder': parent_folder,
        'form': form,
    })
def chooser(request):
    Image = get_image_model()
    ImageFolder = get_folder_model()

    if permission_policy.user_has_permission(request.user, 'add'):
        ImageForm = get_image_form(Image)
        uploadform = ImageForm(user=request.user)
        ImageFolderForm = get_folder_form(ImageFolder)
    else:
        uploadform = None

    # Get images (filtered by user permission)
    images = permission_policy.instances_user_has_any_permission_for(
        request.user, ['change', 'delete']
    ).order_by('-created_at')

    # Check if folders_only
    folders_only = request.GET.get('folders_only')
    if folders_only:
        folders_only = True
    else:
        folders_only = False

    # Filter by folder
    folders = ImageFolder.objects.filter(folder__isnull = True)
    current_folder = None
    folder_id = request.GET.get('folder')
    if folder_id:
        try:
            current_folder = ImageFolder.objects.get(id=folder_id)
            images = Image.objects.filter(folder=current_folder)
        except (ValueError, ImageFolder.DoesNotExist):
            pass

    q = None
    if (
        'q' in request.GET or 'p' in request.GET or 'tag' in request.GET or
        'collection_id' in request.GET or
        'folder' in request.GET
    ):
        # this request is triggered from search, pagination or 'popular tags';
        # we will just render the results.html fragment
        collection_id = request.GET.get('collection_id')
        if collection_id:
            images = images.filter(collection=collection_id)

        searchform = SearchForm(request.GET)
        if searchform.is_valid():
            q = searchform.cleaned_data['q']

            images = images.search(q)
            is_searching = True
        else:
            is_searching = False

            tag_name = request.GET.get('tag')
            if tag_name:
                images = images.filter(tags__name=tag_name)

        # Pagination
        paginator, images = paginate(request, images, per_page=12)

        if not folders_only:
            return render(request, "wagtailimages/chooser/results.html", {
                'images': images,
                'folders' : folders,
                'current_folder' : current_folder,
                'is_searching': is_searching,
                'query_string': q,
                'will_select_format': request.GET.get('select_format')
            })
        else:
            return render(request, "wagtailimages/chooser/folders.html", {
                'images': images,
                'folders': folders,
                'current_folder': current_folder,
                'is_searching': is_searching,
                'query_string': q,
                'will_select_format': request.GET.get('select_format')
            })
    else:
        searchform = SearchForm()

        collections = Collection.objects.all()
        if len(collections) < 2:
            collections = None

        paginator, images = paginate(request, images, per_page=12)

    return render_modal_workflow(request, 'wagtailimages/chooser/chooser.html', 'wagtailimages/chooser/chooser.js', {
        'images': images,
        'folders' : folders,
        'current_folder' : current_folder,
        'uploadform': uploadform,
        'searchform': searchform,
        'is_searching': False,
        'query_string': q,
        'will_select_format': request.GET.get('select_format'),
        'popular_tags': popular_tags_for_model(Image),
        'collections': collections,
    })
from django.shortcuts import render, redirect, get_object_or_404
from django.core.exceptions import ValidationError

from wagtail.wagtailadmin.utils import PermissionPolicyChecker
from wagtail.wagtailimages.permissions import permission_policy
from wagtail.wagtailimages.models import get_folder_model
from wagtail.wagtailimages.forms import get_folder_form
from wagtail.wagtailimages.utils import create_db_entries
from wagtail.wagtailimages import get_image_model

permission_checker = PermissionPolicyChecker(permission_policy)
ImageFolder = get_folder_model()
ImageFolderForm = get_folder_form(ImageFolder)
Image = get_image_model()


@permission_checker.require('add')
def add(request, add_to_folder=False):

    parent_folder = False
    if add_to_folder:
        parent_folder = get_object_or_404(ImageFolder, id=add_to_folder)

    if request.method == 'POST':
        # Build a form for validation
        form = ImageFolderForm(request.POST)
        error = True

        if form.is_valid():
            error = False