Merge branch 'master' of git://github.com/melinath/philo
[philo.git] / admin / pages.py
1 from django.contrib import admin
2 from django import forms
3 from philo.admin import widgets
4 from philo.admin.base import COLLAPSE_CLASSES
5 from philo.admin.nodes import ViewAdmin
6 from philo.models.pages import Page, Template, Contentlet, ContentReference
7 from philo.forms import ContentletInlineFormSet, ContentReferenceInlineFormSet, ContentletForm, ContentReferenceForm
8
9
10 class ContentletInline(admin.StackedInline):
11         model = Contentlet
12         extra = 0
13         max_num = 0
14         formset = ContentletInlineFormSet
15         form = ContentletForm
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         form = ContentReferenceForm
26         can_delete = False
27         template = 'admin/philo/edit_inline/tabular_container.html'
28
29
30 class PageAdmin(ViewAdmin):
31         add_form_template = 'admin/philo/page/add_form.html'
32         fieldsets = (
33                 (None, {
34                         'fields': ('title', 'template')
35                 }),
36         )
37         list_display = ('title', 'template')
38         list_filter = ('template',)
39         search_fields = ['title', 'contentlets__content']
40         inlines = [ContentletInline, ContentReferenceInline] + ViewAdmin.inlines
41
42
43 class TemplateAdmin(admin.ModelAdmin):
44         prepopulated_fields = {'slug': ('name',)}
45         fieldsets = (
46                 (None, {
47                         'fields': ('parent', 'name', 'slug')
48                 }),
49                 ('Documentation', {
50                         'classes': COLLAPSE_CLASSES,
51                         'fields': ('documentation',)
52                 }),
53                 (None, {
54                         'fields': ('code',)
55                 }),
56                 ('Advanced', {
57                         'classes': COLLAPSE_CLASSES,
58                         'fields': ('mimetype',)
59                 }),
60         )
61         save_on_top = True
62         save_as = True
63         list_display = ('__unicode__', 'slug', 'get_path',)
64
65
66 admin.site.register(Page, PageAdmin)
67 admin.site.register(Template, TemplateAdmin)