def images_with_add_or_change_permissions_only(images, request): # pylint: disable=unused-argument """ Show images from those collections where user has add or change permissions """ return image_permission_policy.instances_user_has_any_permission_for( request.user, ['add', 'change'] )
def index(request): Image = get_image_model() # Get images (filtered by user permission) images = permission_policy.instances_user_has_any_permission_for(request.user, ["change", "delete"]).order_by( "-created_at" ) # Search query_string = None if "q" in request.GET: form = SearchForm(request.GET, placeholder=_("Search images")) if form.is_valid(): query_string = form.cleaned_data["q"] images = images.search(query_string) else: form = SearchForm(placeholder=_("Search images")) # Filter by collection current_collection = None collection_id = request.GET.get("collection_id") if collection_id: try: current_collection = Collection.objects.get(id=collection_id) images = images.filter(collection=current_collection) except (ValueError, Collection.DoesNotExist): pass paginator, images = paginate(request, images) collections = permission_policy.collections_user_has_any_permission_for(request.user, ["add", "change"]) if len(collections) < 2: collections = None # Create response if request.is_ajax(): return render( request, "wagtailimages/images/results.html", {"images": images, "query_string": query_string, "is_searching": bool(query_string)}, ) else: return render( request, "wagtailimages/images/index.html", { "images": images, "query_string": query_string, "is_searching": bool(query_string), "search_form": form, "popular_tags": Image.popular_tags(), "collections": collections, "current_collection": current_collection, "user_can_add": permission_policy.user_has_permission(request.user, "add"), }, )
def index(request): Image = get_image_model() # Get images (filtered by user permission) images = permission_policy.instances_user_has_any_permission_for( request.user, ['change', 'delete'] ).order_by('-created_at') # Search query_string = None if 'q' in request.GET: form = SearchForm(request.GET, placeholder=_("Search images")) if form.is_valid(): query_string = form.cleaned_data['q'] images = images.search(query_string) else: form = SearchForm(placeholder=_("Search images")) # Filter by collection current_collection = None collection_id = request.GET.get('collection_id') if collection_id: try: current_collection = Collection.objects.get(id=collection_id) images = images.filter(collection=current_collection) except (ValueError, Collection.DoesNotExist): pass paginator, images = paginate(request, images) collections = permission_policy.collections_user_has_any_permission_for( request.user, ['add', 'change'] ) if len(collections) < 2: collections = None # Create response if request.is_ajax(): return render(request, 'wagtailimages/images/results.html', { 'images': images, 'query_string': query_string, 'is_searching': bool(query_string), }) else: return render(request, 'wagtailimages/images/index.html', { 'images': images, 'query_string': query_string, 'is_searching': bool(query_string), 'search_form': form, 'popular_tags': Image.popular_tags(), 'collections': collections, 'current_collection': current_collection, 'user_can_add': permission_policy.user_has_permission(request.user, 'add'), })
def get_user_images(user): """ Args: user: instance of User model Returns: wagtail images queryset where given user has add or change permissions """ # inline import to avoid AppRegistryNotReady: Models aren't loaded yet exception from wagtail.wagtailimages.permissions import permission_policy as image_permission_policy return image_permission_policy.instances_user_has_any_permission_for( user, ['add', 'change'])
def search(request): response = dict() if not permission_policy.user_has_any_permission(request.user, ['add', 'change', 'delete']): response = { 'message': "User does not have permission" } return JsonResponse(response, status=403) # Get images (filtered by user permission) images = permission_policy.instances_user_has_any_permission_for( request.user, ['change', 'delete'] ).order_by('-created_at') # Search query_string = None if 'query_string' in request.GET: query_string = request.GET.get('query_string') images = images.search(query_string) else: response['message'] = "No query string passed" return JsonResponse(response, status=400) # Filter by folder current_folder = None folder_id = request.GET.get('folder_id') if folder_id: try: current_folder = ImageFolder.objects.get(id=folder_id) images = images.filter(folder=current_folder) except ObjectDoesNotExist: response['message'] = "Invalid Folder ID" return JsonResponse(response, status=400) image_list = list() for image in images: image_list.append(get_image_dict(image)) return JsonResponse(image_list, safe=False)
def index(request): Image = get_image_model() # Get images (filtered by user permission) images = permission_policy.instances_user_has_any_permission_for( request.user, ['change', 'delete'] ).order_by('-created_at') # Search query_string = None if 'q' in request.GET: form = SearchForm(request.GET, placeholder=_("Search images")) if form.is_valid(): query_string = form.cleaned_data['q'] images = images.search(query_string) else: form = SearchForm(placeholder=_("Search images")) paginator, images = paginate(request, images) # Create response if request.is_ajax(): return render(request, 'wagtailimages/images/results.html', { 'images': images, 'query_string': query_string, 'is_searching': bool(query_string), }) else: return render(request, 'wagtailimages/images/index.html', { 'images': images, 'query_string': query_string, 'is_searching': bool(query_string), 'search_form': form, 'popular_tags': Image.popular_tags(), 'user_can_add': permission_policy.user_has_permission(request.user, 'add'), })
def index(request): Image = get_image_model() # Get images (filtered by user permission) images = permission_policy.instances_user_has_any_permission_for( request.user, ['change', 'delete']).order_by('-created_at') # Search query_string = None if 'q' in request.GET: form = SearchForm(request.GET, placeholder=_("Search images")) if form.is_valid(): query_string = form.cleaned_data['q'] images = images.search(query_string) else: form = SearchForm(placeholder=_("Search images")) # Filter by collection current_collection = None collection_id = request.GET.get('collection_id') if collection_id: try: current_collection = Collection.objects.get(id=collection_id) images = images.filter(collection=current_collection) except (ValueError, Collection.DoesNotExist): pass paginator, images = paginate(request, images) collections = permission_policy.collections_user_has_any_permission_for( request.user, ['add', 'change']) if len(collections) < 2: collections = None # Create response if request.is_ajax(): return render( request, 'wagtailimages/images/results.html', { 'images': images, 'query_string': query_string, 'is_searching': bool(query_string), }) else: return render( request, 'wagtailimages/images/index.html', { 'images': images, 'query_string': query_string, 'is_searching': bool(query_string), 'search_form': form, 'popular_tags': popular_tags_for_model(Image), 'collections': collections, 'current_collection': current_collection, 'user_can_add': permission_policy.user_has_permission(request.user, 'add'), })
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, })