from django.db import models from amministratore.models import Amministratore class Azienda(models.Model): ''' questa classe definisce le società che gengono gestite dal programma. ogni utente può gestire una o più società. ''' nome = models.CharField(max_length=132,null=False,default="") partitaiva = models.CharField(max_length=11,null=False,default="") mail = models.CharField(max_length=256,null=False,default="") comm=models.CharField(max_length=256,null=False,default="") # email usata come mittente per le comunicazioni cambiopassword = models.BooleanField(null=False,default=False) forzanuovapassword = models.BooleanField(null=False,default=False) otppassword = models.BooleanField(null=False,default=False) # cambiopassword = e' consentito il cambio password agli utenti # forzanuovapassword = obbligatorio il cambio password al primo login # otppassword = l'utente puo' accedere con otp def __str__(self): return f"{self.id}: {self.nome}" class Meta: constraints = [ models.UniqueConstraint(fields=['nome','partitaiva'], name="unique-azienda") ] indexes = [ models.Index(fields=['partitaiva','nome']) ] class Sede(models.Model): ''' 'ogni azienda ha almeno una sede'. ''' nome = models.CharField(max_length=132,null=False,default="") info = models.CharField(max_length=256,null=False,default="") identificativo = models.CharField(max_length=10,null=False,default="") azienda = models.ForeignKey(Azienda,on_delete=models.PROTECT) cambiopassword = models.BooleanField(null=False,default=False) forzanuovapassword = models.BooleanField(null=False,default=False) otppassword = models.BooleanField(null=False,default=False) def __str__(self): return f"{self.id}: {self.nome}" class AssegnazioneAzienda(models.Model): ''' questa tabella permette le associazioni tra società e Utente semmai, il problema è capire come associare la società all'utente registrato nella security ''' azienda = models.ForeignKey(Azienda,on_delete=models.PROTECT,null=True) amministratore = models.ForeignKey(Amministratore,on_delete=models.PROTECT,null=True) sola_lettura = models.BooleanField(default=False) crea_azienda = models.BooleanField(default=True) crea_sede = models.BooleanField(default=True) crea_utente = models.BooleanField(default=True) crea_documento = models.BooleanField(default=True) crea_comunicazione = models.BooleanField(default=True) edit_azienda = models.BooleanField(default=True) edit_sede = models.BooleanField(default=True) edit_utente = models.BooleanField(default=True) edit_documento = models.BooleanField(default=True) edit_comunicazione = models.BooleanField(default=True) crea_permesso = models.BooleanField(default=False) edit_permesso = models.BooleanField(default=False) read_permesso = models.BooleanField(default=True) def __str__(self): return f"{self.id}: {self.azienda} - {self.amministratore}" class AssegnazioneSede(models.Model): sede = models.ForeignKey(Sede,on_delete=models.PROTECT,null=True) azienda = models.ForeignKey(Azienda,on_delete=models.PROTECT,null=True) amministratore = models.ForeignKey(Amministratore,on_delete=models.PROTECT,null=True) sola_lettura = models.BooleanField(default=False) crea_azienda = models.BooleanField(default=True) crea_sede = models.BooleanField(default=True) crea_utente = models.BooleanField(default=True) crea_documento = models.BooleanField(default=True) crea_comunicazione = models.BooleanField(default=True) edit_azienda = models.BooleanField(default=True) edit_sede = models.BooleanField(default=True) edit_utente = models.BooleanField(default=True) edit_documento = models.BooleanField(default=True) edit_comunicazione = models.BooleanField(default=True) crea_permesso = models.BooleanField(default=False) edit_permesso = models.BooleanField(default=False) read_permesso = models.BooleanField(default=True) def __str__(self): return f"{self.id}: {self.sede} - {self.azienda} - {self.amministratore}"