61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
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}" |