Display of ContainerFormSets functional; display of their values is not; saving of...
[philo.git] / admin / pages.py
1 from django.contrib import admin
2 from django import forms
3 from django.template import Template as DjangoTemplate
4 from philo.admin import widgets
5 from philo.admin.base import COLLAPSE_CLASSES
6 from philo.admin.nodes import ViewAdmin
7 from philo.models.pages import Page, Template, Contentlet, ContentReference
8 from philo.forms import TemplateForm, ContentletInlineFormSet, ContentReferenceInlineFormSet, ContentletForm, ContentReferenceForm
9
10
11 class ContentletInline(admin.StackedInline):
12         model = Contentlet
13         extra = 0
14         max_num = 0
15         formset = ContentletInlineFormSet
16         form = ContentletForm
17         can_delete = False
18         template = 'admin/philo/edit_inline/tabular_container.html'
19
20
21 class ContentReferenceInline(admin.StackedInline):
22         model = ContentReference
23         extra = 0
24         max_num = 0
25         formset = ContentReferenceInlineFormSet
26         form = ContentReferenceForm
27         can_delete = False
28         template = 'admin/philo/edit_inline/tabular_container.html'
29
30
31 class PageAdmin(ViewAdmin):
32         add_form_template = 'admin/philo/page/add_form.html'
33         fieldsets = (
34                 (None, {
35                         'fields': ('title', 'template')
36                 }),
37         )
38         list_display = ('title', 'template')
39         list_filter = ('template',)
40         search_fields = ['title', 'contentlets__content']
41         inlines = [ContentletInline, ContentReferenceInline] + ViewAdmin.inlines
42
43
44 class TemplateAdmin(admin.ModelAdmin):
45         prepopulated_fields = {'slug': ('name',)}
46         fieldsets = (
47                 (None, {
48                         'fields': ('parent', 'name', 'slug')
49                 }),
50                 ('Documentation', {
51                         'classes': COLLAPSE_CLASSES,
52                         'fields': ('documentation',)
53                 }),
54                 (None, {
55                         'fields': ('code',)
56                 }),
57                 ('Advanced', {
58                         'classes': COLLAPSE_CLASSES,
59                         'fields': ('mimetype',)
60                 }),
61         )
62         save_on_top = True
63         save_as = True
64         list_display = ('__unicode__', 'slug', 'get_path',)
65         form = TemplateForm
66
67
68 admin.site.register(Page, PageAdmin)
69 admin.site.register(Template, TemplateAdmin)