16c2aaf17e46d6a75a931d45bb932294bd0bb0ad
[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
5
6
7 class ChildNavigationOverrideInline(admin.StackedInline):
8         fk_name = 'parent'
9         model = NodeNavigationOverride
10         sortable_field_name = 'order'
11         verbose_name = 'child'
12         verbose_name_plural = 'children'
13         extra = 0
14         max_num = 0
15
16
17 class NodeAdmin(TreeEntityAdmin):
18         form = NodeWithOverrideForm
19         fieldsets = (
20                 (None, {
21                         'fields': ('parent', 'slug', 'view_content_type', 'view_object_id'),
22                 }),
23                 ('Navigation Overrides', {
24                         'fields': ('title', 'url', 'child_navigation'),
25                         'classes': COLLAPSE_CLASSES
26                 })
27         )
28         inlines = [ChildNavigationOverrideInline] + TreeEntityAdmin.inlines
29
30
31 class ViewAdmin(EntityAdmin):
32         pass
33
34
35 class RedirectAdmin(ViewAdmin):
36         fieldsets = (
37                 (None, {
38                         'fields': ('target', 'status_code')
39                 }),
40         )
41         list_display = ('target', 'status_code')
42         list_filter = ('status_code',)
43
44
45 class FileAdmin(ViewAdmin):
46         fieldsets = (
47                 (None, {
48                         'fields': ('file', 'mimetype')
49                 }),
50         )
51         list_display = ('mimetype', 'file')
52
53
54 admin.site.register(Node, NodeAdmin)
55 admin.site.register(Redirect, RedirectAdmin)
56 admin.site.register(File, FileAdmin)