def init_nodes(self, context, instance):
        super(MediaTreeGalleryPlugin, self).init_nodes(context, instance)

        if instance.list_type == MediaTreeListing.LIST_NESTED or instance.include_descendants:
            filter = None
            if not instance.include_descendants:
                max_depth = 1
            else:
                max_depth = None

            self.folder_list = get_nested_filenode_list(self.selected_nodes, filter_media_types=(FileNode.FOLDER,), filter=filter,
                max_depth=max_depth, processors=[self.FolderLink])
        else:
            self.folder_list = ()

        # fetch and validate parent folder:
        if instance.list_type == MediaTreeListing.LIST_NESTED:
            folder_id = context['request'].GET.get(self.FolderLink.folder_param_name(instance), None)
            if folder_id:
                try:
                    self.current_folder = FileNode.objects.get(pk=folder_id)
                    top_node_pks = [node.pk for node in self.selected_nodes]
                    if not self.current_folder.pk in top_node_pks:
                        if not instance.include_descendants or self.current_folder.get_ancestors().filter(pk__in=top_node_pks).count() == 0:
                            raise FileNode.DoesNotExist()
                except FileNode.DoesNotExist:
                    raise Http404()
                self.visible_nodes = self.current_folder.get_children()
def filenode_admin_action(modeladmin, request, queryset, form_class, extra_context, success_messages, form_initial=None, is_recursive=True):
    """
    """
    execute = request.POST.get('execute')
    current_node = None
    if execute:
        if not issubclass(form_class, FileNodeActionsWithUserForm):
            form = form_class(queryset, request.POST)
        else:
            form = form_class(queryset, request.user, request.POST)
        if form.is_valid():
            form.save()
            redirect_node = form.cleaned_data.get('target_node', None)
            if not redirect_node:
                redirect_node = get_current_node(form)
            request.user.message_set.create(message=ungettext(success_messages[0], success_messages[1], form.success_count) % {
                'count': form.success_count, 
                'verbose_name': FileNode._meta.verbose_name, 
                'verbose_name_plural': FileNode._meta.verbose_name_plural
            })
            
            return HttpResponseRedirect(reverse('admin:media_tree_filenode_changelist'))
            #return HttpResponseRedirect(reverse('admin:media_tree_filenode_folder_expand', args=(redirect_node.pk,)))
            #return HttpResponseRedirect(redirect_node.get_admin_url())

    if not execute:
        if not issubclass(form_class, FileNodeActionsWithUserForm):
            form = form_class(queryset, initial=form_initial)
        else:
            form = form_class(queryset, request.user, initial=form_initial)

    context = get_actions_context(modeladmin)
    context.update(extra_context)
    context.update({
        'breadcrumbs_title': context['title'],
        'form': form,
        'node': get_current_node(form)
    })
    if not 'node_list' in context:
        if is_recursive:
            max_depth = None
        else:
            max_depth = 1
        context['node_list'] = get_nested_filenode_list(form.selected_nodes, 
            processors=[FileNode.get_admin_link], max_depth=max_depth)
    return render_to_response('admin/media_tree/filenode/actions_form.html', context, context_instance=RequestContext(request))
Example #3
0
def filenode_admin_action(modeladmin,
                          request,
                          queryset,
                          form_class,
                          extra_context,
                          success_messages,
                          form_initial=None,
                          is_recursive=True):
    """
    """
    execute = request.POST.get('execute')
    current_node = None
    if execute:
        if not issubclass(form_class, FileNodeActionsWithUserForm):
            form = form_class(queryset, request.POST)
        else:
            form = form_class(queryset, request.user, request.POST)
        if form.is_valid():
            form.save()
            redirect_node = form.cleaned_data.get('target_node', None)
            if not redirect_node:
                redirect_node = get_current_node(form)
            messages.success(
                request,
                message=ungettext(success_messages[0], success_messages[1],
                                  form.success_count) %
                {
                    'count': form.success_count,
                    'verbose_name': FileNode._meta.verbose_name,
                    'verbose_name_plural': FileNode._meta.verbose_name_plural
                })

            return HttpResponseRedirect(
                reverse('admin:media_tree_filenode_changelist'))
            #return HttpResponseRedirect(reverse('admin:media_tree_filenode_folder_expand', args=(redirect_node.pk,)))
            #return HttpResponseRedirect(redirect_node.get_admin_url())

    if not execute:
        if not issubclass(form_class, FileNodeActionsWithUserForm):
            form = form_class(queryset, initial=form_initial)
        else:
            form = form_class(queryset, request.user, initial=form_initial)

    context = get_actions_context(modeladmin)
    context.update(extra_context)
    context.update({
        'breadcrumbs_title': context['title'],
        'form': form,
        'node': get_current_node(form)
    })
    if not 'node_list' in context:
        if is_recursive:
            max_depth = None
        else:
            max_depth = 1
        context['node_list'] = get_nested_filenode_list(
            form.selected_nodes,
            processors=[FileNode.get_admin_link],
            max_depth=max_depth)
    return render_to_response('admin/media_tree/filenode/actions_form.html',
                              context,
                              context_instance=RequestContext(request))