1 from django.contrib import admin
2 from philo.admin import TreeEntityAdmin, COLLAPSE_CLASSES, NodeAdmin
3 from philo.models import Node
4 from philo.contrib.shipherd.models import Navigation
7 NAVIGATION_RAW_ID_FIELDS = ('hosting_node', 'parent', 'target_node')
10 class NavigationInline(admin.StackedInline):
16 'fields': ('target_node', 'url_or_subpath',)
19 'fields': ('reversing_parameters', 'order', 'depth'),
20 'classes': COLLAPSE_CLASSES
23 'fields': ('hosting_node', 'parent'),
24 'classes': COLLAPSE_CLASSES
27 raw_id_fields = NAVIGATION_RAW_ID_FIELDS
30 sortable_field_name = 'order'
33 class NavigationNavigationInline(NavigationInline):
34 verbose_name = "child"
35 verbose_name_plural = "children"
38 class NodeHostedNavigationInline(NavigationInline):
39 verbose_name_plural = 'hosted navigation'
40 fk_name = 'hosting_node'
43 class NodeTargetingNavigationInline(NavigationInline):
44 verbose_name_plural = 'targeting navigation'
45 fk_name = 'target_node'
48 class NavigationAdmin(TreeEntityAdmin):
49 list_display = ('__unicode__', 'target_node', 'url_or_subpath', 'reversing_parameters')
52 'fields': ('text', 'hosting_node',)
55 'fields': ('target_node', 'url_or_subpath',)
58 'fields': ('reversing_parameters', 'depth'),
59 'classes': COLLAPSE_CLASSES
62 'fields': ('parent', 'order'),
63 'classes': COLLAPSE_CLASSES
66 raw_id_fields = NAVIGATION_RAW_ID_FIELDS
67 inlines = [NavigationNavigationInline] + TreeEntityAdmin.inlines
70 NodeAdmin.inlines = [NodeHostedNavigationInline, NodeTargetingNavigationInline] + NodeAdmin.inlines
73 admin.site.unregister(Node)
74 admin.site.register(Node, NodeAdmin)
75 admin.site.register(Navigation, NavigationAdmin)