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))
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))