1
0

models.py 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. from email.policy import default
  2. from django.db import models
  3. from django.utils import timezone
  4. from django.template.defaultfilters import slugify
  5. from gest_clin.models import Clinique as Clinique
  6. from gest_clin.models import Services as Clin_Services
  7. # SITE = [
  8. # ('GEN', 'Gentilly'),
  9. # ('CAP', 'Ambroise Paré'),
  10. # ('HPN', 'HPNL'),
  11. # ('EXT', 'Extéreieur'),
  12. # ]
  13. TYPE = [
  14. ('PC', 'PC'),
  15. ('PORTABLE', 'Portable'),
  16. ('CL', 'Client Léger'),
  17. ('PANEL-PC', 'Panel-PC'),
  18. ('IMP', 'Imprimante'),
  19. ]
  20. STATUT = [
  21. ('RAS', '-'),
  22. ('PREPROD','En préparation'),
  23. ('HS','A réparer'),
  24. ('ADEPROD','A retirer'),
  25. ('EN STOCK', 'En stock'),
  26. ('INAPTE', 'Inapte / HS'),
  27. ]
  28. SWOS = [
  29. ('CISCO', 'Cisco'),
  30. ('ARUBA', 'Aruba'),
  31. ('HP', 'HP'),
  32. ]
  33. SWTYPE = [
  34. ('F', 'Fast'),
  35. ('G', 'Giga'),
  36. ]
  37. class Accessory_Link(models.Model):
  38. Accessory_Nom = models.CharField("Nom de l\'accesoire", max_length=64, unique=True)
  39. Accessory_N_slugify = models.CharField("Nom de l\'accesoir slugifié", max_length=64, blank = True, editable = False)
  40. Accessory_icone = models.CharField("Code de l'icone", max_length = 64, blank = True)
  41. Accessory_on_list = models.BooleanField("Afficher sur le listing", default=False)
  42. def save(self, *args, **kwargs) :
  43. self.Accessory_N_slugify = slugify(self.Accessory_Nom)
  44. super(Accessory_Link, self).save(*args, **kwargs)
  45. def __str__(self):
  46. return str(self.Accessory_Nom)
  47. class Meta:
  48. verbose_name = "Accessoires lié un poste Informatique"
  49. verbose_name_plural = "Accessoires lié un poste Informatique"
  50. # Create your models here.
  51. class PIC(models.Model):
  52. PIC_NUnic = models.PositiveSmallIntegerField("Numéro uniq", unique=True, blank=True, null=True)
  53. PIC_L_Statut = models.CharField("Statut", max_length=16, choices=STATUT, default='RAS')
  54. PIC_Site = models.ForeignKey(Clinique, verbose_name="Clinique", on_delete=models.PROTECT, null=True)
  55. PIC_L_Chassi_Type = models.CharField("Type", max_length=8, choices=TYPE, default='PC')
  56. PIC_Deg = models.BooleanField("Poste avec procédure dégradé", default=False)
  57. PIC_is_for_Cadre = models.BooleanField("Poste utiliser pas des RUS ou Cadre", default=False)
  58. PIC_with_Snow = models.BooleanField("Sync avec Snow", default=False)
  59. PIC_with_Office = models.BooleanField("Office installé sur le poste", default=False)
  60. PIC_Nom_netbios = models.CharField("Nom NETBIOS", max_length=64, blank=True, null=True)
  61. PIC_Utilisateur = models.CharField("Utilisateur", max_length=64, blank=True, null=True)
  62. PIC_Utilisateur_Fq = models.CharField("Utilisateur Frequent", max_length=64, blank=True, null=True)
  63. PIC_L_Service = models.ForeignKey("Services", on_delete=models.CASCADE)
  64. PIC_Service = models.ForeignKey(Clin_Services, verbose_name="Service", on_delete=models.PROTECT, blank=True, null=True)
  65. PIC_Local = models.CharField("Localisation", max_length=64, blank=True, null=True)
  66. PIC_Adresse_IP = models.CharField("Adresse IP", max_length=24, default="DHCP" )
  67. PIC_Adresse_Mac = models.CharField("Adresse MAC", max_length=18, blank=True, null=True)
  68. PIC_OS = models.CharField("OS", max_length=64, blank=True, null=True)
  69. PIC_Marque = models.CharField("Marque", max_length=64, blank=True, null=True)
  70. PIC_Type = models.CharField("Modèle", max_length=64, blank=True, null=True)
  71. PIC_SN = models.CharField("SN", max_length=64, blank=True, null=True)
  72. PIC_Date_Achat = models.CharField("Date d'achat", max_length=64, blank=True, null=True)
  73. PIC_Fin_de_Garantie = models.CharField("Date de fin de garentie", max_length=64, blank=True, null=True)
  74. PIC_CPU = models.CharField("CPU", max_length=64, blank=True, null=True)
  75. PIC_RAM = models.PositiveSmallIntegerField("RAM", blank=True, null=True)
  76. PIC_Commentaires = models.TextField("Commentaires", blank=True, null=True)
  77. PIC_Precisions = models.TextField("Precisions", blank=True, null=True)
  78. PIC_Accessory = models.ManyToManyField(Accessory_Link, blank=True)
  79. def __str__(self):
  80. return self.PIC_Nom_netbios
  81. def save(self, *args, **kwargs):
  82. if self.PIC_Nom_netbios != None :
  83. if "GEN-" in self.PIC_Nom_netbios or "CAP-" in self.PIC_Nom_netbios or "HPN-" in self.PIC_Nom_netbios:
  84. tmp_PIC_NUnic = self.PIC_Nom_netbios[-4:]
  85. try:
  86. self.PIC_NUnic = int(tmp_PIC_NUnic)
  87. except:
  88. pass
  89. self.PIC_Nom_netbios = self.PIC_Nom_netbios.upper()
  90. if self.PIC_Adresse_IP != None :
  91. self.PIC_Adresse_IP = self.PIC_Adresse_IP.replace(',','.').replace(';','.')
  92. if self.PIC_Adresse_IP != None :
  93. self.PIC_Adresse_IP = self.PIC_Adresse_IP.replace(',','.').replace(';','.')
  94. super(PIC, self).save(*args, **kwargs)
  95. class Meta:
  96. verbose_name = "Poste client"
  97. verbose_name_plural = "Postes clients"
  98. class PIC_History(models.Model):
  99. H_PIC = models.ForeignKey("PIC", on_delete=models.CASCADE)
  100. H_Date = models.DateTimeField("Date", auto_now_add=True)
  101. H_Commentaire = models.TextField("Historique")
  102. def __str__(self):
  103. return str(self.H_PIC)
  104. class Meta:
  105. verbose_name = "Historique un poste Informatique"
  106. verbose_name_plural = "Historique lié un poste Informatique"
  107. class PIS(models.Model):
  108. PIC_NUnic = models.PositiveSmallIntegerField("Numéro uniq", unique=True, blank=True, null=True)
  109. PIS_Site = models.ForeignKey(Clinique, verbose_name="Clinique", on_delete=models.PROTECT, null=True)
  110. PIS_Nom_netbios = models.CharField("Nom NETBIOS", max_length=64, blank=True, null=True)
  111. PIS_Friendly_Name = models.CharField("Friendly Name", max_length=64, blank=True, null=True)
  112. PIS_OS = models.CharField("OS", max_length=64, blank=True, null=True)
  113. PIS_with_Snow = models.BooleanField("Sync avec Snow", default=False)
  114. PIS_with_Web = models.BooleanField("Portail web", default=False)
  115. PIS_Adresse_IP = models.CharField("Adresse IP", max_length=64, blank=True, null=True)
  116. PIS_Adresse_Mac = models.CharField("Adresse MAC", max_length=64, blank=True, null=True)
  117. PIS_Role = models.CharField("Application", max_length=64, blank=True, null=True)
  118. PIS_Type = models.CharField("Type", max_length=64, blank=True, null=True)
  119. PIS_SN = models.CharField("SN", max_length=64, blank=True, null=True)
  120. PIS_CPU = models.CharField("CPU", max_length=64, blank=True, null=True)
  121. PIS_RAM = models.PositiveSmallIntegerField("RAM", blank=True, null=True)
  122. PIS_Localisation = models.CharField("Localisation", max_length=64, blank=True, null=True)
  123. PIS_Fonctionnalite = models.TextField("Fonctionnalité", blank=True, null=True)
  124. PIS_Commentaires = models.TextField("Commentaires", blank=True, null=True)
  125. PIS_Archive = models.BooleanField("Serveur plus en Production", default=False)
  126. def __str__(self):
  127. return self.PIS_Nom_netbios
  128. def save(self, *args, **kwargs):
  129. self.PIS_Nom_netbios = self.PIS_Nom_netbios.upper()
  130. if self.PIS_Type != None :
  131. self.PIS_Type = self.PIS_Type.upper()
  132. if self.PIS_Role != None :
  133. self.PIS_Role = self.PIS_Role.upper()
  134. if self.PIS_Adresse_IP != None :
  135. self.PIS_Adresse_IP = self.PIS_Adresse_IP.replace(',','.').replace(';','.')
  136. if self.PIS_Commentaires != None :
  137. self.PIS_Commentaires = self.PIS_Commentaires.replace(',','.').replace(';','.')
  138. super(PIS, self).save(*args, **kwargs)
  139. class Meta:
  140. verbose_name = "Serveur"
  141. verbose_name_plural = "Serveurs"
  142. class Swich(models.Model):
  143. SW_Baie = models.ForeignKey("Baie", on_delete=models.CASCADE)
  144. SW_Nom = models.CharField("Nom", max_length=64)
  145. SW_IP = models.CharField("Adresse IP", max_length=64, blank=True, null=True)
  146. SW_OS = models.CharField("OS", max_length=5, choices=SWOS, default='HP')
  147. SW_TYPE = models.CharField("Type", max_length=1, choices=SWTYPE, default='G')
  148. SW_Commentaires = models.TextField("Commentaires", blank=True, null=True)
  149. SW_Update_Port = models.TextField("Last Auto update port of switch", blank=True, null=True)
  150. SW_Archive = models.BooleanField("Switch plus en production", default=False)
  151. class Meta:
  152. verbose_name = "Switch"
  153. verbose_name_plural = "Switchs"
  154. def __str__(self):
  155. return self.SW_Nom
  156. class Port_Link(models.Model):
  157. PL_Swich = models.ForeignKey("Swich", on_delete=models.CASCADE)
  158. PL_Port_NG = models.CharField("Port sur le Switch", max_length=10)
  159. PL_VLAN = models.PositiveSmallIntegerField("VLAN sur le Port")
  160. PL_Headbang_plug = models.CharField("Prise sur le bandeau", max_length=8, blank=True)
  161. PL_Commentaires = models.TextField("Commentaires", blank=True, null=True)
  162. def __str__(self):
  163. return str(self.PL_Swich)+' - '+str(self.PL_Port)
  164. class Meta:
  165. verbose_name = "Lien des prises vers les Switchs"
  166. verbose_name_plural = "Lien des prises vers les Switchs"
  167. class Services(models.Model):
  168. SERVICE_Anag = models.CharField("Anagrame du Service", max_length=2, unique=True)
  169. SERVICE_Nom = models.CharField("Nom du Service", max_length=64, unique=True)
  170. def __str__(self):
  171. return self.SERVICE_Nom
  172. class Meta:
  173. verbose_name = "Service"
  174. verbose_name_plural = "Services"
  175. class Baie(models.Model):
  176. BAIE_Site_NG = models.ForeignKey(Clinique, verbose_name="Clinique", on_delete=models.PROTECT, null=True)
  177. BAIE_Nom = models.CharField("Nom de la Baie", max_length=32, unique=True)
  178. BAIE_Local = models.CharField("Localisation", max_length=64, blank=True, null=True)
  179. BAIE_Commentaire = models.TextField("Commentaires", blank=True, null=True)
  180. def __str__(self):
  181. return self.BAIE_Nom
  182. class Meta:
  183. verbose_name = "Baie"
  184. verbose_name_plural = "Baies"