Moved philo files into a philo subdirectory and added a setup.py file. Philo can...
[philo.git] / philo / admin / pages.py
diff --git a/philo/admin/pages.py b/philo/admin/pages.py
new file mode 100644 (file)
index 0000000..f9e96c0
--- /dev/null
@@ -0,0 +1,81 @@
+from django.conf import settings
+from django.contrib import admin
+from django import forms
+from philo.admin.base import COLLAPSE_CLASSES, TreeAdmin
+from philo.admin.nodes import ViewAdmin
+from philo.models.pages import Page, Template, Contentlet, ContentReference
+from philo.admin.forms.containers import *
+
+
+class ContentletInline(admin.StackedInline):
+       model = Contentlet
+       extra = 0
+       max_num = 0
+       formset = ContentletInlineFormSet
+       form = ContentletForm
+       can_delete = False
+       classes = ('collapse-open', 'collapse','open')
+       if 'grappelli' in settings.INSTALLED_APPS:
+               template = 'admin/philo/edit_inline/grappelli_tabular_container.html'
+       else:
+               template = 'admin/philo/edit_inline/tabular_container.html'
+
+
+class ContentReferenceInline(admin.StackedInline):
+       model = ContentReference
+       extra = 0
+       max_num = 0
+       formset = ContentReferenceInlineFormSet
+       form = ContentReferenceForm
+       can_delete = False
+       classes = ('collapse-open', 'collapse','open')
+       if 'grappelli' in settings.INSTALLED_APPS:
+               template = 'admin/philo/edit_inline/grappelli_tabular_container.html'
+       else:
+               template = 'admin/philo/edit_inline/tabular_container.html'
+
+
+class PageAdmin(ViewAdmin):
+       add_form_template = 'admin/philo/page/add_form.html'
+       fieldsets = (
+               (None, {
+                       'fields': ('title', 'template')
+               }),
+       )
+       list_display = ('title', 'template')
+       list_filter = ('template',)
+       search_fields = ['title', 'contentlets__content']
+       inlines = [ContentletInline, ContentReferenceInline] + ViewAdmin.inlines
+       
+       def response_add(self, request, obj, post_url_continue='../%s/'):
+               # Shamelessly cribbed from django/contrib/auth/admin.py:143
+               if '_addanother' not in request.POST and '_popup' not in request.POST:
+                       request.POST['_continue'] = 1
+               return super(PageAdmin, self).response_add(request, obj, post_url_continue)
+
+
+class TemplateAdmin(TreeAdmin):
+       prepopulated_fields = {'slug': ('name',)}
+       fieldsets = (
+               (None, {
+                       'fields': ('parent', 'name', 'slug')
+               }),
+               ('Documentation', {
+                       'classes': COLLAPSE_CLASSES,
+                       'fields': ('documentation',)
+               }),
+               (None, {
+                       'fields': ('code',)
+               }),
+               ('Advanced', {
+                       'classes': COLLAPSE_CLASSES,
+                       'fields': ('mimetype',)
+               }),
+       )
+       save_on_top = True
+       save_as = True
+       list_display = ('__unicode__', 'slug', 'get_path',)
+
+
+admin.site.register(Page, PageAdmin)
+admin.site.register(Template, TemplateAdmin)
\ No newline at end of file