from django.contrib import admin from adminsortable2.admin import SortableAdminBase, SortableInlineAdminMixin from roster.models import ( RollingClass, RollingClassProperty, RollingStock, RollingStockImage, RollingStockDocument, RollingStockProperty, RollingStockJournal, ) class RollingClassPropertyInline(admin.TabularInline): model = RollingClassProperty min_num = 0 extra = 0 @admin.register(RollingClass) class RollingClass(admin.ModelAdmin): inlines = (RollingClassPropertyInline,) list_display = ("__str__", "type", "company") list_filter = ("company", "type__category", "type") search_fields = ( "identifier", "company__name", "type__type", ) class RollingStockDocInline(admin.TabularInline): model = RollingStockDocument min_num = 0 extra = 0 classes = ["collapse"] class RollingStockImageInline(SortableInlineAdminMixin, admin.TabularInline): model = RollingStockImage min_num = 0 extra = 0 readonly_fields = ("image_thumbnail",) classes = ["collapse"] class RollingStockPropertyInline(admin.TabularInline): model = RollingStockProperty min_num = 0 extra = 0 class RollingStockJournalInline(admin.TabularInline): model = RollingStockJournal min_num = 0 extra = 0 classes = ["collapse"] @admin.register(RollingStockDocument) class RollingStockDocumentAdmin(admin.ModelAdmin): list_display = ( "__str__", "rolling_stock", "description", "download", ) search_fields = ( "rolling_stock__rolling_class__identifier", "rolling_stock__item_number", "description", "file", ) @admin.register(RollingStockJournal) class RollingJournalDocumentAdmin(admin.ModelAdmin): list_display = ( "__str__", "date", "rolling_stock", "private", ) list_filter = ( "date", "private", ) search_fields = ( "rolling_stock__rolling_class__identifier", "rolling_stock__road_number", "rolling_stock__item_number", "log", ) @admin.register(RollingStock) class RollingStockAdmin(SortableAdminBase, admin.ModelAdmin): inlines = ( RollingStockPropertyInline, RollingStockImageInline, RollingStockDocInline, RollingStockJournalInline, ) readonly_fields = ("creation_time", "updated_time") list_display = ( "__str__", "address", "manufacturer", "scale", "item_number", "company", "country", ) list_filter = ( "rolling_class__type__category", "rolling_class__type", "rolling_class__company__name", "scale", "manufacturer", ) search_fields = ( "rolling_class__identifier", "rolling_class__company__name", "manufacturer__name", "road_number", "address", "item_number", ) save_as = True fieldsets = ( ( None, { "fields": ( "rolling_class", "road_number", "scale", "manufacturer", "item_number", "era", "production_year", "purchase_date", "notes", "tags", ) }, ), ( "DCC", { "fields": ( "decoder_interface", "decoder", "address", ) }, ), ( "Audit", { "classes": ("collapse",), "fields": ( "creation_time", "updated_time", ), }, ), )