Files
2026-05-20 21:24:00 +02:00

90 lines
2.9 KiB
Python

from django.contrib import admin
from django.urls import reverse
from django.utils.safestring import mark_safe
from .models import Stroj, Vozilo
from operations.models import RadniNalog, PutniNalog # Importamo modele iz druge aplikacije
# --- INLINE KLASE ---
class PutniNalogInline(admin.TabularInline):
"""Prikazuje putne naloge unutar pregleda vozila."""
model = PutniNalog
extra = 0
fields = ('broj_naloga', 'datum_izdavanja', 'korisnik', 'pocetna_km', 'zavrsna_km', 'status')
readonly_fields = ('broj_naloga', 'datum_izdavanja', 'korisnik', 'pocetna_km', 'zavrsna_km', 'status')
can_delete = False
verbose_name = "Povijest putovanja"
verbose_name_plural = "Povijest putovanja za ovo vozilo"
class RadniNalogInline(admin.TabularInline):
model = RadniNalog
extra = 0
# Umjesto običnog polja 'broj_naloga', koristimo metodu 'link_na_nalog'
fields = ('link_na_nalog', 'datum_kreiranja', 'klijent', 'izvrsitelj', 'status')
readonly_fields = ('link_na_nalog', 'datum_kreiranja', 'klijent', 'izvrsitelj', 'status')
can_delete = False
def link_na_nalog(self, obj):
if obj.id:
# Generiramo URL za admin promjenu Radnog Naloga
url = reverse('admin:operations_radninalog_change', args=[obj.id])
return mark_safe(f'<a href="{url}" style="font-weight:bold;">RN-{obj.broj_naloga}</a>')
return "-"
link_na_nalog.short_description = 'Broj naloga'
# --- GLAVNE ADMIN KLASE ---
@admin.register(Vozilo)
class VoziloAdmin(admin.ModelAdmin):
list_display = ('naziv', 'registracija', 'status', 'pocetni_kilometri', 'trenutni_kilometri')
search_fields = ('naziv', 'registracija')
list_filter = ('status',)
ordering = ('naziv',)
# Dodajemo inline za putne naloge
inlines = [PutniNalogInline]
@admin.register(Stroj)
class StrojAdmin(admin.ModelAdmin):
list_display = (
'serijski_broj',
'prikaz_naziva',
'vlasnik',
'tip',
'radni_sati',
'registracija',
'datum_zadnjeg_atesta'
)
search_fields = (
'serijski_broj',
'naziv',
'marka',
'model_stroja',
'vlasnik__naziv',
'vlasnik__oib'
)
list_filter = ('tip', 'marka', 'vlasnik')
autocomplete_fields = ['vlasnik']
# Dodajemo inline za radne naloge
inlines = [RadniNalogInline]
fieldsets = (
('Osnovne informacije', {
'fields': ('vlasnik', 'naziv', 'tip', 'serijski_broj')
}),
('Detalji o modelu', {
'fields': (('marka', 'model_stroja'), 'godina_proizvodnje')
}),
('Tehnički podaci i održavanje', {
'fields': ('radni_sati', 'registracija', 'datum_zadnjeg_atesta'),
'classes': ('collapse',)
}),
)
def prikaz_naziva(self, obj):
return f"{obj.marka} {obj.model_stroja}".strip() or obj.naziv
prikaz_naziva.short_description = 'Marka i Model'