Initial new page admin commit. Working on faking the admin out through inlines instea...
[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
9
10
11 class ContentletInline(admin.StackedInline):
12         model = Contentlet
13         extra = 0
14         max_num = 0
15         formset = ContentletInlineFormSet
16         can_delete = False
17         template = 'admin/philo/edit_inline/tabular_container.html'
18
19
20 class ContentReferenceInline(admin.StackedInline):
21         model = ContentReference
22         extra = 0
23         max_num = 0
24         formset = ContentReferenceInlineFormSet
25         can_delete = False
26         template = 'admin/philo/edit_inline/tabular_container.html'
27
28
29 class PageAdmin(ViewAdmin):
30         add_form_template = 'admin/philo/page/add_form.html'
31         fieldsets = (
32                 (None, {
33                         'fields': ('title', 'template')
34                 }),
35         )
36         list_display = ('title', 'template')
37         list_filter = ('template',)
38         search_fields = ['title', 'contentlets__content']
39         inlines = [ContentletInline, ContentReferenceInline] + ViewAdmin.inlines
40
41
42 class TemplateAdmin(admin.ModelAdmin):
43         prepopulated_fields = {'slug': ('name',)}
44         fieldsets = (
45                 (None, {
46                         'fields': ('parent', 'name', 'slug')
47                 }),
48                 ('Documentation', {
49                         'classes': COLLAPSE_CLASSES,
50                         'fields': ('documentation',)
51                 }),
52                 (None, {
53                         'fields': ('code',)
54                 }),
55                 ('Advanced', {
56                         'classes': COLLAPSE_CLASSES,
57                         'fields': ('mimetype',)
58                 }),
59         )
60         save_on_top = True
61         save_as = True
62         list_display = ('__unicode__', 'slug', 'get_path',)
63         form = TemplateForm
64
65
66 admin.site.register(Page, PageAdmin)
67 admin.site.register(Template, TemplateAdmin)