PyInventory/src/inventory/admin/memo.py

76 wiersze
2.1 KiB
Python

import logging
import tagulous
from adminsortable2.admin import SortableAdminMixin, SortableInlineAdminMixin
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from import_export.admin import ImportExportMixin
from import_export.resources import ModelResource
from inventory.admin.base import BaseFileModelInline, BaseImageModelInline, BaseUserAdmin, UserInlineMixin
from inventory.admin.tagulous_fix import TagulousModelAdminFix
from inventory.models import MemoLinkModel, MemoModel
from inventory.models.memo import MemoFileModel, MemoImageModel
logger = logging.getLogger(__name__)
class MemoLinkModelInline(UserInlineMixin, SortableInlineAdminMixin, admin.TabularInline):
model = MemoLinkModel
extra = 0
class MemoImageModelInline(BaseImageModelInline):
model = MemoImageModel
class MemoFileModelInline(BaseFileModelInline):
model = MemoFileModel
class MemoModelResource(ModelResource):
class Meta:
model = MemoModel
@admin.register(MemoModel)
class MemoModelAdmin(TagulousModelAdminFix, ImportExportMixin, SortableAdminMixin, BaseUserAdmin):
def get_max_order(self, request, obj=None):
# Work-a-round for: https://github.com/jrief/django-admin-sortable2/issues/341
return 0
date_hierarchy = 'create_dt'
list_display = (
'name', 'update_dt'
)
ordering = ('-update_dt',)
list_display_links = ('name',)
list_filter = ('tags',)
search_fields = ('name', 'memo', 'tags__name')
fieldsets = (
(_('Internals'), {
'classes': ('collapse',),
'fields': (
('id', 'version'),
'user',
)
}),
(_('Meta'), {
'classes': ('collapse',),
'fields': (
'create_dt', 'update_dt'
)
}),
(_('Basic'), {'fields': (
'name',
'memo',
'tags',
)}),
)
readonly_fields = ('id', 'create_dt', 'update_dt', 'user')
inlines = (MemoImageModelInline, MemoFileModelInline, MemoLinkModelInline)
tagulous.admin.enhance(MemoModel, MemoModelAdmin)