Clean up admin modules with mixins.
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user