Files
ShooterHub/apps/tools/admin.py
2026-04-02 11:24:30 +02:00

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')