Commit | Line | Data |
---|---|---|
41b82c20 O |
1 | # -*-coding:utf-8 -*- |
2 | ||
3 | import datetime | |
4 | from django.db import models | |
5 | from django.utils import timezone | |
6 | ||
7 | ||
8 | # Create your models here. | |
9 | class Personnel(models.Model): | |
10 | """Infos générique sur le personnel du bureau""" | |
11 | ||
12 | nom = models.CharField(max_length=200,primary_key=True) | |
13 | ||
14 | def __unicode__(self): | |
15 | return self.nom | |
16 | ||
17 | ||
18 | class Equipement(models.Model): | |
19 | marque = models.CharField(max_length=200,default="HP") | |
da18c03a | 20 | modele = models.CharField(max_length=200,blank=True) |
41b82c20 O |
21 | num_serie = models.CharField("Numéro de série", |
22 | max_length=200,unique=True) | |
23 | date_acquisition = models.DateField("Date d'acquisition") | |
24 | ||
25 | ||
26 | class Imprimante(Equipement): | |
27 | """Informations sur les imprimantes du bureau""" | |
28 | ||
29 | CATEGORIE_IMPRIMANTE = ( | |
30 | ("encre","Jet d'encre"), | |
31 | ("laser","Laser"), | |
32 | ("multifonction","Multifonction"), | |
33 | ) | |
34 | ||
35 | emplacement = models.CharField(max_length=200) | |
36 | fqdn = models.CharField("Nom DNS",max_length=200) | |
37 | categorie = \ | |
38 | models.CharField(\ | |
39 | "Type d'imprimante", | |
40 | max_length=20, | |
41 | choices=CATEGORIE_IMPRIMANTE | |
42 | ) | |
43 | ||
44 | def __unicode__(self): | |
45 | return "Imprimante: %s %s (%s)" %\ | |
46 | (self.marque,self.modele,self.emplacement) | |
47 | ||
48 | ||
49 | class Consommable(Equipement): | |
50 | """Informations sur les consommables du bureau""" | |
51 | ||
52 | CATEGORIE_CONSOMMABLE = ( | |
da18c03a O |
53 | ("encre","Jet d'encre"), |
54 | ("toner","Laser"), | |
41b82c20 O |
55 | ("autre","autres types"), |
56 | ) | |
da18c03a O |
57 | |
58 | NOM_CONSOMMABLE = ( | |
59 | ("45","45"), | |
60 | ("56","56"), | |
61 | ("57","57"), | |
62 | ("78","78"), | |
63 | ("130","130"), | |
64 | ("134","134"), | |
65 | ("339","339"), | |
66 | ("344","344"), | |
67 | ("05A","05A"), | |
68 | ("501A","501A"), | |
69 | ("920XL","920XL"), | |
70 | ) | |
71 | ||
72 | NOM_COULEUR = ( | |
73 | ("noir","noir"), | |
74 | ("jaune","jaune"), | |
75 | ("cyan","cyan"), | |
76 | ("magenta","magenta"), | |
77 | ("mixte","mixte"), | |
78 | ) | |
79 | ||
80 | nom = models.CharField(max_length=20,choices=NOM_CONSOMMABLE) | |
81 | couleur = models.CharField(max_length=20,choices=NOM_COULEUR) | |
41b82c20 O |
82 | categorie = \ |
83 | models.CharField(max_length=20,choices=CATEGORIE_CONSOMMABLE) | |
84 | date_expiration = models.DateField() | |
85 | disponible = models.BooleanField(default=True) | |
86 | ||
87 | def __unicode__(self): | |
da18c03a | 88 | return "%s %s (%s)" %(self.nom,self.couleur,self.num_serie) |
41b82c20 O |
89 | |
90 | class RetraitConsommable(models.Model): | |
91 | demandeur = models.ForeignKey(Personnel) | |
92 | date_retrait = models.DateField("date du retrait",auto_now_add=True) | |
93 | code_consommable = models.OneToOneField(Consommable) | |
94 | imprimante_utilisee = models.ForeignKey(Imprimante) | |
95 | ||
96 | def __unicode__(self): | |
97 | annee_date_retrait = self.date_retrait.year | |
98 | mois_date_retrait = self.date_retrait.month | |
99 | jour_date_retrait = self.date_retrait.day | |
c16002bf | 100 | return "%s retire pour %s le %s/%s/%s" % (self.code_consommable, |
41b82c20 O |
101 | self.demandeur,jour_date_retrait,mois_date_retrait, |
102 | annee_date_retrait) | |
c16002bf O |
103 | |
104 | def save(self,*args,**kwargs): | |
105 | """ | |
106 | Lorsqu'on effectue un retrait, il faut absolument changer | |
107 | le statut du consommable afin qu'il soit vu comme | |
108 | non disponible | |
109 | """ | |
110 | c = Consommable.objects.get(pk=self.code_consommable) | |
111 | c.disponible = False | |
112 | c.save() | |
113 | super(RetraitConsommable,self).save(*args,**kwargs) |