Rajout de la classe projet.type_phase
[OpenERP/cmmi.git] / projet.py
1 #-*- coding: utf8 -*-
2 '''
3 '''
4
5 from openerp.osv import osv, fields
6 from gtk import TRUE
7
8 class Projet(osv.Model):
9     _name = "projet.projet"
10
11     _columns = {
12         "name": fields.char(string="Title", size=64, required=True),
13         "description": fields.text(string="Description"),
14         "domaines": fields.many2many("projet.domaine",
15                                      "projet_projet_domaine_rel",
16                                      "projets",
17                                      string="Domaines"),
18         "structures": fields.many2many("projet.structure",
19                                        "projet_projet_structure_rel",
20                                        "projets",
21                                        string="Structures"),
22         "team_members": fields.many2many("projet.teammember",
23                                          "projet_projet_teammember_rel",
24                                          "projets",
25                                          string="Team Members"),
26         "modules": fields.one2many("projet.module",
27                                    "projet_id",
28                                    string="Modules"),
29         "chantiers": fields.one2many("projet.chantier",
30                                      "projet_id",
31                                      string="Chantiers"),
32         "paliers": fields.one2many("projet.palier",
33                                    "projet_id",
34                                    string="Paliers"),
35         "phases": fields.one2many("projet.phase",
36                                    "projet_id",
37                                    string="Phases"),
38         "evolutions":fields.one2many("projet.evolution",
39                                      "projet_id",
40                                      string="Evolutions"),
41         "moe_id": fields.many2one("projet.moe", string="MoE", required=True),
42         "moa_id": fields.many2one("projet.moa", string="MoA", required=True),
43     }
44
45
46 class Evolution(osv.Model):
47     _name = "projet.evolution"
48
49     _priorites = [("incontournable", "Incontournable"),
50                   ("necessaire", "Nécéssaire"),
51                   ("utile", "Utile")]
52
53     _statuts = [("cree", "Crée"), ("encours", "En cours"),
54                 ("termine", "Terminé"), ("abandonne", "Abandonné"),
55                 ("suspendu", "Suspendu")]
56
57     _columns = {
58         "pid": fields.integer(string="PID"),
59         "name": fields.char(string="Title", size=64, required=True),
60         "description": fields.text(string="Description"),
61         "objectif": fields.text(string="Objectif"),
62         "commentaire": fields.text(string="Commentaire"),
63         "keywords": fields.text(string="Mots clés"),
64         "priorite": fields.selection(_priorites, string="Priorité"),
65         "statut": fields.selection(_statuts, string="Statut"),
66         "charges": fields.one2many("projet.charge",
67                                    "evolution_id",
68                                    string="Charges"),
69         "module_id": fields.many2one("projet.module",
70                                      string="Modules"),
71         "chantier_id": fields.many2one("projet.chantier",
72                                     string="Chantier"),
73         "palier_id": fields.many2one("projet.palier",
74                                      string="Palier"),
75         "phase_id": fields.many2one("projet.phase",
76                                     string="Phase"),
77         "projet_id": fields.many2one("projet.projet",
78                                      string="Projet"),
79     }
80
81
82 class Structure(osv.Model):
83     _name = "projet.structure"
84
85     _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
86
87     _columns = {
88         "name": fields.char(string="Title", size=64, required=True),
89         "code": fields.char(string="Code", size=8, required=True),
90         "description": fields.text(string="Description"),
91         "parent_id": fields.many2one("projet.structure", string="Parent_id"),
92         "statut": fields.selection(_statuts, string="Statut"),
93         "projets": fields.many2many("projet.projet",
94                                     "projet_projet_structure_rel",
95                                     "structures",
96                                     string="Projets"),
97     }
98
99
100 class Module(osv.Model):
101     _name = "projet.module"
102
103     _columns = {
104         "name": fields.char(string="Title", size=64, required=True),
105         "description": fields.text(string="Description"),
106         "projet_id": fields.many2one("projet.projet",
107                                      string="Projet",
108                                      required=True),
109         "evolutions": fields.one2many("projet.evolution",
110                                       "module_id",
111                                       string="Evolutions")
112     }
113
114
115 class Domaine(osv.Model):
116     _name = "projet.domaine"
117
118     _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
119
120     _columns = {
121         "name": fields.char(string="Title", size=64, required=True),
122         "code": fields.char(string="Code", size=8),
123         "description": fields.text(string="Description"),
124         "ordre": fields.integer(string="Ordre"),
125         "parent_id": fields.many2one("projet.domaine", string="Parent_id"),
126         "statut": fields.selection(_statuts, string="Statut"),
127         "projets": fields.many2many("projet.projet",
128                                     "projet_projet_structure_rel",
129                                     "domaines",
130                                     string="Projets"),
131     }
132
133
134 class Teammember(osv.Model):
135     _name = "projet.teammember"
136
137     _inherit = "res.partner"
138
139     _columns = {
140         "projets": fields.many2many("projet.projet",
141                                     "projet_projet_teammember_rel",
142                                     "team_members",
143                                     string="Projets"),
144         "charges": fields.one2many("projet.projet",
145                                    "team_members",
146                                    string="Charges"),
147     }
148
149
150 class Type_Phase(osv.Model):
151     _name = "projet.type_phase"
152
153     _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
154
155     _columns = {
156         "name": fields.char(string="Title", size=64, required=True),
157         "description": fields.text(string="Description"),
158         "statut": fields.selection(_statuts, string="Statut"),
159     }
160
161
162 class Phase(osv.Model):
163     _name = "projet.phase"
164
165     _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
166
167
168     _columns = {
169         "name": fields.char(string="Title", size=64, required=True),
170         "description": fields.text(string="Description"),
171         "statut": fields.selection(_statuts, string="Statut"),
172         "projet_id": fields.many2one("projet.projet",
173                                      string="Projet",
174                                      required=True),
175         "charges": fields.one2many("projet.charge",
176                                    "phase_id",
177                                    string="Charges"),
178         "evolutions": fields.one2many("projet.evolution",
179                                       "phase_id",
180                                       string="Evolutions"),
181         "palier_id": fields.many2one("projet.palier",
182                                      string="Palier"),
183     }
184
185 #TODO trouver un nom a cette chose
186 class qqch(osv.Model):
187     _name = "projet.qqch"
188
189     _statuts = [("cree", "Crée"), ("encours", "En cours"),
190                 ("termine", "Terminé"), ("abandonne", "Abandonné"),
191                 ("suspendu", "Suspendu"), ("generique", "Générique")]
192
193     _columns = {
194         "name": fields.char(string="Title", size=64, required=True),
195         "description": fields.text(string="Description"),
196         "commentaire": fields.text(string="Commentaire"),
197         "statut": fields.selection(_statuts, string="Statut"),
198         "version": fields.char(string="Version", size=16),
199         "date_jalon": fields.date(sring="Jalon"),
200         "date_init_deb": fields.date(sring="Date initiale début"),
201         "date_init_fin": fields.date(sring="Date initiale de fin"),
202         "date_plan_deb": fields.date(string="Date plannifiée début"),
203         "date_plan_fin": fields.date(string="Date plannifiée de fin"),
204         "date_reel_deb": fields.date(string="Data réelle début"),
205         "date_reel_fin": fields.date(string="Data réelle fin"),
206     }
207
208     _sql_constraints = [
209         (
210             "date_init_deb_before_date_init_fin",
211             "CHECK(date_init_deb<> date_init_fin)",
212             "The date_init_deb should be previous date_init_fin",
213         ),
214         (
215             "date_plan_deb_before_date_plan_fin",
216             "CHECK(date_plan_deb <> date_plan_fin)",
217             "The date_plan_deb should be previous date_plan_fin",
218         ),
219         (
220             "date_reel_deb_before_date_reel_fin",
221             "CHECK(date_reel_deb<> date_reel_fin)",
222             "The date_reel_deb should be previous date_reel_fin",
223         ),
224     ]
225
226
227 class Chantier(osv.Model):
228     _name = "projet.chantier"
229
230     _inherit = "projet.qqch"
231
232     _columns = {
233         "projet_id": fields.many2one("projet.projet",
234                                      string="Projet",
235                                      required=True),
236         "evolutions": fields.one2many("projet.evolution",
237                                       "chantier_id",
238                                       string="Evolutions"),
239     }
240
241
242 class Palier(osv.Model):
243     _name = "projet.palier"
244
245     _types_palier = [("normal", "Normal"), ("exceptionnel", "Exceptionnel"), ("correctif", "Correctif"), ("autre", "Autre")]
246
247
248     _inherit = "projet.qqch"
249
250     _columns = {
251         "type_palier": fields.selection(_types_palier, string="Type"),
252         "projet_id": fields.many2one("projet.projet",
253                                      string="Projet",
254                                      required=True),
255         "evolutions": fields.one2many("projet.evolution",
256                                       "palier_id",
257                                       string="Evolutions"),
258         "phases": fields.one2many("projet.phase",
259                                   "palier_id",
260                                   string="Phases"),
261     }
262
263
264 class Charge(osv.Model):
265     _name = "projet.charge"
266
267     _columns = {
268         "name": fields.char(string="Title", size=64, required=True),
269         "description": fields.text(string="Description"),
270         "teammember_id": fields.many2one("projet.teammember",
271                                          string="Team Member",
272                                          required=True),
273         "phase_id": fields.many2one("projet.phase",
274                                     string="Phase",
275                                     required=True),
276         "evolution_id": fields.many2one("projet.evolution",
277                                     string="Evolution",
278                                     required=True),
279         "mo_id": fields.many2one("projet.mo",
280                                  string="Mo"),
281     }
282
283 class mo(osv.Model):
284     _name = "projet.mo"
285
286     _choses = [("primaire", "Primaire"),
287                ("secondaire", "Secondaire"),
288                ("generique", "Générique")]
289
290     _columns = {
291         "name": fields.char(string="Title"),
292         "description": fields.text(string="Description"),
293         "chose": fields.selection(_choses, string="Chose", required=True),
294         "charges": fields.one2many("projet.charge",
295                                    "mo_id",
296                                    string="Charges"),
297     }
298
299     _defaults = {
300         "chose": "generique"}
301
302
303 class moe(osv.Model):
304     _name = "projet.moe"
305     _inherit = "projet.mo"
306
307     _columns = {
308         "projets": fields.one2many("projet.projet",
309                                      "moe_id",
310                                      string="Projets"),
311     }
312
313
314 class moa(osv.Model):
315     _name= "projet.moa"
316     _inherit = "projet.mo"
317
318     _columns = {
319         "projets": fields.one2many("projet.projet",
320                                      "moa_id",
321                                      string="Projets"),
322     }