93 lines
2.1 KiB
Python
93 lines
2.1 KiB
Python
from django.contrib import admin
|
|
from .models import Entry, Tag, Attachment
|
|
from ckeditor.widgets import CKEditorWidget
|
|
from django.utils.translation import ugettext as _
|
|
from reversion.admin import VersionAdmin
|
|
|
|
|
|
from django import forms
|
|
|
|
|
|
class EntryAdminForm(forms.ModelForm):
|
|
content = forms.CharField(widget=CKEditorWidget())
|
|
|
|
class Meta:
|
|
model = Entry
|
|
fields = ('title', 'slug', 'draft', 'date', 'tags', 'content')
|
|
|
|
|
|
#
|
|
# ENTRY
|
|
#
|
|
class EntryAdmin(VersionAdmin):
|
|
form = EntryAdminForm
|
|
|
|
list_display = ('title', 'date', 'status', 'tag_list', 'preview_link')
|
|
list_display_links = ('title', )
|
|
list_filter = ('date', 'draft', )
|
|
search_fields = ('title', 'content', 'markdown', )
|
|
|
|
filter_horizontal = ('tags',)
|
|
|
|
actions_on_top = True
|
|
|
|
prepopulated_fields = {"slug": ("title",)}
|
|
|
|
ignore_duplicate_revisions = True
|
|
|
|
suit_form_tabs = (
|
|
('general', _('General')),
|
|
('content', _('Content')),
|
|
)
|
|
|
|
fieldsets = [
|
|
('General', {
|
|
'classes': ('suit-tab suit-tab-general collapse',),
|
|
'fields': (('title', 'slug', 'draft'), ('date', 'tags'), )
|
|
}),
|
|
('Content', {
|
|
'classes': ('suit-tab suit-tab-content full-width wide',),
|
|
'fields': ('content', )
|
|
}),
|
|
('Markdown', {
|
|
'classes': ('suit-tab suit-tab-content full-width collapse',),
|
|
'fields': ('markdown', )
|
|
}),
|
|
|
|
]
|
|
|
|
def preview_link(self, obj):
|
|
return '<a href="%s">View »</a>' % (
|
|
obj.get_absolute_url()
|
|
)
|
|
preview_link.allow_tags = True
|
|
|
|
def tag_list(self, obj):
|
|
return ", ".join([x.name for x in obj.tags.all()])
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
if not change:
|
|
obj.author = request.user
|
|
super(self.__class__, self).save_model(request, obj, form, change)
|
|
|
|
|
|
admin.site.register(Entry, EntryAdmin)
|
|
|
|
|
|
#
|
|
# TAG
|
|
#
|
|
class TagAdmin(VersionAdmin):
|
|
pass
|
|
|
|
admin.site.register(Tag, TagAdmin)
|
|
|
|
|
|
#
|
|
# ATTACHMENT
|
|
#
|
|
class AttachmentAdmin(VersionAdmin):
|
|
pass
|
|
|
|
admin.site.register(Attachment, AttachmentAdmin)
|