brewery-website/equipment/admin.py

67 lines
1.8 KiB
Python

from django.contrib import admin
from django.utils.html import format_html
from django.apps import apps
from django import forms
from equipment.models import Equipment, KegType, State, EquipmentMaintenanceLine, EquipmentMaintenance
class AdminCreateFormMixin:
"""
Mixin to easily use a different form for the create case (in comparison to "edit") in the django admin
Logic copied from `django.contrib.auth.admin.UserAdmin`
"""
add_form = None
def get_form(self, request, obj=None, **kwargs):
defaults = {}
if obj is None:
defaults['form'] = self.add_form
defaults.update(kwargs)
return super().get_form(request, obj, **defaults)
class MainenanceLineInline(admin.TabularInline):
model = EquipmentMaintenanceLine
extra = 1
class EquipmentInline(admin.TabularInline):
model = Equipment
extra = 4
@admin.register(EquipmentMaintenance)
class MaintenanceAdmin(admin.ModelAdmin):
#list_display_links = ['equipment',]
list_display = ['created_date','equipment', 'notes',]
inlines = [
MainenanceLineInline,
]
@admin.register(Equipment)
class EquipmentAdmin(admin.ModelAdmin):
readonly_fields = ('id',)
list_display = ['id', 'equipment_type', 'keg_type', 'state']
list_editable = ['state', 'state']
@admin.register(KegType)
class KegTypeAdmin(admin.ModelAdmin):
list_display = ['name','manufacturer','size_gal',]
inlines = [
EquipmentInline,
]
# class EquipmentAdmin(admin.ModelAdmin):
# list_display = ['name','equipment_type','keg_type','state']
@admin.register(State)
class StateAdmin(admin.ModelAdmin):
list_display = ['name']
app = apps.get_app_config('equipment')
for model_name, model in app.models.items():
try:
admin.site.register(model)
except admin.exceptions.AlreadyRegistered:
pass