Files
django-ram/ram/roster/admin.py

167 lines
3.6 KiB
Python

from django.contrib import admin
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(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__sku",
"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__sku",
"log",
)
@admin.register(RollingStock)
class RollingStockAdmin(admin.ModelAdmin):
inlines = (
RollingStockPropertyInline,
RollingStockImageInline,
RollingStockDocInline,
RollingStockJournalInline,
)
readonly_fields = ("creation_time", "updated_time")
list_display = (
"__str__",
"address",
"manufacturer",
"scale",
"sku",
"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",
"sku",
)
fieldsets = (
(
None,
{
"fields": (
"rolling_class",
"road_number",
"scale",
"manufacturer",
"sku",
"era",
"production_year",
"purchase_date",
"notes",
"tags",
)
},
),
(
"DCC",
{
"fields": (
"decoder",
"address",
)
},
),
(
"Audit",
{
"classes": ("collapse",),
"fields": (
"creation_time",
"updated_time",
),
},
),
)