add from v002
This commit is contained in:
52
001.BACKEND/kalendar/services.py
Normal file
52
001.BACKEND/kalendar/services.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
from .models import Dogadaj
|
||||
|
||||
def kreiraj_kalendarski_unos(radni_nalog):
|
||||
"""
|
||||
Kreira termin u kalendaru na temelju novog radnog naloga.
|
||||
"""
|
||||
pocetak = timezone.now()
|
||||
kraj = pocetak + timedelta(hours=2)
|
||||
|
||||
# DOHVAĆANJE VOZILA: Budući da vozilo više nije na Radnom nalogu,
|
||||
# moramo ga izvući iz povezanog Putnog naloga (ako postoji).
|
||||
vozilo_obj = None
|
||||
vozilo_str = "Nije definirano"
|
||||
|
||||
if radni_nalog.putni_nalog and radni_nalog.putni_nalog.vozilo:
|
||||
vozilo_obj = radni_nalog.putni_nalog.vozilo
|
||||
vozilo_str = str(vozilo_obj)
|
||||
|
||||
# Kreiramo Dogadaj
|
||||
dogadaj = Dogadaj.objects.create(
|
||||
naslov=f"RN: {radni_nalog.broj_naloga} | {radni_nalog.klijent.naziv}",
|
||||
opis=f"Vozilo: {vozilo_str}\nOpis kvara: {radni_nalog.opis_kvara}",
|
||||
tip='servis',
|
||||
pocetak=pocetak,
|
||||
kraj=kraj,
|
||||
klijent=radni_nalog.klijent,
|
||||
# Ovdje spremamo instancu vozila u polje modela Dogadaj
|
||||
vozilo=vozilo_obj,
|
||||
radni_nalog=radni_nalog,
|
||||
serviser_u_kalendaru=radni_nalog.izvrsitelj
|
||||
)
|
||||
|
||||
return dogadaj
|
||||
|
||||
def azuriraj_kalendarski_unos(radni_nalog):
|
||||
"""
|
||||
Sinkronizira podatke u kalendaru koristeći metodu modela.
|
||||
"""
|
||||
try:
|
||||
# Pokušaj pronaći postojeći događaj preko related_name 'kalendar_termin'
|
||||
dogadaj = radni_nalog.kalendar_termin
|
||||
dogadaj.sync_with_radni_nalog()
|
||||
except Exception:
|
||||
# Ako ne postoji (npr. nalog je stariji od uvođenja kalendara), kreiraj ga
|
||||
from .services import kreiraj_kalendarski_unos
|
||||
kreiraj_kalendarski_unos(radni_nalog)
|
||||
|
||||
def obrisi_kalendarski_unos(radni_nalog):
|
||||
if hasattr(radni_nalog, 'kalendar_termin'):
|
||||
radni_nalog.kalendar_termin.delete()
|
||||
Reference in New Issue
Block a user