prije gemini provjere
This commit is contained in:
37
001.BACKEND/users/services.py
Normal file
37
001.BACKEND/users/services.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# users/services.py
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from .models import CustomUser
|
||||
from operations.models import RadniNalog, PutniNalog
|
||||
from fleet.models import Vozilo
|
||||
|
||||
def dohvati_operativne_podatke_servisera(user_id: int) -> dict:
|
||||
"""
|
||||
Prikuplja sve povezane resurse (radne naloge, putne naloge i vozila)
|
||||
dodijeljene specifičnom serviseru.
|
||||
"""
|
||||
# 1. Dohvaćamo korisnika
|
||||
korisnik = get_object_or_404(CustomUser, id=user_id)
|
||||
|
||||
# 2. Sigurnosni ček na razini poslovne logike
|
||||
if getattr(korisnik, 'uloga', '').upper() != 'SERVISER':
|
||||
raise PermissionDenied("Odabrani korisnik nema operativne ovlasti servisera.")
|
||||
|
||||
# 3. Dohvat povezanih entiteta prateći STVARNA polja iz tvoje baze podataka:
|
||||
|
||||
# Radni nalozi gdje je korisnik postavljen kao izvršitelj
|
||||
radni_nalozi = RadniNalog.objects.filter(izvrsitelj=korisnik).select_related('klijent', 'stroj')
|
||||
|
||||
# 🚀 POPRAVAK: 'radni_nalozi__in' umjesto 'radni_nalog__in' (usklađivanje s related_name na RadniNalog modelu)
|
||||
putni_nalozi = PutniNalog.objects.filter(radni_nalozi__in=radni_nalozi).select_related('vozilo')
|
||||
|
||||
# Izvlačimo jedinstvena vozila koja serviser vozi kroz svoje aktivne putne naloge
|
||||
povezana_vozila_ids = putni_nalozi.values_list('vozilo_id', flat=True).distinct()
|
||||
povezana_vozila = Vozilo.objects.filter(id__in=povezana_vozila_ids)
|
||||
|
||||
return {
|
||||
"serviser": korisnik,
|
||||
"radni_nalozi": radni_nalozi,
|
||||
"putni_nalozi": putni_nalozi,
|
||||
"vozila": povezana_vozila
|
||||
}
|
||||
Reference in New Issue
Block a user