Merge branch 'admin-cleanup'
authorJoseph Spiros <joseph.spiros@ithinksw.com>
Wed, 16 Jun 2010 14:41:39 +0000 (10:41 -0400)
committerJoseph Spiros <joseph.spiros@ithinksw.com>
Wed, 16 Jun 2010 14:41:39 +0000 (10:41 -0400)
* admin-cleanup:
  Making Attribute and Relationship inlines collapsible with custom template.
  Hiding save_on_top on the Page add form template, and adding template documentation to Page change forms when the page's selected template provides it.
  Pages now have a custom add form template which notifies the user that they must select a template and save before containers will be available.
  Implementing NodeAdmin and subclasses for built-in Node types.

1  2 
admin.py

diff --combined admin.py
+++ b/admin.py
@@@ -7,7 -7,7 +7,7 @@@ from django.utils.translation import ug
  from django.utils.safestring import mark_safe
  from django.utils.html import escape
  from django.utils.text import truncate_words
 -from models import *
 +from philo.models import *
  
  
  class AttributeInline(generic.GenericTabularInline):
@@@ -15,7 -15,7 +15,7 @@@
        ct_fk_field = 'entity_object_id'
        model = Attribute
        extra = 1
-       classes = ('collapse-closed',)
+       template = 'admin/philo/edit_inline/tabular_collapse.html'
        allow_add = True
  
  
@@@ -24,7 -24,7 +24,7 @@@ class RelationshipInline(generic.Generi
        ct_fk_field = 'entity_object_id'
        model = Relationship
        extra = 1
-       classes = ('collapse-closed',)
+       template = 'admin/philo/edit_inline/tabular_collapse.html'
        allow_add = True
  
  
@@@ -45,26 -45,8 +45,8 @@@ class CollectionAdmin(admin.ModelAdmin)
        inlines = [CollectionMemberInline]
  
  
- class TemplateAdmin(admin.ModelAdmin):
-       prepopulated_fields = {'slug': ('name',)}
-       fieldsets = (
-               (None, {
-                       'fields': ('parent', 'name', 'slug')
-               }),
-               ('Documentation', {
-                       'classes': ('collapse', 'collapse-closed'),
-                       'fields': ('documentation',)
-               }),
-               (None, {
-                       'fields': ('code',)
-               }),
-               ('Advanced', {
-                       'classes': ('collapse','collapse-closed'),
-                       'fields': ('mimetype',)
-               }),
-       )
-       save_on_top = True
-       save_as = True
+ class NodeAdmin(EntityAdmin):
+       pass
  
  
  class ModelLookupWidget(forms.TextInput):
                return mark_safe(output)
  
  
- class PageAdmin(EntityAdmin):
+ class RedirectAdmin(NodeAdmin):
+       fieldsets = (
+               (None, {
+                       'fields': ('slug', 'target', 'status_code')
+               }),
+               ('URL/Tree/Hierarchy', {
+                       'classes': ('collapse', 'collapse-closed'),
+                       'fields': ('parent',)
+               }),
+       )
+ class FileAdmin(NodeAdmin):
+       prepopulated_fields = {'slug': ('file',)}
+       fieldsets = (
+               (None, {
+                       'fields': ('file', 'slug', 'mimetype')
+               }),
+               ('URL/Tree/Hierarchy', {
+                       'classes': ('collapse', 'collapse-closed'),
+                       'fields': ('parent',)
+               }),
+       )
+ class PageAdmin(NodeAdmin):
+       add_form_template = 'admin/philo/page/add_form.html'
        prepopulated_fields = {'slug': ('title',)}
        fieldsets = (
                (None, {
-                       'fields': ('title', 'template')
+                       'fields': ('title', 'slug', 'template')
                }),
                ('URL/Tree/Hierarchy', {
                        'classes': ('collapse', 'collapse-closed'),
-                       'fields': ('parent', 'slug')
+                       'fields': ('parent',)
                }),
        )
        list_display = ('title', 'path', 'template')
        def get_fieldsets(self, request, obj=None, **kwargs):
                fieldsets = list(self.fieldsets)
                if obj: # if no obj, creating a new page, thus no template set, thus no containers
-                       page = obj
-                       template = page.template
+                       template = obj.template
+                       if template.documentation:
+                               fieldsets.append(('Template Documentation', {
+                                       'description': template.documentation
+                               }))
                        contentlet_containers, contentreference_containers = template.containers
                        for container_name in contentlet_containers:
                                fieldsets.append((('Container: %s' % container_name), {
                                        contentreference.save()
  
  
+ class TemplateAdmin(admin.ModelAdmin):
+       prepopulated_fields = {'slug': ('name',)}
+       fieldsets = (
+               (None, {
+                       'fields': ('parent', 'name', 'slug')
+               }),
+               ('Documentation', {
+                       'classes': ('collapse', 'collapse-closed'),
+                       'fields': ('documentation',)
+               }),
+               (None, {
+                       'fields': ('code',)
+               }),
+               ('Advanced', {
+                       'classes': ('collapse','collapse-closed'),
+                       'fields': ('mimetype',)
+               }),
+       )
+       save_on_top = True
+       save_as = True
  admin.site.register(Collection, CollectionAdmin)
- admin.site.register(Redirect)
- admin.site.register(File)
+ admin.site.register(Redirect, RedirectAdmin)
+ admin.site.register(File, FileAdmin)
  admin.site.register(Page, PageAdmin)
  admin.site.register(Template, TemplateAdmin)