models.py 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. from django.db import models
  2. from amministratore.models import Amministratore
  3. class Azienda(models.Model):
  4. '''
  5. questa classe definisce le società che gengono gestite dal programma.
  6. ogni utente può gestire una o più società.
  7. '''
  8. nome = models.CharField(max_length=132,null=False,default="",unique=True)
  9. partitaiva = models.CharField(max_length=11,null=False,default="",unique=True)
  10. mail = models.CharField(max_length=256,null=False,default="")
  11. comm=models.CharField(max_length=256,null=False,default="") # email usata come mittente per le comunicazioni
  12. cambiopassword = models.BooleanField(null=False,default=False)
  13. forzanuovapassword = models.BooleanField(null=False,default=False)
  14. otppassword = models.BooleanField(null=False,default=False)
  15. # cambiopassword = e' consentito il cambio password agli utenti
  16. # forzanuovapassword = obbligatorio il cambio password al primo login
  17. # otppassword = l'utente puo' accedere con otp
  18. def __str__(self):
  19. return f"{self.id}: {self.nome}"
  20. class Meta:
  21. constraints = [ models.UniqueConstraint(fields=['nome','partitaiva'], name="unique-azienda") ]
  22. indexes = [ models.Index(fields=['partitaiva','nome']) ]
  23. class Sede(models.Model):
  24. '''
  25. 'ogni azienda ha almeno una sede'.
  26. '''
  27. nome = models.CharField(max_length=132,null=False,default="")
  28. info = models.CharField(max_length=256,null=False,default="")
  29. identificativo = models.CharField(max_length=10,null=False,default="")
  30. azienda = models.ForeignKey(Azienda,on_delete=models.CASCADE)
  31. cambiopassword = models.BooleanField(null=False,default=False)
  32. forzanuovapassword = models.BooleanField(null=False,default=False)
  33. otppassword = models.BooleanField(null=False,default=False)
  34. def __str__(self):
  35. return f"{self.id}: {self.nome}"
  36. class Meta:
  37. constraints = [ models.UniqueConstraint(fields=['azienda','nome','identificativo'], name="unique-azienda-sede-identificativo"), ]
  38. indexes = [ models.Index(fields=['nome','identificativo']) ]
  39. class AssegnazioneAzienda(models.Model):
  40. '''
  41. questa tabella permette le associazioni tra società e Utente
  42. semmai, il problema è capire come associare la società all'utente registrato nella security
  43. '''
  44. azienda = models.ForeignKey(Azienda,on_delete=models.PROTECT,null=True)
  45. amministratore = models.ForeignKey(Amministratore,on_delete=models.PROTECT,null=True)
  46. sola_lettura = models.BooleanField(default=False)
  47. crea_azienda = models.BooleanField(default=True)
  48. crea_sede = models.BooleanField(default=True)
  49. crea_utente = models.BooleanField(default=True)
  50. crea_documento = models.BooleanField(default=True)
  51. crea_comunicazione = models.BooleanField(default=True)
  52. edit_azienda = models.BooleanField(default=True)
  53. edit_sede = models.BooleanField(default=True)
  54. edit_utente = models.BooleanField(default=True)
  55. edit_documento = models.BooleanField(default=True)
  56. edit_comunicazione = models.BooleanField(default=True)
  57. crea_permesso = models.BooleanField(default=False)
  58. edit_permesso = models.BooleanField(default=False)
  59. read_permesso = models.BooleanField(default=True)
  60. def __str__(self):
  61. return f"{self.id}: {self.azienda} - {self.amministratore}"
  62. class AssegnazioneSede(models.Model):
  63. sede = models.ForeignKey(Sede,on_delete=models.PROTECT,null=True)
  64. azienda = models.ForeignKey(Azienda,on_delete=models.PROTECT,null=True)
  65. amministratore = models.ForeignKey(Amministratore,on_delete=models.PROTECT,null=True)
  66. sola_lettura = models.BooleanField(default=False)
  67. crea_azienda = models.BooleanField(default=True)
  68. crea_sede = models.BooleanField(default=True)
  69. crea_utente = models.BooleanField(default=True)
  70. crea_documento = models.BooleanField(default=True)
  71. crea_comunicazione = models.BooleanField(default=True)
  72. edit_azienda = models.BooleanField(default=True)
  73. edit_sede = models.BooleanField(default=True)
  74. edit_utente = models.BooleanField(default=True)
  75. edit_documento = models.BooleanField(default=True)
  76. edit_comunicazione = models.BooleanField(default=True)
  77. crea_permesso = models.BooleanField(default=False)
  78. edit_permesso = models.BooleanField(default=False)
  79. read_permesso = models.BooleanField(default=True)
  80. def __str__(self):
  81. return f"{self.id}: {self.sede} - {self.azienda} - {self.amministratore}"