Adam Goldsmith
e03b9e3c70
New feature in Django 5.0 Didn't enable always on HIDEvent admin, as the table size is relatively large
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from django.db.models import Prefetch
|
|
from django.contrib import admin
|
|
from django import forms
|
|
|
|
from membershipworks.models import Member
|
|
from .models import LockerBank, LockerInfo, LockerUnit
|
|
|
|
|
|
class LockerInfoInline(admin.TabularInline):
|
|
model = LockerInfo
|
|
extra = 0
|
|
|
|
|
|
class LockerUnitInline(admin.TabularInline):
|
|
model = LockerUnit
|
|
extra = 0
|
|
|
|
|
|
@admin.register(LockerBank)
|
|
class LockerBankAdmin(admin.ModelAdmin):
|
|
inlines = [LockerUnitInline]
|
|
prepopulated_fields = {"slug": ("name",)}
|
|
|
|
|
|
@admin.register(LockerUnit)
|
|
class LockerUnitAdmin(admin.ModelAdmin):
|
|
inlines = [LockerInfoInline]
|
|
|
|
|
|
@admin.register(LockerInfo)
|
|
class LockerInfoAdmin(admin.ModelAdmin):
|
|
search_fields = ["renter__username", "locker_unit__bank__name"]
|
|
list_filter = ["locker_unit__bank", "locker_unit"]
|
|
show_facets = admin.ShowFacets.ALWAYS
|
|
list_display = [
|
|
"locker_unit",
|
|
"address",
|
|
"blind_code",
|
|
"bitting_code",
|
|
"renter",
|
|
"notes",
|
|
]
|
|
list_display_links = ["locker_unit", "address"]
|
|
|
|
def get_queryset(self, request):
|
|
return LockerInfo.objects.select_related(
|
|
"locker_unit", "locker_unit__bank"
|
|
).prefetch_related(
|
|
Prefetch("renter", queryset=Member.objects.only("account_name"))
|
|
)
|
|
|
|
def get_changelist_formset(self, request, **kwargs):
|
|
kwargs["widgets"] = {
|
|
"blind_code": forms.TextInput(attrs={"size": 6}),
|
|
"bitting_code": forms.TextInput(attrs={"size": 6}),
|
|
}
|
|
return super().get_changelist_formset(request, **kwargs)
|