Removed location models and subclass limiting in favor of a ContentTypeRegistryLimite...
[philo.git] / contrib / penfield / admin.py
index 4be78c0..950539d 100644 (file)
@@ -1,6 +1,15 @@
 from django.contrib import admin
-from philo.admin import EntityAdmin
-from philo.contrib.penfield.models import BlogEntry, Blog, BlogView, Newsletter, NewsletterArticle, NewsletterIssue, NewsletterView, Embed
+from django import forms
+from philo.admin import EntityAdmin, AddTagAdmin, COLLAPSE_CLASSES
+from philo.contrib.penfield.models import BlogEntry, Blog, BlogView, Newsletter, NewsletterArticle, NewsletterIssue, NewsletterView
+
+
+class DelayedDateForm(forms.ModelForm):
+       date_field = 'date'
+       
+       def __init__(self, *args, **kwargs):
+               super(DelayedDateForm, self).__init__(*args, **kwargs)
+               self.fields[self.date_field].required = False
 
 
 class TitledAdmin(EntityAdmin):
@@ -12,20 +21,80 @@ class BlogAdmin(TitledAdmin):
        pass
 
 
-class BlogEntryAdmin(TitledAdmin):
+class BlogEntryAdmin(TitledAdmin, AddTagAdmin):
+       form = DelayedDateForm
        filter_horizontal = ['tags']
+       list_filter = ['author', 'blog']
+       date_hierarchy = 'date'
+       search_fields = ('content',)
+       list_display = ['title', 'date', 'author']
+       raw_id_fields = ('author',)
+       fieldsets = (
+               (None, {
+                       'fields': ('title', 'author', 'blog')
+               }),
+               ('Content', {
+                       'fields': ('content', 'excerpt', 'tags'),
+               }),
+               ('Advanced', {
+                       'fields': ('slug', 'date'),
+                       'classes': COLLAPSE_CLASSES
+               })
+       )
+       related_lookup_fields = {'fk': raw_id_fields}
 
 
 class BlogViewAdmin(EntityAdmin):
-       pass
+       fieldsets = (
+               (None, {
+                       'fields': ('blog',)
+               }),
+               ('Pages', {
+                       'fields': ('index_page', 'entry_page', 'tag_page')
+               }),
+               ('Archive Pages', {
+                       'fields': ('entry_archive_page', 'tag_archive_page')
+               }),
+               ('General Settings', {
+                       'fields': ('entry_permalink_style', 'entry_permalink_base', 'tag_permalink_base', 'entries_per_page'),
+                       'classes': COLLAPSE_CLASSES
+               }),
+               ('Feed Settings', {
+                       'fields': ( 'feeds_enabled', 'feed_suffix', 'feed_type', 'item_title_template', 'item_description_template',),
+                       'classes': COLLAPSE_CLASSES
+               })
+       )
+       raw_id_fields = ('index_page', 'entry_page', 'tag_page', 'entry_archive_page', 'tag_archive_page', 'item_title_template', 'item_description_template',)
+       related_lookup_fields = {'fk': raw_id_fields}
 
 
 class NewsletterAdmin(TitledAdmin):
        pass
 
 
-class NewsletterArticleAdmin(TitledAdmin):
-       pass
+class NewsletterArticleAdmin(TitledAdmin, AddTagAdmin):
+       form = DelayedDateForm
+       filter_horizontal = ('tags', 'authors')
+       list_filter = ('newsletter',)
+       date_hierarchy = 'date'
+       search_fields = ('title', 'authors__name',)
+       list_display = ['title', 'date', 'author_names']
+       fieldsets = (
+               (None, {
+                       'fields': ('title', 'authors', 'newsletter')
+               }),
+               ('Content', {
+                       'fields': ('full_text', 'lede', 'tags')
+               }),
+               ('Advanced', {
+                       'fields': ('slug', 'date'),
+                       'classes': COLLAPSE_CLASSES
+               })
+       )
+       
+       def author_names(self, obj):
+               return ', '.join([author.get_full_name() for author in obj.authors.all()])
+       author_names.short_description = "Authors"
 
 
 class NewsletterIssueAdmin(TitledAdmin):
@@ -33,14 +102,29 @@ class NewsletterIssueAdmin(TitledAdmin):
 
 
 class NewsletterViewAdmin(EntityAdmin):
-       pass
-
-
-class EmbedAdmin(admin.ModelAdmin):
-       pass
+       fieldsets = (
+               (None, {
+                       'fields': ('newsletter',)
+               }),
+               ('Pages', {
+                       'fields': ('index_page', 'article_page', 'issue_page')
+               }),
+               ('Archive Pages', {
+                       'fields': ('article_archive_page', 'issue_archive_page')
+               }),
+               ('Permalinks', {
+                       'fields': ('article_permalink_style', 'article_permalink_base', 'issue_permalink_base'),
+                       'classes': COLLAPSE_CLASSES
+               }),
+               ('Feeds', {
+                       'fields': ( 'feeds_enabled', 'feed_suffix', 'feed_type', 'item_title_template', 'item_description_template',),
+                       'classes': COLLAPSE_CLASSES
+               })
+       )
+       raw_id_fields = ('index_page', 'article_page', 'issue_page', 'article_archive_page', 'issue_archive_page', 'item_title_template', 'item_description_template',)
+       related_lookup_fields = {'fk': raw_id_fields}
 
 
-admin.site.register(Embed, EmbedAdmin)
 admin.site.register(Blog, BlogAdmin)
 admin.site.register(BlogEntry, BlogEntryAdmin)
 admin.site.register(BlogView, BlogViewAdmin)