75 lines
1.8 KiB
Python
75 lines
1.8 KiB
Python
from django.contrib import admin
|
|
from django.apps import apps
|
|
|
|
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
|