cmsmanage/rentals/admin.py
Adam Goldsmith e03b9e3c70 Always show admin facet counts in most models with filters
New feature in Django 5.0

Didn't enable always on HIDEvent admin, as the table size is relatively large
2023-12-04 13:09:13 -05:00

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)