46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from django.contrib import admin
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from .models import ChronographAnalysis, Shot, ShotGroup
|
|
|
|
|
|
class ShotInline(admin.TabularInline):
|
|
model = Shot
|
|
extra = 0
|
|
readonly_fields = ('shot_number',)
|
|
fields = ('shot_number', 'velocity_fps', 'notes')
|
|
|
|
|
|
class ShotGroupInline(admin.TabularInline):
|
|
model = ShotGroup
|
|
extra = 0
|
|
show_change_link = True
|
|
fields = ('label', 'distance_m', 'order', 'ammo_batch', 'notes')
|
|
raw_id_fields = ('ammo_batch',)
|
|
|
|
|
|
@admin.register(ChronographAnalysis)
|
|
class ChronographAnalysisAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'user', 'date', 'created_at')
|
|
search_fields = ('name', 'user__email', 'notes')
|
|
readonly_fields = ('created_at', 'updated_at')
|
|
raw_id_fields = ('user',)
|
|
inlines = [ShotGroupInline]
|
|
|
|
|
|
@admin.register(ShotGroup)
|
|
class ShotGroupAdmin(admin.ModelAdmin):
|
|
list_display = ('label', 'analysis', 'distance_m', 'order', 'ammo_batch')
|
|
search_fields = ('label', 'analysis__name')
|
|
raw_id_fields = ('analysis', 'ammo_batch')
|
|
inlines = [ShotInline]
|
|
|
|
|
|
@admin.register(Shot)
|
|
class ShotAdmin(admin.ModelAdmin):
|
|
list_display = ('shot_number', 'group', 'velocity_fps', 'notes')
|
|
search_fields = ('group__label', 'group__analysis__name')
|
|
readonly_fields = ('shot_number',)
|
|
raw_id_fields = ('group',)
|
|
ordering = ('group', 'shot_number')
|