ne radi vite server
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from rest_framework import serializers
|
||||
from .models import CustomUser
|
||||
from fleet.models import Vozilo
|
||||
from operations.models import RadniNalog, PutniNalog
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
# Prosljeđujemo i ljudski čitljiv naziv (npr. "Knjigovodstvo i financije")
|
||||
@@ -7,4 +9,88 @@ class UserSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = CustomUser
|
||||
fields = ['id', 'first_name', 'last_name', 'email', 'telefon', 'oib', 'uloga', 'uloga_prikaz']
|
||||
fields = ['id', 'first_name', 'last_name', 'email', 'telefon', 'oib', 'uloga', 'uloga_prikaz']
|
||||
|
||||
# --- POMOĆNI LIGHTWEIGHT SERIALIZERI (Sprečavaju prevelik JSON payload) ---
|
||||
|
||||
class ServiserVoziloSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Vozilo
|
||||
# 🚀 POPRAVLJENO: Izbačena nepostojeća polja (marka, model, tip).
|
||||
# Usklađeno s tvojim stvarnim poljima iz /fleet/models.py
|
||||
fields = [
|
||||
'id',
|
||||
'naziv',
|
||||
'registracija',
|
||||
'trenutni_kilometri',
|
||||
'status'
|
||||
]
|
||||
|
||||
class ServiserRadniNalogSerializer(serializers.ModelSerializer):
|
||||
# Prikazujemo nazive umjesto ID-jeva radi lakšeg klijentskog ispisa na terminalu
|
||||
kupac_naziv = serializers.CharField(source='klijent.naziv', read_only=True)
|
||||
stroj_naziv = serializers.CharField(source='stroj.naziv', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = RadniNalog
|
||||
# 🚀 POPRAVLJENO: 'prioritet' je izbačen jer ne postoji na modelu RadniNalog.
|
||||
# Dodan je 'opis_kvara' koji ti može zatrebati na klijentskim karticama!
|
||||
fields = [
|
||||
'id',
|
||||
'broj_naloga',
|
||||
'status',
|
||||
'opis_kvara',
|
||||
'datum_kreiranja',
|
||||
'kupac_naziv',
|
||||
'stroj_naziv'
|
||||
]
|
||||
|
||||
class ServiserPutniNalogSerializer(serializers.ModelSerializer):
|
||||
vozilo_registracija = serializers.CharField(source='vozilo.registracija', read_only=True)
|
||||
|
||||
# 🚀 Budući da jedan putni nalog može imati više radnih naloga (ili nijedan ako tek kreće na put),
|
||||
# koristimo SerializerMethodField za siguran dohvat brojeva dokumenata bez rušenja
|
||||
brojevi_radnih_naloga = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = PutniNalog
|
||||
# 🚀 USKLAĐENO s tvojim točnim poljima iz modela PutniNalog:
|
||||
fields = [
|
||||
'id',
|
||||
'broj_naloga',
|
||||
'datum_izdavanja',
|
||||
'status',
|
||||
'relacija',
|
||||
'mjesto_odredista',
|
||||
'pocetna_km',
|
||||
'zavrsna_km',
|
||||
'vozilo_registracija',
|
||||
'brojevi_radnih_naloga'
|
||||
]
|
||||
|
||||
def get_brojevi_radnih_naloga(self, obj):
|
||||
# Dohvaćamo sve povezane radne naloge preko related_name='radni_nalozi'
|
||||
nalozi = obj.radni_nalozi.all()
|
||||
if nalozi.exists():
|
||||
# Vraćamo npr. "RN-2026-0001, RN-2026-0002" ako ih ima više
|
||||
return ", ".join([rn.broj_naloga for rn in nalozi if rn.broj_naloga])
|
||||
return "Nema povezanih RN"
|
||||
|
||||
|
||||
# --- GLAVNI OPERATIVNI SERIALIZER ZA TERMINAL SERVISERA ---
|
||||
|
||||
class ServiserTerminalSerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer koji objedinjuje sve podatke servisera i njegove dodijeljene resurse.
|
||||
Ne nasljeđuje ModelSerializer jer serijalizira rječnik (dict) dobiven iz service sloja.
|
||||
"""
|
||||
id = serializers.IntegerField(source='serviser.id')
|
||||
email = serializers.EmailField(source='serviser.email')
|
||||
first_name = serializers.CharField(source='serviser.first_name')
|
||||
last_name = serializers.CharField(source='serviser.last_name')
|
||||
uloga = serializers.CharField(source='serviser.uloga')
|
||||
|
||||
# 🚀 Ugniježđeni podaci koji se pune kroz asocijativni rječnik iz services.py
|
||||
radni_nalozi = ServiserRadniNalogSerializer(many=True)
|
||||
putni_nalozi = ServiserPutniNalogSerializer(many=True)
|
||||
vozila = ServiserVoziloSerializer(many=True)
|
||||
Reference in New Issue
Block a user