Clean up admin modules with mixins.

This commit is contained in:
Chris GIACOFEI
2024-06-05 10:07:39 -04:00
parent bcbdc5586e
commit 4c6fe9824d
5 changed files with 132 additions and 37 deletions

View File

@ -1,6 +1,7 @@
from django.contrib import admin
from django.urls import reverse
from django.utils.html import format_html
from django.apps import apps
from yeast.models import Yeast, Strain, Manufacturer, Storage, Batch
from yeast.forms import YeastModelForm
@ -26,7 +27,8 @@ class StrainInline(admin.TabularInline):
class ParentInline(admin.TabularInline):
verbose_name = 'Parent Samples'
model = Batch.parent.through
@admin.register(Yeast)
class YeastAdmin(admin.ModelAdmin):
list_display = [ 'batch', 'url', 'lot_number', 'age', 'storage', 'viability', 'generation_num', 'cellcount', 'pitched', 'date_pitched', 'pitched_batch']
list_editable = ['pitched', 'date_pitched', 'pitched_batch', 'lot_number']
@ -35,11 +37,12 @@ class YeastAdmin(admin.ModelAdmin):
if obj.pitched_batch:
bf_id = obj.pitched_batch.brewfather_id
return format_html("<a href='https://web.brewfather.app/tabs/batches/batch/{batch_id}'>{batch_id}</a>", batch_id=bf_id)
def url(self, obj):
if obj.data_web:
return format_html("<a href='{url}'>{url}</a>", url=obj.data_web)
@admin.register(Strain)
class StrainAdmin(admin.ModelAdmin):
list_display = ['name', 'long_name', 'manufacturer', 'avilable_batches']
inlines = [
@ -60,12 +63,14 @@ class StrainAdmin(admin.ModelAdmin):
avilable_batches.short_description = 'Available Batches'
@admin.register(Storage)
class StorageAdmin(admin.ModelAdmin):
list_display = ['name', 'viability_loss', 'viability_interval']
inlines = [
SampleInline,
]
@admin.register(Manufacturer)
class ManufacturerAdmin(admin.ModelAdmin):
list_display = ['name', 'url']
inlines = [
@ -76,7 +81,7 @@ class ManufacturerAdmin(admin.ModelAdmin):
if obj.website:
return format_html("<a href='{url}'>{url}</a>", url=obj.website)
@admin.register(Batch)
class BatchAdmin(admin.ModelAdmin):
list_display = ['strain', 'consumed', 'source', 'parent_samples', 'production_date', 'avilable_samples', 'used_samples']
form = YeastModelForm
@ -108,7 +113,7 @@ class BatchAdmin(admin.ModelAdmin):
return format_html(', '.join(urls))
used_samples.short_description = 'Used Samples'
def avilable_samples(self, obj):
related_objs = obj.remaining_samples
@ -121,8 +126,11 @@ class BatchAdmin(admin.ModelAdmin):
avilable_samples.short_description = 'Available Samples'
admin.site.register(Yeast, YeastAdmin)
admin.site.register(Strain, StrainAdmin)
admin.site.register(Manufacturer, ManufacturerAdmin)
admin.site.register(Storage, StorageAdmin)
admin.site.register(Batch, BatchAdmin)
app = apps.get_app_config('yeast')
for model_name, model in app.models.items():
try:
admin.site.register(model)
except admin.exceptions.AlreadyRegistered:
logger.critical(model)