from django.db import models from django.conf import settings class Dogadaj(models.Model): TIP_DOGADAJA = [ ('servis', 'Radni Nalog / Servis'), ('isporuka', 'Isporuka Stroja'), ('sastanak', 'Sastanak s kupcem'), ('biljeska', 'Interna bilješka'), ] naslov = models.CharField(max_length=200) opis = models.TextField(blank=True) tip = models.CharField(max_length=20, choices=TIP_DOGADAJA, default='biljeska') pocetak = models.DateTimeField() kraj = models.DateTimeField() # Automatsko praćenje izmjena samog događaja u kalendaru datum_kreiranja = models.DateTimeField(auto_now_add=True) datum_azuriranja = models.DateTimeField(auto_now=True) # Veze klijent = models.ForeignKey('kupci.Kupac', on_delete=models.SET_NULL, null=True, blank=True) vozilo = models.ForeignKey('fleet.Vozilo', on_delete=models.SET_NULL, null=True, blank=True) radni_nalog = models.OneToOneField( 'operations.RadniNalog', on_delete=models.CASCADE, null=True, blank=True, related_name='kalendar_termin' ) # Serviser koji je dodijeljen direktno u kalendaru (za sastanke/bilješke) # Ako postoji radni_nalog, koristit ćemo izvrsitelja s naloga serviser_u_kalendaru = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True, related_name='dodatni_zadaci' ) class Meta: verbose_name = "Kalendar" verbose_name_plural = "Kalendar" ordering = ['pocetak'] @property def izvrsitelj(self): """ Pametna metoda koja vraća servisera: 1. Ako je termin vezan za Radni Nalog, uzmi njegovog izvršitelja. 2. Ako nije, uzmi servisera upisanog u kalendar. """ if self.radni_nalog: return self.radni_nalog.izvrsitelj return self.serviser_u_kalendaru def __str__(self): return f"{self.naslov} - {self.izvrsitelj}"