Added NodeOverrideInlineFormSet to clean up admin editing of node overrides by only...
[philo.git] / admin / nodes.py
1 from django.contrib import admin
2 from philo.admin.base import EntityAdmin, TreeEntityAdmin, COLLAPSE_CLASSES
3 from philo.models import Node, Redirect, File, NodeNavigationOverride
4 from philo.forms import NodeWithOverrideForm, NodeOverrideInlineFormSet
5
6
7 class ChildNavigationOverrideInline(admin.StackedInline):
8         fk_name = 'parent'
9         model = NodeNavigationOverride
10         formset = NodeOverrideInlineFormSet
11         sortable_field_name = 'order'
12         verbose_name = 'child'
13         verbose_name_plural = 'children'
14         extra = 0
15         max_num = 0
16
17
18 class NodeAdmin(TreeEntityAdmin):
19         form = NodeWithOverrideForm
20         fieldsets = (
21                 (None, {
22                         'fields': ('parent', 'slug', 'view_content_type', 'view_object_id'),
23                 }),
24                 ('Navigation Overrides', {
25                         'fields': ('title', 'url', 'child_navigation'),
26                         'classes': COLLAPSE_CLASSES
27                 })
28         )
29         inlines = [ChildNavigationOverrideInline] + TreeEntityAdmin.inlines
30
31
32 class ViewAdmin(EntityAdmin):
33         pass
34
35
36 class RedirectAdmin(ViewAdmin):
37         fieldsets = (
38                 (None, {
39                         'fields': ('target', 'status_code')
40                 }),
41         )
42         list_display = ('target', 'status_code')
43         list_filter = ('status_code',)
44
45
46 class FileAdmin(ViewAdmin):
47         fieldsets = (
48                 (None, {
49                         'fields': ('file', 'mimetype')
50                 }),
51         )
52         list_display = ('mimetype', 'file')
53
54
55 admin.site.register(Node, NodeAdmin)
56 admin.site.register(Redirect, RedirectAdmin)
57 admin.site.register(File, FileAdmin)