Split shipherd NodeNavigationInline into inlines for hosted/targeting inlines. Added...
[philo.git] / contrib / shipherd / admin.py
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
5
6
7 NAVIGATION_RAW_ID_FIELDS = ('hosting_node', 'parent', 'target_node')
8
9
10 class NavigationInline(admin.StackedInline):
11         fieldsets = (
12                 (None, {
13                         'fields': ('text',)
14                 }),
15                 ('Target', {
16                         'fields': ('target_node', 'url_or_subpath',)
17                 }),
18                 ('Advanced', {
19                         'fields': ('reversing_parameters', 'order', 'depth'),
20                         'classes': COLLAPSE_CLASSES
21                 }),
22                 ('Expert', {
23                         'fields': ('hosting_node', 'parent'),
24                         'classes': COLLAPSE_CLASSES
25                 })
26         )
27         raw_id_fields = NAVIGATION_RAW_ID_FIELDS
28         model = Navigation
29         extra = 1
30         sortable_field_name = 'order'
31
32
33 class NavigationNavigationInline(NavigationInline):
34         verbose_name = "child"
35         verbose_name_plural = "children"
36
37
38 class NodeHostedNavigationInline(NavigationInline):
39         verbose_name_plural = 'hosted navigation'
40         fk_name = 'hosting_node'
41
42
43 class NodeTargetingNavigationInline(NavigationInline):
44         verbose_name_plural = 'targeting navigation'
45         fk_name = 'target_node'
46
47
48 class NavigationAdmin(TreeEntityAdmin):
49         list_display = ('__unicode__', 'target_node', 'url_or_subpath', 'reversing_parameters')
50         fieldsets = (
51                 (None, {
52                         'fields': ('text', 'hosting_node',)
53                 }),
54                 ('Target', {
55                         'fields': ('target_node', 'url_or_subpath',)
56                 }),
57                 ('Advanced', {
58                         'fields': ('reversing_parameters', 'depth'),
59                         'classes': COLLAPSE_CLASSES
60                 }),
61                 ('Expert', {
62                         'fields': ('parent', 'order'),
63                         'classes': COLLAPSE_CLASSES
64                 })
65         )
66         raw_id_fields = NAVIGATION_RAW_ID_FIELDS
67         inlines = [NavigationNavigationInline] + TreeEntityAdmin.inlines
68
69
70 NodeAdmin.inlines = [NodeHostedNavigationInline, NodeTargetingNavigationInline] + NodeAdmin.inlines
71
72
73 admin.site.unregister(Node)
74 admin.site.register(Node, NodeAdmin)
75 admin.site.register(Navigation, NavigationAdmin)