52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
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() |