models.py 8.9 KB

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