X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/0d560fdc9e0351ebe039dcc9d9d14b6b560ba00c..c11e2882169bdc06828c782e65bde3f13a03d044:/contrib/shipherd/admin.py diff --git a/contrib/shipherd/admin.py b/contrib/shipherd/admin.py index 606971d..93d21e5 100644 --- a/contrib/shipherd/admin.py +++ b/contrib/shipherd/admin.py @@ -1,54 +1,90 @@ from django.contrib import admin -from philo.admin import TreeEntityAdmin, COLLAPSE_CLASSES, NodeAdmin -from philo.contrib.shipherd.models import Navigation +from philo.admin import TreeEntityAdmin, COLLAPSE_CLASSES, NodeAdmin, EntityAdmin +from philo.models import Node +from philo.contrib.shipherd.models import NavigationItem, Navigation -NAVIGATION_RAW_ID_FIELDS = ('hosting_node', 'parent', 'target_node') +NAVIGATION_RAW_ID_FIELDS = ('navigation', 'parent', 'target_node') -class NavigationInline(admin.StackedInline): +class NavigationItemInline(admin.StackedInline): + raw_id_fields = NAVIGATION_RAW_ID_FIELDS + model = NavigationItem + extra = 1 + sortable_field_name = 'order' + related_lookup_fields = {'fk': raw_id_fields} + + +class NavigationItemChildInline(NavigationItemInline): + verbose_name = "child" + verbose_name_plural = "children" fieldsets = ( (None, { - 'fields': ('text',) + 'fields': ('text', 'parent') }), ('Target', { 'fields': ('target_node', 'url_or_subpath',) }), ('Advanced', { - 'fields': ('reversing_parameters', 'order', 'depth'), + 'fields': ('reversing_parameters', 'order'), 'classes': COLLAPSE_CLASSES + }) + ) + + +class NavigationNavigationItemInline(NavigationItemInline): + fieldsets = ( + (None, { + 'fields': ('text', 'navigation') }), - ('Expert', { - 'fields': ('hosting_node', 'parent'), + ('Target', { + 'fields': ('target_node', 'url_or_subpath',) + }), + ('Advanced', { + 'fields': ('reversing_parameters', 'order'), 'classes': COLLAPSE_CLASSES }) ) - raw_id_fields = NAVIGATION_RAW_ID_FIELDS - model = Navigation - extra = 1 - sortable_field_name = 'order' -class NavigationNavigationInline(NavigationInline): - verbose_name = "child" - verbose_name_plural = "children" +class NodeNavigationItemInline(NavigationItemInline): + verbose_name_plural = 'targeting navigation' + fieldsets = ( + (None, { + 'fields': ('text',) + }), + ('Target', { + 'fields': ('target_node', 'url_or_subpath',) + }), + ('Advanced', { + 'fields': ('reversing_parameters', 'order'), + 'classes': COLLAPSE_CLASSES + }), + ('Expert', { + 'fields': ('parent', 'navigation') + }), + ) + + +class NodeNavigationInline(admin.TabularInline): + model = Navigation + extra = 1 -class NodeNavigationInline(NavigationInline): - verbose_name_plural = 'navigation' +NodeAdmin.inlines = [NodeNavigationInline, NodeNavigationItemInline] + NodeAdmin.inlines -class NavigationAdmin(TreeEntityAdmin): +class NavigationItemAdmin(TreeEntityAdmin): list_display = ('__unicode__', 'target_node', 'url_or_subpath', 'reversing_parameters') fieldsets = ( (None, { - 'fields': ('text', 'hosting_node',) + 'fields': ('text', 'navigation',) }), ('Target', { 'fields': ('target_node', 'url_or_subpath',) }), ('Advanced', { - 'fields': ('reversing_parameters', 'depth'), + 'fields': ('reversing_parameters',), 'classes': COLLAPSE_CLASSES }), ('Expert', { @@ -57,10 +93,17 @@ class NavigationAdmin(TreeEntityAdmin): }) ) raw_id_fields = NAVIGATION_RAW_ID_FIELDS - inlines = [NavigationNavigationInline] + TreeEntityAdmin.inlines + related_lookup_fields = {'fk': raw_id_fields} + inlines = [NavigationItemChildInline] + TreeEntityAdmin.inlines -NodeAdmin.inlines = [NodeNavigationInline] + NodeAdmin.inlines +class NavigationAdmin(EntityAdmin): + inlines = [NavigationNavigationItemInline] + raw_id_fields = ['node'] + related_lookup_fields = {'fk': raw_id_fields} -admin.site.register(Navigation, NavigationAdmin) \ No newline at end of file +admin.site.unregister(Node) +admin.site.register(Node, NodeAdmin) +admin.site.register(Navigation, NavigationAdmin) +admin.site.register(NavigationItem, NavigationItemAdmin) \ No newline at end of file