mptt_admin 0.2 (jstree для админки django)
Новая опция tree_display(list_display) — позволяет показывать в дереве дополнительные поля.
Из-за особенностей реализации туда можно вставлять фильтры(cм.пример).
Если не заданы tree_title_field и tree_display теперь выводится __unicode__, а переименовывание недоступно. Если задан только tree_display — tree_title_field берется из первого поля tree_display.
Также добавил проверку прав пользователя на удаление/изменение узлов, а в дереве недоступные пользователю команды становятся серыми. Ну и исправлено несколько багов.
hg clone http://code.tabed.org/mptt_admin/
Из-за особенностей реализации туда можно вставлять фильтры(cм.пример).
Если не заданы tree_title_field и tree_display теперь выводится __unicode__, а переименовывание недоступно. Если задан только tree_display — tree_title_field берется из первого поля tree_display.
Также добавил проверку прав пользователя на удаление/изменение узлов, а в дереве недоступные пользователю команды становятся серыми. Ну и исправлено несколько багов.
from app1.models import Category
from mpttadmin import MpttAdmin
class CategoryAdmin(MpttAdmin):
tree_title_field = 'name'
tree_display = ('name','slug','created|date') #name тут указывать необязательно
class Meta:
model = Category
hg clone http://code.tabed.org/mptt_admin/






Comments
обалденное расширение. Спасибо! Критику принимаешь? точнее пожелания!
очень бы хотелось через admin.py уметь:
могу еще накидать мыслей
Прикольная фича для админки — не знал, буду пользоваться.
Здравствуйте… Пользуюсь вашим софтом, прекрасно работает, спасибо. Есть одно пожелание: в mptt для удобства сделаны такие методы как insert_at, move_to и так делее. Они по своей сути вызывают уже действенные методы insert_node, move_node соответственно. Удобно их перекрывать и, при необходимости, добавлять необходимую логику. В исходниках mptt_admin, к сожалению, вызываются именно действенные методы, как например в случае с перемещением узлов мышью:
def move_node(self,request): -> функция mptt_admin
….self.Meta.model.tree.move_node(node,target,position) -> функция mptt
В следствие чего, добавленная логика в перекрытые методы, например в move_to, игнорируется. По этому, думаю лучше будет сделать вот так:
def move_node(self,request): -> функция mptt_admin
….self.Meta.model.move_to(node,target,position) -> функция mptt
тогда добавленная логика будет распространяться и на действие — перемещение мышью узлов.